微信小程序API 錄音·錄音管理器

2022-05-11 16:33 更新

RecorderManager

全局唯一的錄音管理器


方法:

RecorderManager.onError(function callback)

監(jiān)聽錄音錯(cuò)誤事件

參數(shù)

function callback

錄音錯(cuò)誤事件的回調(diào)函數(shù)

參數(shù)

Object res
屬性 類型 說明
errMsg string 錯(cuò)誤信息


RecorderManager.onFrameRecorded(function callback)

監(jiān)聽已錄制完指定幀大小的文件事件。如果設(shè)置了 frameSize,則會(huì)回調(diào)此事件。

參數(shù)

function callback

已錄制完指定幀大小的文件事件的兼容處理

參數(shù)

Object res
屬性 類型 說明
frameBuffer ArrayBuffer 錄音分片數(shù)據(jù)
isLastFrame boolean 當(dāng)前幀是否正常錄音結(jié)束前的最后一幀


RecorderManager.onInterruptionBegin(function callback)

基礎(chǔ)庫 2.3.0 開始支持,低版本需做兼容處理。

監(jiān)聽錄音因?yàn)槭艿较到y(tǒng)占用而被中斷開始事件。以下場(chǎng)景會(huì)觸發(fā)此事件:微信語音聊天、微信視頻聊天。此事件觸發(fā)后,錄音會(huì)被暫停。pause 事件在此事件后觸發(fā)

參數(shù)

function callback

錄音因?yàn)槭艿较到y(tǒng)占用而被中斷開始事件的回調(diào)函數(shù)


RecorderManager.onInterruptionEnd(function callback)

基礎(chǔ)庫 2.3.0 開始支持,低版本需做兼容處理。

監(jiān)聽錄音中斷結(jié)束事件。在收到 interruptionBegin 事件之后,小程序內(nèi)所有錄音會(huì)暫停,收到此事件之后才可再次錄音成功。

參數(shù)

function callback

錄音中斷結(jié)束事件的回調(diào)函數(shù)


RecorderManager.onPause(function callback)

監(jiān)聽錄音暫停事件

參數(shù)

function callback

錄音暫停事件的回調(diào)函數(shù)


RecorderManager.onResume(function callback)

監(jiān)聽錄音繼續(xù)事件

參數(shù)

function callback

錄音繼續(xù)事件的回調(diào)函數(shù)


RecorderManager.onStart(function callback)

監(jiān)聽錄音開始事件

參數(shù)

function callback

錄音開始事件的回調(diào)函數(shù)


RecorderManager.onStop(function callback)

監(jiān)聽錄音結(jié)束事件

參數(shù)

function callback

錄音結(jié)束事件的回調(diào)函數(shù)

參數(shù)

Object res
屬性 類型 說明
tempFilePath string 錄音文件的臨時(shí)路徑 (本地路徑)
duration number 錄音總時(shí)長,單位:ms
fileSize number 錄音文件大小,單位:Byte


RecorderManager.pause()

暫停錄音


RecorderManager.resume()

繼續(xù)錄音


RecorderManager.start(Object object)

開始錄音

參數(shù)

Object object

屬性 類型 默認(rèn)值 必填 說明 最低版本
duration number 60000 錄音的時(shí)長,單位 ms,最大值 600000(10 分鐘)
sampleRate number 8000 采樣率
numberOfChannels number 2 錄音通道數(shù)
encodeBitRate number 48000 編碼碼率,有效值見下表格
format string aac 音頻格式
frameSize number 指定幀大小,單位 KB。傳入 frameSize 后,每錄制指定幀大小的內(nèi)容后,會(huì)回調(diào)錄制的文件內(nèi)容,不指定則不會(huì)回調(diào)。暫僅支持 mp3 格式。
audioSource string auto 指定錄音的音頻輸入源,可通過 wx.getAvailableAudioSources() 獲取當(dāng)前可用的音頻源 2.1.0

object.sampleRate 的合法值

說明 最低版本
8000 8000 采樣率
11025 11025 采樣率
12000 12000 采樣率
16000 16000 采樣率
22050 22050 采樣率
24000 24000 采樣率
32000 32000 采樣率
44100 44100 采樣率
48000 48000 采樣率

object.numberOfChannels 的合法值

說明 最低版本
1 1 個(gè)通道
2 2 個(gè)通道

object.format 的合法值

說明 最低版本
mp3 mp3 格式
aac aac 格式
wav wav 格式
PCM pcm 格式

object.audioSource 的合法值

說明 最低版本
auto 自動(dòng)設(shè)置,默認(rèn)使用手機(jī)麥克風(fēng),插上耳麥后自動(dòng)切換使用耳機(jī)麥克風(fēng),所有平臺(tái)適用
buildInMic 手機(jī)麥克風(fēng),僅限 iOS
headsetMic 耳機(jī)麥克風(fēng),僅限 iOS
mic 麥克風(fēng)(沒插耳麥時(shí)是手機(jī)麥克風(fēng),插耳麥時(shí)是耳機(jī)麥克風(fēng)),僅限 Android
camcorder 同 mic,適用于錄制音視頻內(nèi)容,僅限 Android
voice_communication 同 mic,適用于實(shí)時(shí)溝通,僅限 Android
voice_recognition 同 mic,適用于語音識(shí)別,僅限 Android

采樣率與編碼碼率限制

每種采樣率有對(duì)應(yīng)的編碼碼率范圍有效值,設(shè)置不合法的采樣率或編碼碼率會(huì)導(dǎo)致錄音失敗,具體對(duì)應(yīng)關(guān)系如下表。

采樣率 編碼碼率
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


RecorderManager.stop()

停止錄音



示例代碼

const recorderManager = wx.getRecorderManager()

recorderManager.onStart(() => {
  console.log('recorder start')
})
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)


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)