wx.getRecorderManager小程序錄音管理
2017-12-08
導(dǎo)讀:基礎(chǔ)庫 1.6.0 開始支持,低版本需做 兼容處理 獲取 全局唯一 的錄音管理器 recorderManager 。 recorderManager recorderManager 對(duì)象的方法列表: 方法 參數(shù) 說明 start options 開始錄音 pause 暫停錄音...
基礎(chǔ)庫 1.6.0 開始支持,低版本需做兼容處理
獲取全局唯一的錄音管理器 recorderManager
。
recorderManager
recorderManager 對(duì)象的方法列表:
方法 | 參數(shù) | 說明 |
---|---|---|
start | options | 開始錄音 |
pause | 暫停錄音 | |
resume | 繼續(xù)錄音 | |
stop | 停止錄音 | |
onStart | callback | 錄音開始事件 |
onPause | callback | 錄音暫停事件 |
onStop | callback | 錄音停止事件,會(huì)回調(diào)文件地址 |
onFrameRecorded | callback | 已錄制完指定幀大小的文件,會(huì)回調(diào)錄音分片結(jié)果數(shù)據(jù)。如果設(shè)置了 frameSize ,則會(huì)回調(diào)此事件 |
onError | callback | 錄音錯(cuò)誤事件, 會(huì)回調(diào)錯(cuò)誤信息 |
start(options) 說明:
屬性 | 類型 | 必填 | 說明 |
---|---|---|---|
duration | Number | 否 | 指定錄音的時(shí)長,單位 ms ,如果傳入了合法的 duration ,在到達(dá)指定的 duration 后會(huì)自動(dòng)停止錄音,最大值 600000(10 分鐘),默認(rèn)值 60000(1 分鐘) |
sampleRate | Number | 否 | 采樣率,有效值 8000/16000/44100 |
numberOfChannels | Number | 否 | 錄音通道數(shù),有效值 1/2 |
encodeBitRate | Number | 否 | 編碼碼率,有效值見下表格 |
format | String | 否 | 音頻格式,有效值 aac/mp3 |
frameSize | Number | 否 | 指定幀大小,單位 KB。傳入 frameSize 后,每錄制指定幀大小的內(nèi)容后,會(huì)回調(diào)錄制的文件內(nèi)容,不指定則不會(huì)回調(diào)。暫僅支持 mp3 格式。 |
其中,采樣率和碼率有一定要求,具體有效值如下:
采樣率 | 編碼碼率 |
---|---|
8000 | 16000 ~ 48000 |
11025 | 16000 ~ 48000 |
12000 | 24000 ~ 64000 |
16000 | 24000 ~ 96000 |
22050 | 32000 ~ 128000 |
24000 | 32000 ~ 128000 |
32000 | 48000 ~ 192000 |
44100 | 64000 ~ 320000 |
48000 | 64000 ~ 320000 |
onStop(callback) 回調(diào)結(jié)果說明:
屬性 | 類型 | 說明 |
---|---|---|
tempFilePath | String | 錄音文件的臨時(shí)路徑 |
onFrameRecorded(callback) 回調(diào)結(jié)果說明:
屬性 | 類型 | 說明 |
---|---|---|
frameBuffer | ArrayBuffer | 錄音分片結(jié)果數(shù)據(jù) |
isLastFrame | Boolean | 當(dāng)前幀是否正常錄音結(jié)束前的最后一幀 |
onError(callback) 回調(diào)結(jié)果說明:
屬性 | 類型 | 說明 |
---|---|---|
errMsg | String | 錯(cuò)誤信息 |
示例代碼:
const recorderManager = wx.getRecorderManager()
recorderManager.onStart(() => {
console.log('recorder start')
})
recorderManager.onResume(() => {
console.log('recorder resume')
})
recorderManager.onPause(() => {
console.log('recorder pause')
})
recorderManager.onStop((res) => {
console.log('recorder stop', res)
const { tempFilePath } = res
})
recorderManager.onFrameRecorded((res) => {
const { frameBuffer } = res
console.log('frameBuffer.byteLength', frameBuffer.byteLength)
})
const options = {
duration: 10000,
sampleRate: 44100,
numberOfChannels: 1,
encodeBitRate: 192000,
format: 'aac',
frameSize: 50
}
recorderManager.start(options)
第二部分:如何開通一個(gè)小商店