Track 对象
Track 对象是 Track 模式下的媒体对象,可以用来在页面上播放媒体。
info
类型 TrackInfo
标记这个 Track 的 TrackInfo, 包含 trackId、kind、tag 等信息
userId
类型 string
标记这个 Track 是来自哪个用户发布的
mediaTrack
类型 MediaStreamTrack
表示这个 Track 原生的浏览器媒体对象,一般场景不会用到
mediaElement
类型 HTMLVideoElement | HTMLAudioElement | undefined
如果调用了 Track 的 play 方法,这里可以访问到实际播放媒体的 <video> 或 <audio> 元素。如果没有 play 过或者 Track 被释放,为 undefined。
play(container)
container: HTMLElement
在传入的 container 下创建相应的 <audio> 或 <video> 元素播放媒体。详细参见播放音视频轨
如果您在还没有与用户任何交互的情况下调用了play方法会导致音频无法播放,详情参考我们的博文:浏览器的自动播放策略的注意事项
getStats()
返回 TrackStatsReport
获取当前 Track 的传输状态数据,SDK 内部会每秒更新一次。TrackStatsReport 的详细格式见下:
TrackStatsReport {
bitrate: number; // 当前实时码率
bytes: number; // 截止目前一共发送/接收的字节数
packets: number; // 截止目前一共发送/接收的包数
packetLoss: number; // 截止目前一共的丢包数
packetLossRate: number; // 当前的丢包率
timestamp: number; //时间戳
}
该方法仅支持 Chrome 和 Firefox
release()
停止从远端或者采集设备拉取媒体数据,释放这个 Track
取消订阅会自动调用相应
Track的release,但是取消发布不会调用,如果需要请手动调用
getCurrentFrameDataURL()
视频Track调用才会生效
截帧
返回: DataURL
当视频不存在时返回 "data:,"
onAudioBuffer(callback, bufferSize?)
音频Track调用才会生效
callback: (buffer: AudioBuffer) => any
设置这个方法后,SDK 会收集音频的原始 Buffer 数据,然后回调给传入的 callback 函数中。AudioBuffer 是浏览器原生的音频 Buffer 对象。
bufferSize: number 可选
是指每次回调 Buffer 的长度,默为 4096 位。
bufferSize必须是 2 的 n 次方且大于 256 小于 16394
track.onAudioBuffer((buffer) => {
console.log("get audio buffer!", buffer);
});
setVolume(value)
音频Track调用才会生效
value: number
设置音量,目前仅对采集到的 Track 有效(订阅 Track 无效)
value 是增益值,0 代表静音,2,代表当前声音的 2 倍
getCurrentTimeDomainData()
音频Track调用才会生效
返回 Uint8Array
获取当前 2048 位的时域数据
通常用于音频可视化的数据,可以配合 requestAnimationFrame 和 canvas 实现绘制声波图
getCurrentFrequencyDomainData()
音频Track调用才会生效
返回 Uint8Array
获取当前 2048 位的频域数据
通常用于音频可视化的数据,可以配合 requestAnimationFrame 和 canvas 实现绘制频谱图
setAudioBuffer(buffer)
音频Track调用才会生效
buffer: AudioBuffer
传入自定义的媒体数据,一个 AudioBuffer 对象
只有在调用 getLocalTracks 时, audio 中的 buffer 为 true 的情况下返回的音频 Track 对象才能调用此方法。表示这个 Track 不会从麦克风采集媒体数据,而是等待用户手动调用该函数传入媒体数据
playAudioBuffer(loop)
音频Track调用才会生效
loop: boolean
代表是否循环播放,默认为 false
调用上文的 setAudioBuffer 后,可以调用该方法开始播放自定义媒体数据。注意这里的播放只是指音频模块开始处理这些音频数据,如果想实际听到声音,请先提前调用 play 方法。
stopAudioBuffer()
音频Track调用才会生效
停止自定义媒体数据的播放
setMaster(isMaster)
isMaster: boolean
默认所有的 Track 的 master 属性都是 false, 可以通过该方法设置 master 属性
关于
master的介绍参见 模式选择
事件列表
release
当 Track 调用 release 方法的时候触发,表示这个 Track 已经被释放。无论是自己手动调用还是 SDK 自动调用都会触发。
track.once("release", () => {
console.log("track", track, "is released!");
})