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)
HTMLElement
container:在传入的 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调用才会生效
(buffer: AudioBuffer) => any
callback: 设置这个方法后,SDK 会收集音频的原始 Buffer 数据,然后回调给传入的 callback
函数中。AudioBuffer 是浏览器原生的音频 Buffer 对象。
number
可选
bufferSize: 是指每次回调 Buffer 的长度,默为 4096 位。
bufferSize
必须是 2 的 n 次方且大于 256 小于 16394
track.onAudioBuffer((buffer) => {
console.log("get audio buffer!", buffer);
});
setVolume(value)
音频Track调用才会生效
number
value: 设置音量,目前仅对采集到的 Track 有效(订阅 Track 无效)
value 是增益值,0 代表静音,2,代表当前声音的 2 倍
getCurrentTimeDomainData()
音频Track调用才会生效
Uint8Array
返回获取当前 2048 位的时域数据
通常用于音频可视化的数据,可以配合 requestAnimationFrame 和 canvas 实现绘制声波图
getCurrentFrequencyDomainData()
音频Track调用才会生效
Uint8Array
返回获取当前 2048 位的频域数据
通常用于音频可视化的数据,可以配合 requestAnimationFrame 和 canvas 实现绘制频谱图
setAudioBuffer(buffer)
音频Track调用才会生效
AudioBuffer
buffer:传入自定义的媒体数据,一个 AudioBuffer
对象
只有在调用 getLocalTracks 时, audio
中的 buffer
为 true
的情况下返回的音频 Track
对象才能调用此方法。表示这个 Track
不会从麦克风采集媒体数据,而是等待用户手动调用该函数传入媒体数据
playAudioBuffer(loop)
音频Track调用才会生效
boolean
loop: 代表是否循环播放,默认为 false
调用上文的 setAudioBuffer
后,可以调用该方法开始播放自定义媒体数据。注意这里的播放
只是指音频模块开始处理这些音频数据,如果想实际听到声音,请先提前调用 play 方法。
stopAudioBuffer()
音频Track调用才会生效
停止自定义媒体数据的播放
setMaster(isMaster)
boolean
isMaster: 默认所有的 Track 的 master
属性都是 false
, 可以通过该方法设置 master
属性
关于
master
的介绍参见 模式选择
事件列表
release
当 Track
调用 release
方法的时候触发,表示这个 Track
已经被释放。无论是自己手动调用还是 SDK 自动调用都会触发。
track.once("release", () => {
console.log("track", track, "is released!");
})