最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue+node實(shí)現(xiàn)音頻錄制播放功能

 更新時(shí)間:2021年03月24日 14:24:42   作者:Jeslie-He  
這篇文章主要介紹了Vue+node實(shí)現(xiàn)音頻錄制播放,功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

實(shí)現(xiàn)效果:

在這里插入圖片描述

主要實(shí)現(xiàn)代碼邏輯部分,具體頁面結(jié)構(gòu)就不一一介紹了。

vue部分:
安裝recorderx

cnpm install recorderx --save 

或者

npm install recorderx --save

在具體的組件中引入

<script>
	import axios from "axios";
	import {
		Toast
	} from "vant";
	import Recorderx, {
		ENCODE_TYPE
	} from "recorderx";
	const rc = new Recorderx();
	
	export default {
	   data(){
	     return{
	       startime:null,
	       endtime :null
	     }
	   },
	    methods:{
	    	//錄制語音
			recordingVoice() {
				// that.news_img = !that.news_img
				rc.start()
					.then(() => {
						this.startime = new Date();
					})
					.catch(error => {
						alert("獲取麥克風(fēng)失敗");
					});
			  },
			  //發(fā)送語音
			async sendVoice() {
				
				rc.pause();
				this.endtime = new Date();
				let wav = rc.getRecord({
					encodeTo: ENCODE_TYPE.WAV,
					compressible: true
				});
				let voiceTime = Math.ceil((this.endtime - this.startime) / 1000);
				const formData = new FormData();

				formData.append("chatVoice", wav, Date.parse(new Date()) + ".wav");
				formData.append("voiceTime", voiceTime);
				let headers = {
					headers: {
						"Content-Type": "multipart/form-data"
					}
				};
					axios
						.post("/api/uploadChatVoice", formData, headers)
						.then(res => {
							//console.log(res)
							if (res.data.status === 2) {
					
								rc.clear();
								let chatVoiceMsg = res.data.chatVoiceMsg;
							}
							}
						});
				
			},
			//播放語音
				playChatVoice(audio) {
				let audioUrl = audio;
				if(audioUrl){
					
					let audioExample = new Audio();
					audioExample.src = audioUrl; //想要播放的音頻地址
					audioExample.play();
				}else{
					Toast('語音地址已被摧毀');
				}
				
			},
	    }
	};
</script>

node部分:
這里我使用的是express框架搭建的后臺
具體的獲取前臺的請求代碼如下
安裝multiparty

cnpm install multiparty --save
const express = require('express');
const router = express.Router();
const multiparty = require('multiparty');
const NET_URL = 'http://127.0.0.1:3000/';
router.post('/uploadChatVoice', (req, res, next) => {

  let form = new multiparty.Form();

  form.uploadDir = 'chatVoiceUpload';
  form.parse(req, (err, fields, files) => {
    console.log(files, fields)
    let chatVoiceUrl = NET_URL + files.chatVoice[0].path.replace(/\\/g, "/");
    let chatVoiceTime = fields.voiceTime[0]
    console.log(chatVoiceUrl)
    if (chatVoiceUrl) {
      res.json({
        status: 2,
        chatVoiceMsg: {
          chatVoiceTime,
          chatVoiceUrl,
        }
      })
    } else {
      res.json({
        status: 1,
        chatVoiceMsg: {
          chatVoiceTime: "",
          chatVoiceUrl: ""
        }
      })
    }
    //console.log(files)

  })
})

在app.js中,定義語音文件路徑

app.use('/chatVoiceUpload', express.static('chatVoiceUpload'));

 

在這里插入圖片描述

