从SDP中删除= ssrc行时,是否可以通过Chrome的WebRTC获得单流音频(或视频)?
我尝试过滤掉a = ssrc行(使用下面的代码),但单流音频不起作用。我也尝试了单流视频和重命名,而不是删除具有相同结果的行。我修改了提议并回答了SDP。有趣的是,当你尝试发送带有音频和放大器的SDP时,这种过滤有效。视频 - 音频(仅)将在这种情况下工作。但是我在我们的应用程序中遇到了这种情况下重新协商的问题,所以这可能不是一个有效的解决方案。
您可以在此仓库中查看单流音频/视频的最小示例:https://github.com/Tev-work/webrtc-audio-demo。
如果可能的话,您能否提供带有工作音频的最小代码示例?最好使用上面的repo, modifySdp 函数(在 public / client.js 中)应该做什么?
目前,它使用以下代码修改sdp:
sdp = sdp.replace(/a=ssrc/g, 'a=xssrc');
sdp = sdp.replace(/a=msid-semantic/g, 'a=xmsid-semantic');
sdp = sdp.replace(/a=mid/g, 'a=xmid');
sdp = sdp.replace(/a=group:BUNDLE/g, 'a=xgroup:BUNDLE');
如果不可能,你知道这个限制是否已经在某个地方正式陈述(请链接),或者它在某些时候变得不可行?它似乎在以前工作(在M29附近,请参见这里的评论https://bugs.chromium.org/p/webrtc/issues/detail?id=1941 - 没有提到这不应该起作用)。
动机:我们有时会通过SIP PBX发送SDP,这有时会过滤掉SSRC线路。在这种情况下支持多个流显然是不可能的(可能有一些服务器端黑客流?),但至少支持这种情况下的仅音频对我们有用。
答案 0 :(得分:0)
这仍然是可能的,即使有一些副作用,如(遗留)getStats无法识别流,请参阅(此错误)[https://bugs.chromium.org/p/webrtc/issues/detail?id=3342]。
您尝试的是在调用setLocalDescription之前删除a = ssrc行。这可能不会起作用。如果要模拟场景,请在使用SDP调用setRemoteDescription之前尝试删除它们。