跳转到内容

多媒体

{ "name": "blueos.media.audio.mediaManager" }
import media from '@blueos.media.audio.mediaManager' const media = require('@blueos.media.audio.mediaManager')

创建音频播放的实例。

参数

属性类型必填说明
streamTypeStreamType音量策略,默认值为 music
contentTypeContentType音频后处理类型,默认值为 music
streamUsageStreamUsage音频类型,默认值为 music

返回值: AudioPlayer

示例:

const audioPlayer = media.createAudioPlayer({
streamType: "music",
contentType: "music",
streamUsage: "music"
})

创建音频流式播放的实例

参数

属性类型必填说明
streamTypeStreamType音量策略,默认值为 music
contentTypeContentType音频后处理类型,默认值为 music
streamUsageStreamUsage音频类型,默认值为 music
sampleRateInHznumber采样率,单位赫兹,可选值为:8000、 16000;默认值为 16000
channelConfignumber捕获音频的声道数目,1:单声道,2:立体声;默认值为 1
audioFormatnumber样本的分辨率,单位 bit,可选值为: 8、16;默认值为 16

返回值: AudioTrack

示例:

const audioTrack = media.createAudioTrack()

创建录音实例

权限要求: 录音

开发者需要在 manifest.json 里面配置权限:

{
"permissions": [{ "name": "blueos.permission.RECORD" }]
}

参数

属性名类型必填说明
sampleRateInHznumber采样率,单位赫兹,可选值为:8000、 16000;默认值为 16000
channelConfignumber音频的声道数目,1:单声道,2:立体声;默认值为 1
audioFormatnumber样本的分辨率,单位 bit,可选值为: 8、16;默认值为 16

返回值: AudioRecorder

示例:

const audioRecorder = media.createAudioRecord({
sampleRateInHz: 16000,
channelConfig: 1,
audioFormat: 16
})

开始播放音频

参数:

示例:

audioPlayer.src = 'xxx'
// play 方法调用无需等待 src 加载完成
audioPlayer.play()

暂停播放音频

参数:

示例:

audioPlayer.pause()

停止音频播放,可以通过 play 重新播放音频

参数:

示例:

audioPlayer.stop()

释放音频资源

参数:

示例:

audioPlayer.release()

字符串属性;可读可写属性,声明该属性会指定播放的音频媒体 uri。

示例:

audioPlayer.src = "internal://files/a.mp3"

读取 currentTime 属性将返回一个双精度浮点值,用以标明以秒为单位的当前音频的播放位置,设置 currentTime 将设置当前的播放位置。

示例:

audioPlayer.currentTime = 100.0

这是一个双精度浮点数,指明了音频在时间轴中的持续时间(总长度),以秒为单位。如果元素上没有媒体,或者媒体是不可用的,那么会返回 NaN

示例:

const duration = audioPlayer.duration;
console.log(duration)

