- JS API 列表
- 基础
- 网络
- 媒体
- 地图
- 文件
- 开放接口
- 数据缓存
- 地理位置
- 设备
- 画布
- 界面
- 页面导航
- 侧边栏能力
- 行业开放
- AI/AR能力
- 第三方平台
- TTML
- 转发和挂载
- 其它
- 直播能力
tt.getRecorderManager收藏我的收藏
收藏
我的收藏基础库 1.0.0 开始支持本方法,这是一个同步方法。
获取全局唯一的 recorderManager。通过 recorderManager 进行录音操作和管理。该 api 多次调用时返回的是同一个实例,在多页面使用时,会操作到同一个上下文对象。
前提条件 | 无 |
业务背景 | 无 |
使用限制 | 无 |
注意事项 |
|
支持沙盒 | 否 |
相关教程 | 无 |
语法
tt.getRecorderManager()
参数说明
无
返回值
类型 | 说明 | 最低支持版本 |
---|---|---|
object | 通过 tt.getRecorderManager 获取的全局唯一的录音管理器。 | 1.0.0 |
扫码体验
请使用字节宿主APP扫码
代码示例
<view class="container">
<view class="body">
<text class="text-space">剩余录音时间 {{ cd }}ms</text>
<view class="btn-area">
<button bindtap="start" tt:if="{{ !isRecording && !isPaused }}">start</button>
<button bindtap="pauseorresume" tt:if="{{ isRecording || isPaused }}">{{ isPaused ? 'resume' : 'pause' }}</button>
<button bindtap="stop" tt:if="{{ isRecording || isPaused }}">stop</button>
</view>
</view>
</view>
var DEFAULT_COUNT_DOWN = 60000;
var cdtimer;
Page({
data: {
cd: DEFAULT_COUNT_DOWN,
isRecording: false,
isPaused: false,
recordOption: {
duration: DEFAULT_COUNT_DOWN,
sampleRate: 16000,
encodeBitRate: 48000,
numberOfChannels: 2,
format: 'aac',
frameSize: 100
},
recordFilePath: ''
},
startCountDown() {
this.setData({
cd: DEFAULT_COUNT_DOWN
});
clearInterval(cdtimer);
cdtimer = setInterval(() => {
this.setData({
cd: this.data.cd - 100
});
}, 100);
},
pauseCountDown() {
clearInterval(cdtimer);
},
continueCountDown() {
clearInterval(cdtimer);
cdtimer = setInterval(() => {
this.setData({
cd: this.data.cd - 100
});
}, 100);
},
stopCountDown() {
clearInterval(cdtimer);
this.setData({
cd: DEFAULT_COUNT_DOWN
});
},
onLoad: function (options) {
this.recorderManager = tt.getRecorderManager();
this.recorderManager.onStart(() => {
this.setData({
isRecording: true,
recordFilePath: '',
isPaused: false
});
this.startCountDown();
});
this.recorderManager.onResume(() => {
this.setData({
isRecording: true,
isPaused: false
});
this.continueCountDown();
});
this.recorderManager.onPause(() => {
this.setData({
isRecording: false,
isPaused: true
});
this.pauseCountDown();
});
this.recorderManager.onStop(({
tempFilePath
}) => {
this.setData({
isRecording: false,
isPaused: false,
recordFilePath: tempFilePath
});
this.stopCountDown();
tt.showToast({
title: '录音结束'
});
});
this.recorderManager.onFrameRecorded(({
frameBuffer,
isLastFrame
}) => { });
this.recorderManager.onError(err => {
console.error(err);
});
},
onUnload: function () {
this.stop();
clearInterval(cdtimer);
},
start() {
if (this.data.isRecording) {
tt.showToast({
title: '正在录音'
});
} else {
this.recorderManager.start(this.data.recordOption);
}
},
pauseorresume() {
if (this.data.isPaused) {
this.recorderManager.resume();
} else {
this.recorderManager.pause();
}
},
stop() {
this.recorderManager.stop();
}
});
image {
width: 150rpx;
height: 150rpx;
}
.page-body-wrapper {
justify-content: space-between;
flex-grow: 1;
margin-bottom: 300rpx;
}
.page-body-time {
display: flex;
flex-direction: column;
align-items: center;
}
.time-big {
font-size: 60rpx;
margin: 20rpx;
}
.time-small {
font-size: 30rpx;
}
.page-body-buttons {
margin-top: 60rpx;
display: flex;
justify-content: space-around;
}
.page-body-button {
width: 250rpx;
text-align: center;
}
.button-stop-record {
width: 110rpx;
height: 110rpx;
border: 20rpx solid #fff;
background-color: #f55c23;
border-radius: 130rpx;
margin: 0 auto;
}
该文档是否有帮助?
点击纠错