Android webRTC remove media track不会生成重新协商,也不会停止媒体

Android webRTC remove media track不会生成重新协商,也不会停止媒体,android,webrtc,sdp,libjingle,Android,Webrtc,Sdp,Libjingle,使用本机Android webRTC应用程序并尝试从包含组合音频/视频的媒体流中删除视频曲目(例如,localMS.addTrack(peerConnectionFactory.createVideoTrack(“ARDAMSv0”,videoSource));和localMS.addTrack(peerConnectionFactory.createAudioTrack(“ARDAMSa0,audioSource)),视频流仍被发送到远程端,并且没有生成“onrenegotiation”回调

使用本机Android webRTC应用程序并尝试从包含组合音频/视频的媒体流中删除视频曲目(例如,localMS.addTrack(peerConnectionFactory.createVideoTrack(“ARDAMSv0”,videoSource));和localMS.addTrack(peerConnectionFactory.createAudioTrack(“ARDAMSa0,audioSource)),视频流仍被发送到远程端,并且没有生成“onrenegotiation”回调

关于removetrack与之前的removestream功能(例如,请参阅或)的讨论很多,此外,还讨论了一些解决方法,例如删除流,然后从流中删除曲目,并在创建新的报价之前再次添加流。在W3C标准中(请参阅),似乎没有真正的迹象表明应该进行重新协商

我试图解决的问题如下: 这是删除视频曲目的正确方法吗(即在mediastream上调用removetrack)

为什么不进行重新谈判?如果没有,什么时候应该发出新的报价

为什么调用removestream实际上并没有阻止流的传输?(新要约的传输本身似乎不会对流的传输产生任何影响,前提是接收方仅在该媒体组件的sdp中具有recv_)

如果您对此有任何想法,我将不胜感激。我将发布我遇到的任何更新,并在解决问题后发布有效的解决方案


谢谢

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


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

谢谢。在Android native webrtc(JNI MediaStreamTrackInterface)中,我们启用/禁用了一个曲目(但没有停止),这将导致向远程发送正常或黑色流。如果我禁用该曲目,然后调用remove(删除),我还不确定该曲目是否已删除,因为黑屏仍然显示–但将进行测试和更新)。关于所需的谈判,根据W3C规范(第4.8节),似乎is应在轨道上添加或停止。我不清楚为什么删除曲目实际上不会导致从流中删除曲目,而不管是否停止。此外,将升级到最新的libjingle版本(目前从2015年8月开始),在该版本中,这可能会得到修复-将需要几天时间,因为整个WebRTC中的多个更改确实有帮助?