webRTC删除媒体跟踪不会生成重新协商,也不会停止媒体

时间:2016-06-09 02:07:28

标签: android webrtc sdp libjingle

使用原生Android webRTC应用程序并尝试从包含组合音频/视频的媒体流中删除视频轨道(例如,localMS.addTrack(peerConnectionFactory.createVideoTrack(" ARDAMSv0",videoSource) );和localMS.addTrack(peerConnectionFactory.createAudioTrack(" ARDAMSa0",audioSource));),视频流仍然被发送到远程端,并且没有生成' onrenegotiation&#39 ;回调。

关于删除跟踪与先前的删除流功能(例如,请参阅https://bugs.chromium.org/p/webrtc/issues/detail?id=5265#c4https://bugs.chromium.org/p/webrtc/issues/detail?id=2136)有很多讨论,此外,还讨论了一些解决方法,例如删除流,然后删除在创建新商品之前,从流中跟踪并再次添加流。在W3C标准中(见http://w3c.github.io/mediacapture-main/#dfn-settings),似乎没有真正的迹象表明应该进行重新谈判。

我想解决的问题如下: 这是删除视频轨道的正确方法(即,在媒体流上调用删除轨道)吗?

为什么不进行onrenegotiation?如果没有发生新报价何时发出?

为什么调用removestream实际上不会阻止流传输? (新的报价本身的传输似乎不会对流的传输产生任何影响,只是接收者在该媒体组件的sdp中只有recv_only)。

对此任何想法都会非常感激,我会发布我遇到的任何更新以及解决后的工作解决方案。

感谢

1 个答案:

答案 0 :(得分:0)

不确定Android WebRTC,但在浏览器WebRTC(应该类似)中,您需要在轨道上调用stop()来实际停止它。或者完全关闭连接。

首先添加曲目或新流,然后创建优惠并开始重新协商过程 - 它不会自动启动。