读取 state 属性可获取当前音频的播放状态。分别为:分别为`play,‘pause’,‘stop’,‘idle’

const state = audioPlayer.state;
console.log(state)

整型数值,控制音频的循环播放。playcount = 1 或 playcount = 0:不开启循环; playcount >1:开启循环,且循环指定的次数; playcount = -1:开启循环,且循环无限次数。

示例:

audioPlayer.playcount = -1;

在音频 play 后的回调事件。

示例:

audioPlayer.onPlay = () => {
console.log("play")
}

在音频 pause 后的回调事件

示例:

audioPlayer.onPause = () => {
console.log("pause")
}

在音频 stop 后的回调事件

示例:

audioPlayer.onStop = () => {
console.log("stop")
}

播放结束时的回调事件

示例:

audioPlayer.onEnded = () => {
console.log("ended")
}

播放发生错误时的回调事件

回调返回:

参数类型说明
datastring错误说明
codeErrorCode错误码

示例:

audioPlayer.onError = (data, code) => {
console.log(`data = ${data} code = ${code}`)
}

currentTime 属性更新时会触发的回调事件

示例:

audioPlayer.onTimeUpdate = () => {
console.log("timeUpdate")
}

duration 属性更新时被触发的回调事件

示例:

audioPlayer.onDurationChange = () => {
console.log("durationChange")
}

音乐面板点击上一首按钮时触发

示例:

audioPlayer.onPrevious = () => {
console.log("播放上一首")
}

音乐面板点击下一首按钮时触发

示例:

audioPlayer.onNext = () => {
console.log("播放下一首")
}

第一次获取到音频数据的回调事件

示例:

audioPlayer.onLoadedData = () => {
console.log("loadedData")
}

音频打断事件,当前音频被其他有相同音频类型的音频抢夺时,被停止或者恢复的通知。或者当前音频被当外部设备操作打断的通知。

回调返回:

类型说明
InterruptAction打断事件信息

示例:

audioPlayer.onInterrupt = function (interruptAction) {
console.log(interruptAction.interruptHint)
}

开始播放音频

参数:

示例:

audioTrack.play()

写入音频数据。

请确保在调用 write() 之前先调用 play(),否则写入的数据不会被处理或播放。

参数

属性类型必填说明
bufferArrayBuffer写入的二进制音频数据
successFunction成功函数,通过该回调函数通知写入的情况
failFunction失败函数

success 返回值:

类型说明
number表示写入成功的字节数,若返回的字节数为0 ,表示音频缓冲区已写满,建议等待后再次写入。

fail 返回值:

错误码说明
202参数错误
300写入失败

示例:

audioTrack.write({
buffer: new ArrayBuffer(16),
success(writtenBytes) {
console.log(`written success writtenBytes=${writtenBytes}`)
},
fail(data, code) {
console.log(`handling fail, code = ${code}`)
},
})

暂停播放音频

参数:

示例:

audioTrack.pause()

停止音频播放,可以通过 play 重新播放音频

参数:

示例:

audioTrack.stop()

释放音频资源

参数:

示例:

audioTrack.release()

读取该属性可获得播放状态,分别为’play’, ‘pause’, ‘stop’

示例:

let state = audioTrack.state
console.log(state)

在音频 play 后的回调事件

示例:

audioTrack.onPlay = () => {
console.log('play')
}

在音频 stop 后的回调事件

示例:

audioTrack.onStop = () => {
console.log('stop')
}

在音频 pause 后的回调事件

示例

audioTrack.onPause = () => {
console.log('pause')
}

播放发生错误时的回调事件

回调返回:

参数类型说明
datastring错误说明
codeErrorCode错误码

示例:

audioTrack.onError = (data, code) => {
console.log(`data = ${data} code = ${code}`)
}

音频打断事件,当前音频被其他有相同音频类型的音频抢夺时,被停止或者恢复的通知。或者当前音频被当外部设备操作打断的通知。

回调返回:

类型说明
InterruptAction打断事件信息

示例:

audioPlayer.onInterrupt = function (interruptAction) {
console.log(interruptAction.interruptHint)
}

开始录音,并在录音结束后生成音频文件。

参数:

属性名类型必填说明
uristring需要输出到文件的 uri
successFunction成功的回调
failFunction失败的回调
completeFunction执行结束后的回调

success 返回值:

属性名类型说明
uriString录音文件的存储路径

示例:

audioRecorder.start({
uri: 'internal://cache/file.mp3',
success: function (data) {
console.log(`handling success: ${data.uri}`)
},
fail: function (data, code) {},
})

开始录音,录音的过程中实时返回音频内容。

注意:read 也是开始录音,不要再调用 start。

参数:

参数类型必填说明
callbackFunction回调函数

callback 返回值:

类型说明
ArrayBuffer录音内容

示例:

audioRecorder.read({
callback(buffer) {
console.log('buffer.byteLength: ' + buffer.byteLength)
},
})

停止录音。

参数:

示例:

audioRecorder.stop()

释放录音资源。

参数:

示例:

audioRecorder.release()

录音发生错误时的回调事件

回调返回:

参数类型说明
datastring错误说明
codeErrorCode错误码

示例:

audioRecorder.onError = (data, code) => {
console.log(`data = ${data} code = ${code}`)
}

录音开始时的回调事件

示例:

audioRecorder.onStart = () => {
console.log(`start`)
}

录音停止时的回调事件

示例:

audioRecorder.onStop = () => {
console.log(`stop`)
}

音频类型枚举值 ,取值为 string 类型,默认值为music。用于对音频冲突的仲裁,多个相同的streamUsage音频同时播放时,系统只会保留一个,其他的会被打断。

取值权限限制说明
system仅系统应用可用系统消息
ring仅系统应用可用电话响铃或短信提示
music媒体
voicecall仅系统应用可用通话
alarm仅系统应用可用闹钟
notification仅系统应用可用通知
game仅系统应用可用游戏
tts仅系统应用可用文本语音播报
sportbroadcast仅系统应用可用运动播报
navigation仅系统应用可用导航

音频后处理枚举值,取值为 string 类型,默认值为music。系统会根据不同的 contentType 对声音进行优化处理。

取值说明
speech语音播报
music音乐播放
movie视频播放/电视节目
sonification按键音/游戏中的短音提示/拟音

音量策略枚举值,取值为 string 类型,默认值为music。系统可以通过不同的 streamType 来管理音频的音量,例如:播放音乐设置为 music,消息提示音设置为 ring

名称权限限制说明
system仅系统应用可用系统消息
ring仅系统应用可用电话响铃或短信提示
music媒体
voicecall仅系统应用可用通话
alarm仅系统应用可用闹钟
notification仅系统应用可用通知
bluetoothsco仅系统应用可用蓝牙通话
tts仅系统应用可用文本语音播报
sportbroadcast仅系统应用可用运动播报
force仅系统应用可用忽视静音策略,强制最大音量播放

音频打断对象

属性类型说明
interruptHintnumber1 - 音频恢复 (如:来电恢复)
2 - 音频暂停,可以恢复 (如:来电打断)
3 - 音频停止,不会再恢复(如:彻底停止)
4 - 音频被拒绝(如:来电时播放音乐)
actionTypenumber事件返回类型。
0 - 被音频抢夺,焦点触发事件
1 - 音频被外部设备打断事件,如蓝牙耳机连接。

示例:

{
"interruptHint": 2,
"actionType": 0
}

错误码的枚举,枚举值的类型为 number

枚举值对应的 data 信息说明
201No Permission表示无权限执行此操作,需要申请权限或者用户授权。
202Invalid Parameters参数无效 。
100001Insufficient Memory or Service Limit Reached表示系统内存不足或服务数量达到上限 。
100002Operation Not Allowed表示当前状态不允许或无权执行此操作 。
100003I/O error.表示出现IO错误。
100004System or Network Timeout表示系统或网络响应超时 。录音暂无此错误。
100005Service Process Terminated表示服务进程死亡。
100006Unsupported Format表示不支持当前媒体资源的格式。
100007Audio interrupted.表示音频焦点被抢占 。