WebRTC 单向视频通话

gha*_*ndi 4 video-streaming sdp webrtc oneway

我们正在公司里摆弄WebRTC。我偶然发现了一件奇怪的事情,我不确定是 WebRTC 中的设计还是我们这边的实现错误。

我们目前有一个简单的 WebApp,它显示在线联系人的联系人列表。现在可以简单地呼叫联系人列表中的任何用户。

呼叫者和被呼叫者可以自由选择共享网络摄像头和/或音频。然后由 GetUserMedia() (MediaConstraints) 尊重。

现在奇怪的事情:客户端(Chrome 65)只有在呼叫者以启用视频开始时才协商视频通话。如果来电者没有提供他的网络摄像头,我们不会让被叫方网络摄像头流回(如果他允许的话)。

但是,当呼叫者在启用他的网络摄像头的情况下发起呼叫并且被呼叫者决定不显示他的时,一切都按预期进行。(只有来电者有直播)。

如果双方同意播放视频,我们将获得双向视频流。

如果这是这样的话,有人有一些内部知识吗?是否可以在不显示您自己的网络摄像头的情况下给某人打电话,但稍后会看到被叫方的网络摄像头?

提前致谢,斯文

Phi*_*cke 6

尝试pc.createOffer({offerToReceiveVideo: true})而不是在没有这些限制的情况下调用它。


Chr*_*itz 3

菲利普的回答非常有效。然而,到目前为止,提议的选项已被标记为旧版,不应再使用。执行此操作的新方法是在创建报价之前将视频收发器添加到连接:

connection.addTransceiver('video');
// this step seems to be optional:
connection.getTransceivers().forEach(t => t.direction = 'recvonly');

connection.createOffer();
Run Code Online (Sandbox Code Playgroud)

感谢https://niccoloterreri.com/webrtc-with-transceivers。有关可选步骤,请参阅https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpTransceiver/direction