# 多媒体 media 2+
# 接口声明
{ "name": "system.media" }
1
# 导入模块
import media from '@system.media' 或 const network = require('@system.media')
1
# 接口定义
# media.createAudioPlayer()
创建音频播放的实例。
# 参数:
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
streamType | String | 否 | streamType |
contentType | String | 否 | contentType |
streamUsage | String | 否 | streamUsage |
# 返回值
# 示例:
const audioplayer = media.createAudioPlayer()
1
# media.createAudioTrack()
创建音频流式播放的实例
# 参数
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
streamType | String | 否 | streamType |
contentType | String | 否 | contentType |
sampleRateInHz | Number | 否 | 采样率,单位赫兹,可选值为:8000、 16000;默认值为 16000 |
channelConfig | Number | 否 | 捕获音频的声道数目,1:单声道,2:立体声;默认值为 1 |
audioFormat | Number | 否 | 样本的分辨率,单位 bit,可选值为: 8、16;默认值为 16 |
# 返回值
# 示例:
const audiotrack = media.createAudioTrack()
1
# media.createAudioRecord(OBJECT)
创建录音实例
# 参数
属性名 | 类型 | 必填 | 说明 |
---|---|---|---|
sampleRateInHz | Number | 否 | 采样率,单位赫兹,可选值为:8000、 16000;默认值为 16000 |
channelConfig | Number | 否 | 音频的声道数目,1:单声道,2:立体声;默认值为 1 |
audioFormat | Number | 否 | 样本的分辨率,单位 bit,可选值为: 8、16;默认值为 16 |
# 返回值
# 示例:
const record = media.createAudioRecord()
1
# AudioPlayer
# AudioPlayer.play()
开始播放音频
# 参数
无
# 示例:
audioplayer.src = 'xxx'
// play 方法调用无需等待 src 加载完成
audioplayer.play()
1
2
3
2
3
# AudioPlayer.pause()
暂停播放音频
# 参数
无
# 示例:
audioplayer.pause()
1
# AudioPlayer.stop()
停止音频播放,可以通过 play 重新播放音频
# 参数
无
# 示例:
audioplayer.stop()
1
# AudioPlayer.release()
释放音频资源
# 参数
无
# 示例:
audioplayer.release()
1
# 属性
名称 | 参数类型 | 是否可读 | 是否可写 | 必填 | 描述 |
---|---|---|---|---|---|
src | String | 是 | 是 | 是 | 播放的音频媒体 uri |
currentTime | Number | 是 | 是 | 否 | 音频的当前进度,单位秒,对值设置可以调整播放进度 |
duration | Number | 是 | 否 | 否 | 音频文件的总时长,单位秒,未知返回 NaN |
state | String | 是 | 否 | 否 | 播放状态,分别为'play','pause','stop','idle' |
playcount | Number | 是 | 是 | 是 | 控制音频的循环播放,playcount == 1 或 playcount == 0:不开启循环; playcount >1:开启循环,且循环指定的次数; playcount == -1:开启循环,且循环无限次数 |
# 示例:
let currentTime = audioplayer.currentTime
// 跳转时间
audioplayer.currentTime = 100
1
2
3
2
3
# 事件
名称 | 描述 | 返回值 |
---|---|---|
play | 在音频 play 后的回调事件 | |
pause | 在音频 pause 后的回调事件 | |
stop | 在音频 stop 后的回调事件 | |
ended | 播放结束时的回调事件 | |
error | 播放发生错误时的回调事件 | |
timeupdate | 在 currentTime 属性更新时会触发的回调事件 | |
durationchange | 在 duration 属性更新时被触发的回调事件 | |
previous | 音乐面板点击上一首按钮时触发 | |
next | 音乐面板点击下一首按钮时触发 | |
loadeddata | 第一次获取到音频数据的回调事件 | |
interrupt | 音频打断事件,当前音频被其他有相同音频类型的音频抢夺时,被停止或者恢复的通知。或者当前音频被当外部设备操作打断的通知。 | InterruptAction |
# 示例:
audioplayer.oninterrupt = function (interruptAction) {
console.log(interruptAction.interruptHint)
}
1
2
3
2
3
# AudioTrack
# AudioTrack.play()
开始播放音频
# 参数
无
# 示例:
audiotrack.play()
1
# AudioTrack.write(OBJECT)
写入音频数据
# 参数
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
buffer | Uint8Array | 是 | 写入的二进制音频数据 |
success | Function | 否 | 成功函数,通过该回调函数通知写入的情况 |
fail | Function | 否 |
# success 返回值:
参数值 | 类型 | 说明 |
---|---|---|
state | Number | 写入状态,1 - 成功 2 - 失败 3 - 参数异常 |
# 示例:
http.get('/getAudio').then((res) => {
audiotrack.write({
buffer: new Uint8Array(res),
success: function () {
// wirte success
},
})
})
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# AudioTrack.pause()
暂停播放音频
# 参数
无
# 示例:
audiotrack.pause()
1
# AudioTrack.stop()
停止音频播放,可以通过 play 重新播放音频
# 参数
无
# 示例:
audiotrack.stop()
1
# AudioTrack.release()
释放音频资源
# 参数
无
# 示例:
audiotrack.release()
1
# 属性
名称 | 参数类型 | 是否可读 | 是否可写 | 必填 | 描述 |
---|---|---|---|---|---|
state | String | 是 | 否 | 否 | 播放状态,分别为'play','pause','stop' |
# 示例:
let state = audiotrack.state
console.log(state)
1
2
2
# 事件
名称 | 描述 | 返回值 |
---|---|---|
play | 在音频 play 后的回调事件 | |
stop | 在音频 stop 后的回调事件 | |
pause | 在音频 pause 后的回调事件 | |
ended | 播放结束时的回调事件 | |
error | 播放发生错误时的回调事件 | |
timeupdate | 在 currentTime 属性更新时会触发的回调事件 | |
interrupt | 音频打断事件,当前音频被其他有相同音频类型的音频抢夺时,被停止或者恢复的通知。或者当前音频被当外部设备操作打断的通知。 | InterruptAction |
# 示例:
audiotrack.oninterrupt = function (interruptAction) {
console.log(interruptAction.interruptHint)
}
1
2
3
2
3
# AudioRecorder
# AudioRecorder.start(OBJECT)
开始录音,并在录音结束后生成音频文件。
# 参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
uri | String | 是 | 需要输出到文件的 uri |
success | Function | 是 | 成功的回调 |
fail | Function | 是 | 失败的回调 |
complete | Function | 是 | 执行结束后的回调 |
# success 返回值:
无
# 示例:
record.start({
uri: 'internal://cache/path/to/file',
success: function (data) {
console.log(`handling success: ${data.uri}`)
},
fail: function (data, code) {},
})
1
2
3
4
5
6
7
2
3
4
5
6
7
# AudioRecorder.read(OBJECT)
开始录音,录音的过程中实时返回音频内容。
# 参数:
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
callback | Function | 否 | 回调函数 |
# callback 返回值:
参数名 | 类型 | 说明 |
---|---|---|
buffer | Uint8Array | 录音内容 |
# 示例:
record.read({
callback(buffer) {
console.log('buffer.length: ' + buffer.length)
},
})
1
2
3
4
5
2
3
4
5
# AudioRecorder.stop(OBJECT)
停止录音。
# 参数:
无
# 示例:
record.stop()
1
# AudioRecorder.release(OBJECT)
释放录音资源。
# 参数:
无
# 示例:
record.release()
1
# 事件
名称 | 描述 |
---|---|
error | 录音发生错误时的回调事件 |
start | 录音开始时的回调事件 |
stop | 录音停止时的回调事件 |
# 示例:
record.onerror = function () {
console.log(`audio error`)
}
1
2
3
2
3
# streamUsage
指定使用音频类型 ,默认值为music
。用于对音频冲突的仲裁,多个相同的streamUsage
音频同时播放时,系统只会保留一个,其他的会被打断。
名称 | 说明 |
---|---|
music | 媒体 |
# contentType
用于音频后处理,默认值为music
。系统会根据不同的 contentType
对声音进行优化处理。
名称 | 说明 |
---|---|
speech | 语音播报 |
music | 音乐播放 |
movie | 视频播放/电视节目 |
sonification | 按键音/游戏中的短音提示/拟音 |
# streamType
用于音量策略,默认值为music
。系统可以通过不同的 streamType
来管理音频的音量,例如:播放音乐设置为 music
,消息提示音设置为 ring
。
名称 | 说明 |
---|---|
music | 媒体 |
# InterruptAction
属性 | 类型 | 说明 |
---|---|---|
interruptHint | Number | 1 - 音频恢复 (如:来电恢复) 2 - 音频暂停 (如:来电打断) 3 - 音频停止(如:彻底停止) |
actionType | Number | 事件返回类型。 0 - 被音频抢夺,焦点触发事件 1 - 音频被外部设备打断事件。 |
←
→