vue使用recorder-core.js實現(xiàn)錄音功能
更新時間:2023年07月28日 10:23:48 作者:開心市民小李???
這篇文章主要介紹了vue如何使用recorder-core.js實現(xiàn)錄音功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
下載組件
npm install recorder-core
封裝方法
record.ts
//必須引入的核心
import Recorder from 'recorder-core';
//引入mp3格式支持文件;如果需要多個格式支持,把這些格式的編碼引擎js文件放到后面統(tǒng)統(tǒng)引入進來即可
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,
/**麥克風授權 */
getPermission: (fn: Function | null) => {
const newRec = Recorder({
type: 'wav',
bitRate: 16,
sampleRate: 16000, //阿里采樣率16000
onProcess: function (buffers, powerLevel, duration, bufferSampleRate) {
console.log(buffers);
},
});
//打開錄音,獲得權限
newRec.open(
() => {
record.RecordApp = newRec;
fn({ status: 'success', data: '開啟成功' });
},
(msg, isUserNotAllow) => {
//用戶拒絕了錄音權限,或者瀏覽器不支持錄音
fn({ status: 'fail', data: msg });
console.log((isUserNotAllow ? 'UserNotAllow,' : '') + '無法錄音:' + msg);
}
);
},
/**開始錄音 */
startRecorder: () => {
if (record.RecordApp && Recorder.IsOpen()) {
record.RecordApp.start();
}
},
/** 停止錄音 */
stopRecorder: (fn: Function | null) => {
try {
if (!record) {
console.error('未打開錄音');
return;
}
record.RecordApp.stop((blob, duration) => {
console.log('錄音成功', blob, '時長:' + 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('結束錄音出錯:' + err);
record.RecordApp.close();
record.RecordApp = null;
}
},
/**關閉錄音,釋放麥克風資源 */
destroyRecorder: () => {
if (record.RecordApp) {
record.RecordApp.close();
record.RecordApp = null;
}
},
/**暫停 */
pauseRecorder: () => {
if (record.RecordApp) {
record.RecordApp.pause();
}
},
/**恢復繼續(xù)錄音 */
resumeRecorder: () => {
if (record.RecordApp) {
record.RecordApp.resume();
}
},
};
export default record;調用
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;
}
});
}
/**結束錄音 */
function stopRec() {
state.loading = true;
state.confLoading = true;
record.stopRecorder(function (res) {
/**處理 */
})
}到此這篇關于vue使用recorder-core.js實現(xiàn)錄音功能的文章就介紹到這了,更多相關vue recorder-core.js錄音內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
vue使用better-scroll實現(xiàn)滑動以及左右聯(lián)動
這篇文章主要介紹了vue使用better-scroll實現(xiàn)滑動以及左右聯(lián)動,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-06-06
vue封裝全局彈窗警告組件this.$message.success問題
這篇文章主要介紹了vue封裝全局彈窗警告組件this.$message.success問題,具有很的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-09-09

