codecamp

RecorderManager

全局唯一的录音管理器。


方法

RecorderManager.start(Object object)

开始录音。传入的参数为对象,属性如下:

属性类型默认值必填说明最低支持版本
durationnumber60000录音自动完成时长,单位 ms1.0.0
sampleRatenumber8000采样率,有效值可以是 8000, 16000, 441001.0.0
numberOfChannelsnumber1录音通道数,有效值可以是 1 或 21.0.0
encodeBitRatenumber48000码率1.0.0
frameSizenumber帧大小,单位 KB。如果设置了值,那么每当录音内容达到帧大小时会通过onFrameRecorded返回内容。1.0.0

sampleRate和encodeBitRate的对应关系如下:

采样率编码码率
800016000 ~ 48000
1102516000 ~ 48000
1200024000 ~ 64000
1600024000 ~ 96000
2205032000 ~ 128000
2400032000 ~ 128000
3200048000 ~ 192000
4410064000 ~ 320000
4800064000 ~ 320000

RecorderManager.pause()

暂停录音。

RecorderManager.resume()

继续录音。

RecorderManager.stop()

停止录音。

RecorderManager.onStart(function callback)

录音开始事件回调。

RecorderManager.onPause(function callback)

录音暂停事件回调。

RecorderManager.onResume(function callback)

录音继续事件的回调。

RecorderManager.onStop(function callback)

录音停止事件回调。回调函数的参数为 Object,属性如下:

属性类型说明最低支持版本
tempFilePathstring录音文件的地址1.0.0

RecorderManager.onFrameRecorded(function callback)

监听已录制完指定帧大小的文件事件。如果设置了 frameSize,则会回调此事件。

回调函数的参数为 Object,属性如下:

属性类型说明最低支持版本
frameBufferArrayBuffer录音分片数据1.0.0
isLastFrameboolean当前帧是否正常录音结束前的最后一帧1.0.0

RecorderManager.onError(function callback)

录音错误事件回调。回调函数的参数为 Object,属性如下:

属性类型说明最低支持版本
errMsgstring错误信息1.0.0


代码示例

const recorderManager = tt.getRecorderManager();

recorderManager.onStart(() => {
  console.log("recorder start");
});

recorderManager.onPause(() => {
  console.log("recorder pause");
});

recorderManager.onStop(res => {
  console.log("recorder stop", res);
  const { tempFilePath } = res;
});

const options = {
  duration: 10000,
  sampleRate: 44100,
  numberOfChannels: 1,
  encodeBitRate: 192000,
  format: "aac",
  frameSize: 50
};

recorderManager.start(options);


Bug & Tip

  • Tip:start方法暂不支持format和audioSource参数。
  • Tip:目前 iOS 输出格式为 m4a,安卓输出格式为 wav。后续安卓端也会输出 m4a。
tt.getRecorderManager
tt.createInnerAudioContext
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

字节跳动小程序 介绍

字节跳动小程序 开发

字节跳动小程序开发框架

字节跳动小程序开发框架基础说明

字节跳动小程序开发框架基础功能

字节跳动小程序开发框架逻辑层

无标题文章

无标题目录

API

无标题文章

无标题文章

无标题文章

无标题文章

无标题文章

无标题目录

无标题目录

无标题文章

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }