开发
API

RecorderManager.start

开始录音。该方法需要用户授权方可调用,详细信息可参考用户授权

语法

RecorderManager.start([options]);

参数说明

options 为 object 类型,属性如下:

属性名类型默认值必填说明最低支持版本
durationnumber60000录音自动完成时长,单位 ms1.0.0
sampleRatenumber8000采样率,详见options.sampleRate 的合法值1.0.0
numberOfChannelsnumber2录音通道数,详见options.numberOfChannels 的合法值1.0.0
encodeBitRatenumber48000码率1.0.0
frameSizenumber8000帧大小,单位 KB。如果设置了值,那么每当录音内容达到帧大小时会通过 onFrameRecorded 返回内容1.0.0
formatstringacc录音格式。目前支持 pcm、wav、aac。2.26.0

options.sampleRate 的合法值

说明
80008000 采样率
1102511025 采样率
1200012000 采样率
1600016000 采样率
2205022050 采样率
2400024000 采样率
3200032000 采样率
4410044100 采样率
4800048000 采样率

options.numberOfChannels 的合法值

说明
11 个通道
22 个通道

sampleRateencodeBitRate 的对应关系

每种采样率有对应的编码码率范围有效值,设置不合法的采样率或编码码率会导致录音失败,具体对应关系如下表:

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

代码示例

【代码示例 1】:无参数示例

预期表现:正常启动录音,录音时长等参数为默认值,请参考参数说明

<!-- index.ttml -->
<button type="primary" bindtap="startRecord">startRecord(无参数)</button>
// index.js
Page({
  startRecord() {
    const recorderManager = tt.getRecorderManager();
    recorderManager.start(); // 所有参数为默认值
    tt.showToast({ title: "点击了开始录音,参数为默认值" });
  },
});

【代码示例 2】:不设置 frameSize 参数示例

预期表现:正常启动录音,无 onFrameRecorded 回调。

<!-- index.ttml -->
<button type="primary" bindtap="startRecord">startRecord</button>
// index.js
Page({
  startRecord() {
    const recorderManager = tt.getRecorderManager();
    const options = {
      duration: 1000,
      sampleRate: 12000,
      numberOfChannels: 1,
      encodeBitRate: 25000,
      frameSize: 100,
    };
    recorderManager.start(options);
    tt.showToast({ title: "点击了开始录音" });
  },
});

【代码示例 3】:设置 frameSize 示例

预期表现:正常启动录音,达到指定帧大小后在 onFrameRecorded 回调中输出帧数据,若指定帧大小大于整条语音,则在最后一帧输出,可根据 isLastFrame 判断是否是最后一帧。

<!-- index.ttml -->
<button type="primary" bindtap="startRecord">startRecord</button>
<view tt:if="{{frameNum > 0}}">当前接收到的帧数:{{frameNum}}</view>
// index.js
Page({
  data: {
    frameNum: 0,
  },
  startRecord() {
    const recorderManager = tt.getRecorderManager();
    const options = {
      duration: 60000,
      sampleRate: 12000,
      numberOfChannels: 1,
      encodeBitRate: 25000,
      frameSize: 100,
    };
    recorderManager.start(options);
    tt.showToast({ title: "点击了开始录音" });
    recorderManager.onFrameRecorded((frame) => {
      let { isLastFrame } = frame;
      this.setData({
        frameNum: this.data.frameNum + 1,
      });
      isLastFrame && tt.showToast({ title: "录音结束" });
    });
  },
});

Bug & Tip

暂无

点击纠错
评价此篇文档