是否可以在 WebRtc 中组合媒体 tracks/streams

Is it possible to combine media tracks/streams in WebRtc

我想分享两个网络摄像头,但我不想协商两组信号处理过程(SDP、ICE,所有这些爵士乐)。在流向另一个用户之前,我有什么办法可以将这两个流合并为一个流,或者我一直在为我想添加的任何其他流设备进行双重协商。如果这很重要,我也正在与 chrome 合作。

您可以将多个流添加到对等连接,只需对每个流调用 pc.addStream。

请注意,当前在 SDP 中发出信号的方式在 Chrome 和 Firefox 之间不兼容。

正如其他答案中所建议的那样,webRTC 允许在 PeerConnection 中发送多个轨道(即 "channel" 以建立连接)。添加多个流很常见,例如屏幕共享和网络摄像头。

因此,您不需要合并这些流,它们将由另一个点单独接收。这样,接收方应用程序就可以根据需要自由显示它们。

关于SDP的问题,可以看一下https://webrtchacks.com/sdp-anatomy/,SDP中各个字段的图形解释,对故障排除很有帮助。

有一种新方法可以实现这一点。看看replaceTrack这是一个新东西,最神奇的是:它不需要重新协商,它只是直接替换音轨或视频或音频:

// addTrack to remote peer, track does not have to be within stream1/2, but remote will receive that
rtpSender = RTCPeerConnection.addTrack(track, stream1, stream2); 
// use the rtpSender to replace remote track
rtpSender.repalceTrack(track);