到此這篇關(guān)于Vue+node實(shí)現(xiàn)音頻錄制播放功能的文章就介紹到這了,更多相關(guān)Vue 實(shí)現(xiàn)音頻錄制播放內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue中使用swiper5方式

    vue中使用swiper5方式

    這篇文章主要介紹了vue中使用swiper5方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • vue如何實(shí)現(xiàn)點(diǎn)擊選中取消切換

    vue如何實(shí)現(xiàn)點(diǎn)擊選中取消切換

    這篇文章主要介紹了vue實(shí)現(xiàn)點(diǎn)擊選中取消切換,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • vue中vxe-table虛擬滾動列表的使用詳解

    vue中vxe-table虛擬滾動列表的使用詳解

    vxe-table 是一個(gè)功能強(qiáng)大的 Vue 表格組件,它支持虛擬滾動列表作為其核心功能之一,本文主要介紹一下vxe-table的虛擬滾動列表功能的使用場景和優(yōu)勢,感興趣的可以了解下
    2023-12-12
  • 從vue源碼解析Vue.set()和this.$set()

    從vue源碼解析Vue.set()和this.$set()

    這篇文章主要介紹了從vue源碼看Vue.set()和this.$set()的相關(guān)知識,我們先來從Vue提供的Vue.set()和this.$set()這兩個(gè)api看看它內(nèi)部是怎么實(shí)現(xiàn)的。感興趣的朋友跟隨小編一起看看吧
    2018-08-08
  • vue3使用Pinia修改state的三種方法(直接修改,$patch,actions)

    vue3使用Pinia修改state的三種方法(直接修改,$patch,actions)

    Vue3?Pinia是一個(gè)狀態(tài)管理庫,專門為Vue3設(shè)計(jì)優(yōu)化,它提供了一種簡單而強(qiáng)大的方式來管理應(yīng)用程序的狀態(tài),并且與Vue3的響應(yīng)式系統(tǒng)緊密集成,本文給大家介紹了vue3使用Pinia修改state的三種方法,需要的朋友可以參考下
    2024-03-03
  • vue中循環(huán)多個(gè)li(表格)并獲取對應(yīng)的ref的操作代碼

    vue中循環(huán)多個(gè)li(表格)并獲取對應(yīng)的ref的操作代碼

    我想要獲取每一個(gè)循環(huán)并獲取每一個(gè)li(或者其它循環(huán)項(xiàng))的ref,以便于后續(xù)的操作,接下來通過本文給大家分享vue中循環(huán)多個(gè)li(表格)并獲取對應(yīng)的ref的操作代碼,感興趣的朋友跟隨小編一起看看吧
    2024-02-02
  • element?tab標(biāo)簽管理路由頁面的項(xiàng)目實(shí)踐

    element?tab標(biāo)簽管理路由頁面的項(xiàng)目實(shí)踐

    本文主要介紹了element?tab標(biāo)簽管理路由頁面的項(xiàng)目實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • vue表單綁定實(shí)現(xiàn)多選框和下拉列表的實(shí)例

    vue表單綁定實(shí)現(xiàn)多選框和下拉列表的實(shí)例

    本篇文章主要介紹了vue表單綁定實(shí)現(xiàn)多選框和下拉列表的實(shí)例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-08-08
  • vue transition組件及常用屬性

    vue transition組件及常用屬性

    在使用Vue過渡動畫時(shí),注意選擇器優(yōu)先級,謹(jǐn)慎合并樣式,Vue2中關(guān)于顯示隱藏的類名有v-enter、v-leave以及v-enter-active、v-leave-active等,這些可以用來定義動畫的持續(xù)時(shí)間和樣式,感興趣的朋友跟隨小編一起看看吧
    2024-09-09
  • vue頁面使用阿里oss上傳功能的實(shí)例(一)

    vue頁面使用阿里oss上傳功能的實(shí)例(一)

    本篇文章主要介紹了vue頁面使用阿里oss上傳功能的實(shí)例(一),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-08-08

最新評論

延津县| 台湾省| 峨边| 吴川市| 南靖县| 九台市| 张北县| 霞浦县| 梧州市| 琼中| 古蔺县| 青神县| 青龙| 策勒县| 大洼县| 海丰县| 赤峰市| 昭苏县| 岳西县| 淮阳县| 万盛区| 北流市| 海淀区| 仙居县| 利辛县| 阳城县| 新绛县| 乡城县| 鄂托克前旗| 灵丘县| 繁昌县| 新民市| 临城县| 聂拉木县| 武隆县| 桃江县| 浦城县| 扬州市| 屯留县| 开平市| 德令哈市|