提交 bb1fe1d2 编写于 作者: Anne_LXM's avatar Anne_LXM

更新uni.getRecorderManager平台差异

上级 7a59aa64
### uni.getRecorderManager() ### uni.getRecorderManager()
获取**全局唯一**的录音管理器 ``recorderManager`` 获取**全局唯一**的录音管理器 ``recorderManager``
**平台差异说明** **平台差异说明**
|App|H5|微信小程序|支付宝小程序|百度小程序|字节跳动小程序、飞书小程序|QQ小程序|快手小程序|京东小程序| |App|H5|微信小程序|支付宝小程序|百度小程序|字节跳动小程序、飞书小程序|QQ小程序|快手小程序|京东小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:| |:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|√|x|√|x|√|√|√|x|√| |√|x|√|x|√|√|√|x|√|
**recorderManager 对象的方法列表** **recorderManager 对象的方法列表**
|方法|参数|说明|平台差异说明| |方法|参数|说明|平台差异说明|
|:-|:-|:-|:-| |:-|:-|:-|:-|
|start|options|开始录音|| |start|options|开始录音||
|pause||暂停录音|App 暂不支持| |pause||暂停录音|App 暂不支持|
|resume||继续录音|App 暂不支持| |resume||继续录音|App 暂不支持|
|stop||停止录音|| |stop||停止录音||
|onStart|callback|录音开始事件|| |onStart|callback|录音开始事件||
|onPause|callback|录音暂停事件|| |onPause|callback|录音暂停事件||
|onStop|callback|录音停止事件,会回调文件地址|| |onStop|callback|录音停止事件,会回调文件地址||
|onFrameRecorded|callback|已录制完指定帧大小的文件,会回调录音分片结果数据。如果设置了 frameSize ,则会回调此事件|App 暂不支持| |onResume|callback|监听录音继续事件|微信小程序、百度小程序、QQ小程序、京东小程序、字节小程序|
|onError|callback|录音错误事件, 会回调错误信息| | |onInterruptionBegin|callback|监听录音因为受到系统占用而被中断开始事件。以下场景会触发此事件:微信语音聊天、微信视频聊天、QQ语音聊天、QQ视频聊天、电话响铃、接听电话。此事件触发后,录音会被暂停。pause 事件在此事件后触发|微信小程序、百度小程序、QQ小程序|
|onInterruptionEnd|callback|监听录音中断结束事件。在收到 interruptionBegin 事件之后,小程序内所有录音会暂停,收到此事件之后才可再次录音成功。|微信小程序、百度小程序、QQ小程序|
**start(options) 说明** |onFrameRecorded|callback|已录制完指定帧大小的文件,会回调录音分片结果数据。如果设置了 frameSize ,则会回调此事件|App 暂不支持|
|onError|callback|录音错误事件, 会回调错误信息| |
|属性|类型|必填|说明|平台差异说明|
|:-|:-|:-|:-|:-| **start(options) 说明**
|duration|Number|否|指定录音的时长,单位 ms ,如果传入了合法的 duration ,在到达指定的 duration 后会自动停止录音,最大值 600000(10 分钟),默认值 60000(1 分钟)|App、小程序支持|
|sampleRate|Number|否|采样率,有效值 8000/16000/44100|App、小程序支持| |属性|类型|必填|说明|平台差异说明|
|numberOfChannels|Number|否|录音通道数,有效值 1/2|仅小程序支持| |:-|:-|:-|:-|:-|
|encodeBitRate|Number|否|编码码率,有效值见下表格|仅小程序支持| |duration|Number|否|指定录音的时长,单位 ms ,如果传入了合法的 duration ,在到达指定的 duration 后会自动停止录音,最大值 600000(10 分钟),默认值 60000(1 分钟)|App、小程序支持|
|format|String|否|音频格式,有效值 aac/mp3/wav/PCM。App默认值为mp3,小程序默认值aac|App、小程序支持| |sampleRate|Number|否|采样率,有效值 8000/16000/44100|App、小程序支持|
|frameSize|String|否|指定帧大小,单位 KB。传入 frameSize 后,每录制指定帧大小的内容后,会回调录制的文件内容,不指定则不会回调。暂仅支持 mp3 格式。|App、百度小程序不支持| |numberOfChannels|Number|否|录音通道数,有效值 1/2|仅小程序支持|
|encodeBitRate|Number|否|编码码率,有效值见下表格|仅小程序支持|
其中,采样率和码率有一定要求,具体有效值如下: |format|String|否|音频格式,有效值 aac/mp3/wav/PCM。App默认值为mp3,小程序默认值aac|App、小程序支持|
|frameSize|String|否|指定帧大小,单位 KB。传入 frameSize 后,每录制指定帧大小的内容后,会回调录制的文件内容,不指定则不会回调。暂仅支持 mp3 格式。|App、百度小程序不支持|
|采样率|编码码率|
|:-|:-| 其中,采样率和码率有一定要求,具体有效值如下:
|8000|16000 ~ 48000|
|11025|16000 ~ 48000| |采样率|编码码率|
|12000|24000 ~ 64000| |:-|:-|
|16000|24000 ~ 96000| |8000|16000 ~ 48000|
|22050|32000 ~ 128000| |11025|16000 ~ 48000|
|24000|32000 ~ 128000| |12000|24000 ~ 64000|
|32000|48000 ~ 192000| |16000|24000 ~ 96000|
|44100|64000 ~ 320000| |22050|32000 ~ 128000|
|48000|64000 ~ 320000| |24000|32000 ~ 128000|
|32000|48000 ~ 192000|
**onStop(callback) 回调结果说明** |44100|64000 ~ 320000|
|48000|64000 ~ 320000|
|属性|类型|说明|
|:-|:-|:-| **onStop(callback) 回调结果说明**
|tempFilePath|String|录音文件的临时路径|
|属性|类型|说明|
|:-|:-|:-|
**onFrameRecorded(callback) 回调结果说明** |tempFilePath|String|录音文件的临时路径|
|属性|类型|说明|
|:-|:-|:-| **onFrameRecorded(callback) 回调结果说明**
|frameBuffer|ArrayBuffer|录音分片结果数据|
|isLastFrame|Boolean|当前帧是否正常录音结束前的最后一帧| |属性|类型|说明|
|:-|:-|:-|
**onError(callback) 回调结果说明** |frameBuffer|ArrayBuffer|录音分片结果数据|
|isLastFrame|Boolean|当前帧是否正常录音结束前的最后一帧|
|属性|类型|说明|
|:-|:-|:-| **onError(callback) 回调结果说明**
|errMsg|String|错误信息|
|属性|类型|说明|
**注意** |:-|:-|:-|
|errMsg|String|错误信息|
- 可以通过用户授权API来判断用户是否给应用授予麦克风的访问权限[https://uniapp.dcloud.io/api/other/authorize](https://uniapp.dcloud.io/api/other/authorize)
**注意**
**示例**
- 可以通过用户授权API来判断用户是否给应用授予麦克风的访问权限[https://uniapp.dcloud.io/api/other/authorize](https://uniapp.dcloud.io/api/other/authorize)
```html
<template> **示例**
<view>
<button @tap="startRecord">开始录音</button> ```html
<button @tap="endRecord">停止录音</button> <template>
<button @tap="playVoice">播放录音</button> <view>
</view> <button @tap="startRecord">开始录音</button>
</template> <button @tap="endRecord">停止录音</button>
``` <button @tap="playVoice">播放录音</button>
</view>
```javascript </template>
const recorderManager = uni.getRecorderManager(); ```
const innerAudioContext = uni.createInnerAudioContext();
```javascript
innerAudioContext.autoplay = true; const recorderManager = uni.getRecorderManager();
const innerAudioContext = uni.createInnerAudioContext();
export default {
data() { innerAudioContext.autoplay = true;
return {
text: 'uni-app', export default {
voicePath: '' data() {
} return {
}, text: 'uni-app',
onLoad() { voicePath: ''
let self = this; }
recorderManager.onStop(function (res) { },
console.log('recorder stop' + JSON.stringify(res)); onLoad() {
self.voicePath = res.tempFilePath; let self = this;
}); recorderManager.onStop(function (res) {
}, console.log('recorder stop' + JSON.stringify(res));
methods: { self.voicePath = res.tempFilePath;
startRecord() { });
console.log('开始录音'); },
methods: {
recorderManager.start(); startRecord() {
}, console.log('开始录音');
endRecord() {
console.log('录音结束'); recorderManager.start();
recorderManager.stop(); },
}, endRecord() {
playVoice() { console.log('录音结束');
console.log('播放录音'); recorderManager.stop();
},
if (this.voicePath) { playVoice() {
innerAudioContext.src = this.voicePath; console.log('播放录音');
innerAudioContext.play();
} if (this.voicePath) {
} innerAudioContext.src = this.voicePath;
} innerAudioContext.play();
} }
``` }
}
}
```
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册