AudioSourceTrack
AudioSourceTrack
是一种特殊的 audio
类型的 Track 对象。因为它继承于 Track,所以拥有全部 Track 对象的方法(包括播放,回调,控制音量等等),也可以直接被用于发布等操作。关于两者的区别,则主要在于媒体源的不同上:
- 对于普通的 Track 对象,媒体源来自于从媒体设备中采集(麦克风,摄像头)
- 而
AudioSourceTrack
对象则不同,它的媒体源来自于用户自行提供的音频数据,包括本地音乐文件、在线音乐 或者 原始的音频 Buffer
因为媒体源的不同而导致常用操作的不同,所以 SDK 封装了 2 个独立的类。关于如何获取 AudioSourceTrack
可以参考文档中的 外部音频导入 或者 音乐混音。
Track
父类:因为继承自 Track 对象,所以可以直接获取 Track 对象中的方法和对象。具体可以参考 Track 的 API 文档。
isLoop
boolean
类型 代表播放时是否要循环播放输入的媒体源,默认为 false
,即将传入的媒体源播放完成后就停止。
setLoop(isLoop)
boolean
isLoop: 设置是否要循环播放输入的媒体源
startAudioSource()
开始处理播放输入的媒体源
注意这里并不是真正意义上的播放(播放媒体源的声音并被听见),仅仅是开始处理这些媒体源数据,只有当 play 方法被调用后,这些处理后的媒体数据才会被送进声卡,从而在页面上播放被用户听见。
pauseAudioSource()
暂停处理输入的媒体源,这将会导致音频被暂停
resumeAudioSource()
恢复处理输入的媒体源,如果调用了 pauseAudioSource 方法,可以通过这个方法恢复。
stopAudioSource()
停止处理输入的媒体源,同时释放相应的媒体源资源
getCurrentTime()
number
返回: 获取当前处理的媒体源的时间,简单来说就是当前音乐播放的位置,单位是秒
setCurrentTime(time)
number
time: 跳转至指定播放位置开始处理媒体源,也就是设置音频当前的播放时间,单位是秒
getDuration()
number
返回: 获取当前媒体源的总时长,单位是 秒
事件列表
audio-state-change
当处理媒体源的状态发生变化时,会触发这个事件,全部的状态介绍见下:
AudioSourceState {
IDLE = "idle", // 表示还没有开始处理播放媒体源,初始状态
LOADING = "loading", // 在处理在线媒体源的时候会触发,表示还在加载
PLAY = "play", // 表示媒体源在正常处理播放
PAUSE = "pause", // 表示媒体源被暂停
END = "end", // 表示媒体源播放结束
}
示例:
audioSourceTrack.on("audio-state-change", (currState, lastState) => {
console.log(`audio state change, ${lastState} -> ${currState}`);
});