Stream 对象
Stream
对象是 Stream 模式下的媒体对象,可以用来在页面上播放媒体。
userId
string
类型 标记这个 Stream
是来自哪个用户发布的
isDestroyed
boolean
类型 用于标记这个流是否调用了 release 方法,即表示这个流已经被释放
enableAudio
boolean
类型 是否开启了音频
enableVideo
boolean
类型 是否开启了视频
muteAudio
boolean
类型 是否静音了音频
muteVideo
boolean
类型 是否黑屏了视频
mute 是指保留传输通道的前提下暂时停止数据输出
audioTrack
MediaStreamTrack | undefined
类型 如果这个流开启了音频的话,这个返回原生的音频媒体对象,一般场景不会用到
videoTrack
MediaStreamTrack | undefined
类型 如果这个流开启了视频的话,这个返回原生的视频媒体对象,一般场景不会用到
play(container, muted)
HTMLElement
container:在传入的 container
下创建相应的 <audio>
和 <video>
元素播放媒体。详细参见播放媒体流
boolean
muted: 是否使用静音模式,如果为 true 就不会播放音频,仅播放视频,默认为 false
如果您在还没有与用户任何交互的情况下调用了play方法会导致音频无法播放,详情参考我们的博文:浏览器的自动播放策略的注意事项
getStats()
StatsReport
返回 获取当前 Stream
的传输状态数据,SDK 内部会每秒更新一次。StatsReport
的详细格式见下:
StatsReport {
videoBitrate: number; // 当前视频实时码率
audioBitrate: number; // 当前音频实时码率
videoBytes: number; // 截止目前视频一共发送/接收的字节数
audioBytes: number; // 截止目前音频一共发送/接收的字节数
videoPackets: number; // 截止目前视频一共发送/接收的包数
audioPackets: number; // 截止目前音频一共发送/接收的包数
videoPacketLoss: number; // 截止目前视频一共的丢包数
audioPacketLoss: number; // 截止目前音频一共的丢包数
videoPacketLossRate: number; // 当前的视频丢包率
audioPacketLossRate: number; // 当前的音频丢包率
timestamp: number; //时间戳
}
该方法仅支持 Chrome 和 Firefox
release()
停止从远端或者采集设备拉取媒体数据,释放这个 Stream
取消订阅会自动调用相应
Stream
的release
,但是取消发布不会调用,如果需要请手动调用
onAudioBuffer(callback, bufferSize?)
(buffer: AudioBuffer) => any
callback: 设置这个方法后,SDK 会收集音频的原始 Buffer 数据,然后回调给传入的 callback
函数中。AudioBuffer 是浏览器原生的音频 Buffer 对象。
number
可选
bufferSize: 是指每次回调 Buffer 的长度,默为 4096 位。
bufferSize
必须是 2 的 n 次方且大于 256 小于 16394
stream.onAudioBuffer((buffer) => {
console.log("get audio buffer!", buffer);
});
setVolume(value)
number
value: 设置音量,目前仅对采集到的 Stream 有效(订阅 Stream 无效)
value 是增益值,0 代表静音,2,代表当前声音的 2 倍
getCurrentTimeDomainData()
Uint8Array
返回获取当前 2048 位的时域数据
通常用于音频可视化的数据,可以配合 requestAnimationFrame 和 canvas 实现绘制声波图
getCurrentFrequencyDomainData()
Uint8Array
返回获取当前 2048 位的频域数据
通常用于音频可视化的数据,可以配合 requestAnimationFrame 和 canvas 实现绘制频谱图
getCurrentFrameDataURL()
开启了视频(enableVideo: true)调用才会生效
截帧
DataURL
返回:当视频不存在时返回 "data:,"
setAudioBufferData(buffer, loop)
开启了音频(enableAudio: true)调用才会生效
AudioBuffer
buffer:传入自定义的媒体数据,一个 AudioBuffer
对象
只有在调用 getLocalStream 时, audio
中的 buffer
为 true
的情况下返回的音频 Stream
对象才能调用此方法。表示这个 Stream
不会从麦克风采集媒体数据,而是等待用户手动调用该函数传入媒体数据
注意这里只是指音频模块开始处理这些音频数据,如果想实际听到声音,请先提前调用 play 方法。
loop: boolean
对于传入的 Buffer 是否重复播放,默认为 false
事件列表
release
当 Stream
调用 release
方法的时候触发,表示这个 Stream
已经被释放。无论是自己手动调用还是 SDK 自动调用都会触发。
stream.once("release", () => {
console.log("stream", stream, "is released!");
})