vue使用recorder-core.js實(shí)現(xiàn)錄音功能
下載組件
npm install recorder-core
封裝方法
record.ts
//必須引入的核心 import Recorder from 'recorder-core'; //引入mp3格式支持文件;如果需要多個(gè)格式支持,把這些格式的編碼引擎js文件放到后面統(tǒng)統(tǒng)引入進(jìn)來(lái)即可 import 'recorder-core/src/engine/mp3'; import 'recorder-core/src/engine/mp3-engine'; //錄制wav格式的用這一句就行 import 'recorder-core/src/engine/wav'; import { RecordType } from './type'; const record: RecordType = { RecordApp: null, recBlob: null, /**麥克風(fēng)授權(quán) */ getPermission: (fn: Function | null) => { const newRec = Recorder({ type: 'wav', bitRate: 16, sampleRate: 16000, //阿里采樣率16000 onProcess: function (buffers, powerLevel, duration, bufferSampleRate) { console.log(buffers); }, }); //打開(kāi)錄音,獲得權(quán)限 newRec.open( () => { record.RecordApp = newRec; fn({ status: 'success', data: '開(kāi)啟成功' }); }, (msg, isUserNotAllow) => { //用戶拒絕了錄音權(quán)限,或者瀏覽器不支持錄音 fn({ status: 'fail', data: msg }); console.log((isUserNotAllow ? 'UserNotAllow,' : '') + '無(wú)法錄音:' + msg); } ); }, /**開(kāi)始錄音 */ startRecorder: () => { if (record.RecordApp && Recorder.IsOpen()) { record.RecordApp.start(); } }, /** 停止錄音 */ stopRecorder: (fn: Function | null) => { try { if (!record) { console.error('未打開(kāi)錄音'); return; } record.RecordApp.stop((blob, duration) => { console.log('錄音成功', blob, '時(shí)長(zhǎng):' + duration + 'ms'); if (blob) { record.recBlob = blob; const formData = new FormData(); formData.append('audio', blob); fn({ loading: true }); } /* eslint-enable */ record.RecordApp.close(); record.RecordApp = null; }); } catch (err) { fn({ err: err }); console.error('結(jié)束錄音出錯(cuò):' + err); record.RecordApp.close(); record.RecordApp = null; } }, /**關(guān)閉錄音,釋放麥克風(fēng)資源 */ destroyRecorder: () => { if (record.RecordApp) { record.RecordApp.close(); record.RecordApp = null; } }, /**暫停 */ pauseRecorder: () => { if (record.RecordApp) { record.RecordApp.pause(); } }, /**恢復(fù)繼續(xù)錄音 */ resumeRecorder: () => { if (record.RecordApp) { record.RecordApp.resume(); } }, }; export default record;
調(diào)用
import record from '/@/utils/record/record'; /**初始化 */ function init() { record.getPermission(function (permiss) { if (permiss.status == 'fail') { createMessage.warning(permiss.data); } else { record.startRecorder(); state.confLoading = true; } }); } /**結(jié)束錄音 */ function stopRec() { state.loading = true; state.confLoading = true; record.stopRecorder(function (res) { /**處理 */ }) }
到此這篇關(guān)于vue使用recorder-core.js實(shí)現(xiàn)錄音功能的文章就介紹到這了,更多相關(guān)vue recorder-core.js錄音內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- vue實(shí)現(xiàn)PC端錄音功能的實(shí)例代碼
- vue使用recorder.js實(shí)現(xiàn)錄音功能
- Vue實(shí)現(xiàn)懸浮框自由移動(dòng)+錄音功能的示例代碼
- vue實(shí)現(xiàn)錄音功能js-audio-recorder帶波浪圖效果的示例
- vue使用js-audio-recorder實(shí)現(xiàn)錄音功能
- vue實(shí)現(xiàn)錄音并轉(zhuǎn)文字功能包括PC端web手機(jī)端web(實(shí)現(xiàn)過(guò)程)
- Vue如何使用js-audio-recorder插件實(shí)現(xiàn)錄音功能并將文件轉(zhuǎn)成wav上傳
相關(guān)文章
vue框架制作購(gòu)物車(chē)小球動(dòng)畫(huà)效果實(shí)例代碼
最近在學(xué)習(xí)前端制作了一個(gè)購(gòu)物車(chē)小球的動(dòng)畫(huà)效果,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2019-09-09vue3圖片剪裁插件vue-img-cutter使用小結(jié)
Vue.js是一款流行的JavaScript前端框架,很受用戶喜愛(ài),這篇文章主要介紹了vue3圖片剪裁插件vue-img-cutter使用小結(jié),本文結(jié)合示例代碼講解的非常詳細(xì),感興趣的朋友一起看看吧2024-01-01vue-admin-template解決登錄和跨域問(wèn)題解決
本文主要介紹了vue-admin-template解決登錄和跨域問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05html-webpack-plugin修改頁(yè)面的title的方法
這篇文章主要介紹了html-webpack-plugin修改頁(yè)面的title的方法 ,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06Vue項(xiàng)目路由刷新的實(shí)現(xiàn)代碼
這篇文章主要介紹了Vue項(xiàng)目路由刷新的實(shí)現(xiàn)代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-04-04Vue?使用?ElementUi?el-upload?手動(dòng)上傳文件限制上傳文件類(lèi)型大小同名等進(jìn)行限制
個(gè)人在做文件上傳功能的時(shí)候,踩過(guò)不少的坑,特在此記錄下,本文介紹Vue使用?ElementUi?el-upload?手動(dòng)上傳文件限制上傳文件類(lèi)型大小同名等進(jìn)行限制問(wèn)題,感興趣的朋友一起看看吧2024-02-02vue中watch監(jiān)聽(tīng)對(duì)象中某個(gè)屬性的方法
watch 的用法有個(gè)特點(diǎn),就是當(dāng)值第一次綁定的時(shí)候,不會(huì)執(zhí)行監(jiān)聽(tīng)函數(shù),只有值發(fā)生改變才會(huì)執(zhí)行,如果我們需要在最初綁定值得時(shí)候也執(zhí)行函數(shù),就需要用到 immediate 屬性,這篇文章主要介紹了vue中watch監(jiān)聽(tīng)對(duì)象中某個(gè)屬性的方法,需要的朋友可以參考下2023-04-04vue 基于element-ui 分頁(yè)組件封裝的實(shí)例代碼
這篇文章主要介紹了vue 基于element-ui 分頁(yè)組件封裝的實(shí)例代碼,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-12-12Vue系列:通過(guò)vue-router如何傳遞參數(shù)示例
本篇文章主要介紹了Vue系列:通過(guò)vue-router如何傳遞參數(shù)示例,具有一定的參考價(jià)值,有興趣的可以了解一下。2017-01-01