錄音在很多應用場景中都有重要的作用,比如說語音識別、語音留言、電話會議等。而在使用Vue制作前端應用時,加入錄音功能也變得非常重要。本文將會詳細介紹如何通過Vue實現錄音功能。
首先,需要安裝一個開源的錄音庫:Recorder.js。在項目中安裝Recorder.js可以通過以下命令進行:
npm install recorder-js
在Vue項目中,可以使用組件的形式來實現錄音功能。在組件中,需要導入Recorder.js。具體步驟如下:
<template> <div> <button @click="start">開始錄音</button> <button @click="stop">停止錄音</button> </div> </template> <script> import Recorder from 'recorder-js' export default { data() { return { recorder: null, audioBuffer: null, audioContext: null } }, methods: { async start() { this.recorder = new Recorder(this.audioContext, { numChannels: 1 }) await this.recorder.init() this.recorder.start() }, stop() { this.recorder.stop() this.recorder.exportWAV(blob =>{ this.audioBuffer = blob }) } }, async mounted() { this.audioContext = new (window.AudioContext || window.webkitAudioContext)() } } </script>
在這個組件中,有start()方法和stop()方法,分別對應開始錄音和停止錄音。在start()方法中,創建Recorder實例時需要傳入一個audioContext參數。這個參數表示音頻上下文,是一個HTML5 Web Audio API對象。需要在mounted()鉤子函數中,用對應的瀏覽器API創建這個對象。在async/await函數中使用this.recorder.init()方法初始化Recorder,并在this.recorder.start()方法中開始錄音。stop()方法中停止錄音,并使用exportWAV()方法導出錄音內容。
由于導出的錄音內容是blob類型的,無法直接進行播放。如果需要播放錄音內容,首先需要將blob文件轉換成音頻。可以使用URL.createObjectURL()方法將blob文件轉換成URL,然后將URL傳給audio標簽的src屬性:
<audio :src="src"></audio> <script> export default { computed: { src() { if (this.audioBuffer) { return URL.createObjectURL(this.audioBuffer) } return null } } } </script>
在這個組件中,通過computed屬性將src屬性返回給audio標簽,對應的音頻將可以被播放。至此,通過Vue實現錄音功能的基本操作已經完成。