WebRTC 单向视频通话

WebRTC one-way video call

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

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

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

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

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

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

任何人都有一些内部知识,如果这意味着是这样的话?不显示自己的网络摄像头就可以打电话给某人,但后来看到被叫方的网络摄像头吗?

提前致谢, 斯文

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

Philipp 的回答很有效。但是,到目前为止,建议的选项是 marked legacy,不应再使用。这样做的新方法是在创建报价之前将视频收发器添加到连接中:

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

connection.createOffer();

归功于 https://niccoloterreri.com/webrtc-with-transceivers. For the optional step, see https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpTransceiver/direction