audio-context.md 4.2 KB
Newer Older
Q
qiang 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
### uni.createInnerAudioContext()
创建并返回内部 audio 上下文 `innerAudioContext` 对象。

**平台差异说明**

|App|H5|微信小程序|支付宝小程序|百度小程序|字节跳动小程序|QQ小程序|快手小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|√|√|√|1.23.4+|√|√|√|√|

**innerAudioContext 对象的属性列表**

|属性|类型|说明|只读|平台差异说明|
|:-|:-|:-|:-|:-|
|src|String|音频的数据链接,用于直接播放。|否|微信小程序不支持本地路径|
|startTime|Number|开始播放的位置(单位:s),默认 0|否||
|autoplay|Boolean|是否自动开始播放,默认 false|否|H5端部分浏览器不支持|
|loop|Boolean|是否循环播放,默认 false|否||
|obeyMuteSwitch|Boolean|是否遵循系统静音开关,当此参数为 false 时,即使用户打开了静音开关,也能继续发出声音,默认值 true|否|微信小程序、百度小程序、字节跳动小程序|
|duration|Number|当前音频的长度(单位:s),只有在当前有合法的 src 时返回,需要在onCanplay中获取|是||
|currentTime|Number|当前音频的播放位置(单位:s),只有在当前有合法的 src 时返回,时间不取整,保留小数点后 6 位|是||
|paused|Boolean|当前是是否暂停或停止状态,true 表示暂停或停止,false 表示正在播放|是||
|buffered|Number|音频缓冲的时间点,仅保证当前播放时间点到此时间点内容已缓冲。|是||
|volume|Number|音量。范围 0~1。|否| |


**innerAudioContext 对象的方法列表**

|方法|参数|说明|
|:-|:-|:-|
|play||播放(H5端部分浏览器需在用户交互时进行)|
|pause||暂停|
|stop||停止|
|seek|position|跳转到指定位置,单位 s|
|destroy||销毁当前实例|
|onCanplay|callback|音频进入可以播放状态,但不保证后面可以流畅播放|
|onPlay|callback|音频播放事件|
|onPause|callback|音频暂停事件|
|onStop|callback|音频停止事件|
|onEnded|callback|音频自然播放结束事件|
|onTimeUpdate|callback|音频播放进度更新事件|
|onError|callback|音频播放错误事件|
|onWaiting|callback|音频加载中事件,当音频因为数据不足,需要停下来加载时会触发|
|onSeeking|callback|音频进行 seek 操作事件|
|onSeeked|callback|音频完成 seek 操作事件|
|offCanplay|callback|取消监听 onCanplay 事件|
|offPlay|callback|取消监听 onPlay 事件|
|offPause|callback|取消监听 onPause 事件|
|offStop|callback|取消监听 onStop 事件|
|offEnded|callback|取消监听 onEnded 事件|
|offTimeUpdate|callback|取消监听 onTimeUpdate 事件|
|offError|callback|取消监听 onError 事件|
|offWaiting|callback|取消监听 onWaiting 事件|
|offSeeking|callback|取消监听 onSeeking 事件|
|offSeeked|callback|取消监听 onSeeked 事件|

errCode 说明

|errCode|说明|
|:-|:-|
|10001|系统错误|
|10002|网络错误|
|10003|文件错误|
|10004|格式错误|
|-1|未知错误|


**支持格式**

|格式|iOS|Android|
|:-|:-|:-|
|flac	|x|√|
|m4a	|√|√|
|ogg	|x|√|
|ape	|x|√|
|amr	|x|√|
|wma	|x|√|
|wav	|√|√|
|mp3	|√|√|
|mp4	|x|√|
|aac	|√|√|
|aiff	|√|x|
|caf	|√|x|

**示例**

```javascript
const innerAudioContext = uni.createInnerAudioContext();
innerAudioContext.autoplay = true;
innerAudioContext.src = 'https://bjetxgzv.cdn.bspapp.com/VKCEYUGU-hello-uniapp/2cc220e0-c27a-11ea-9dfb-6da8e309e0d8.mp3';
innerAudioContext.onPlay(() => {
  console.log('开始播放');
});
innerAudioContext.onError((res) => {
  console.log(res.errMsg);
  console.log(res.errCode);
});
```

**tips**

- 如需音频的倍速播放,可通过video的倍速播放替代实现。插件市场有封装好的插件[音频倍速播放](https://ext.dcloud.net.cn/search?q=%E9%9F%B3%E9%A2%91%E5%80%8D%E9%80%9F%E6%92%AD%E6%94%BE)
- 如果需要带ui的音频播放器样式,可以在插件市场搜索相关[插件](https://ext.dcloud.net.cn/search?q=audio)
- `Android 4.1` 及更高版本对 `PCM/WAVE` 支持范围是 `8` 位和 `16` 位线性 PCM(比特率最高可达到硬件上限)。以 8000、16000 和 44100 Hz 录制原始 PCM 所需的采样率。