Webrtc:如何在不提前知道号码的情况下协商曲目?

Webrtc:如何在不提前知道号码的情况下协商曲目?,webrtc,sdp,Webrtc,Sdp,我试图通过WebRTC中的单个RTPeerConnection实现多个视频流。我知道这在浏览器中有不同的支持,但在最新的Chrome和Firefox中,一切都在运行。无论如何,我目前能够通过使用RTPeerConnection.AddTransponser()在发送SDP优惠之前添加多个视频曲目,使多个视频曲目正常工作。我的问题是:浏览器可能无法提前知道远程设备上有多少视频频道可用。目前,如果我在浏览器和远程设备上设置相同数量的收发器,一切正常,但如果存在差异,浏览器在遇到SDP应答时会抛出一个

我试图通过WebRTC中的单个RTPeerConnection实现多个视频流。我知道这在浏览器中有不同的支持,但在最新的Chrome和Firefox中,一切都在运行。无论如何,我目前能够通过使用RTPeerConnection.AddTransponser()在发送SDP优惠之前添加多个视频曲目,使多个视频曲目正常工作。我的问题是:浏览器可能无法提前知道远程设备上有多少视频频道可用。目前,如果我在浏览器和远程设备上设置相同数量的收发器,一切正常,但如果存在差异,浏览器在遇到SDP应答时会抛出一个错误,该应答的曲目数量与它提供的不同。有没有办法通过WebRTC协议协商,或者我需要设置某种外部API来报告可用曲目的数量?

对于2个视频曲目,只需使用常规的RTPeerConnection.addTrack即可:

var pc=new rtpeerconnection()
...
const webcamStream=wait navigator.mediaDevices.getUserMedia({audio:true,video:true});
const screenStream=wait navigator.mediaDevices.getDisplayMedia();
webcamStream.getVideoTracks().forEach((track)=>pc.addTrack(track));
screenStream.getVideoTracks().forEach((track)=>pc.addTrack(track));
使用上述方法,
pc.createOffer
生成一条带有3个m=字段的SDP offer消息;1个用于音频,2个用于视频。然后在另一端,当I
createAnswer
时,它会使用这3种媒体生成一条正确的SDP应答消息,并建立连接

如果您想要更多的曲目,我不确定上面代码的行为,但我相信这将取决于客户端的webrtc实现

也就是说,我认为解决这个问题最安全的方法是包括在发送报价时有多少视频曲目通过您的信号服务器传入。然后,您只需在收到收发机时添加所需次数的收发机即可