WebRTC设置track.enabled=false时,Peer端未收到mute事件的问题咨询
WebRTC轨道禁用后的Peer端事件问题解答
Peer端会不会触发mute事件?
不会。mute和unmute事件是用来响应轨道源本身是否有媒体数据输出的——比如摄像头被系统权限禁用、麦克风硬件故障这类情况。而你设置sentVideoTrack.enabled = false只是本地主动暂停了数据发送,轨道源本身还是正常工作的,所以Peer端的轨道不会触发mute事件。
Peer端该监听什么事件?
当本地把轨道enabled设为false后,Peer端对应的MediaStreamTrack的muted属性会变成true,但不会自动触发事件。这里有几种可行的处理方式:
- 监听媒体流的
active事件:如果这条轨道是对应流里唯一的活跃轨道,禁用后流会触发inactive事件;但如果流里还有其他活跃轨道,这个方法就不适用。 - 轮询
track.muted属性:虽然不算最优解,但可以定期检查这个属性的变化,以此判断轨道状态。 - 用信令通道发自定义通知:最可靠的方式是,本地在设置
enabled = false的时候,通过你的WebRTC信令服务器给Peer端发一条自定义消息,直接通知对方轨道状态变更,Peer端收到消息后再处理对应的UI或逻辑。
内容的提问来源于stack exchange,提问作者Tobic
相关产品推荐
相关产品推荐

