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。
我们公司正在摆弄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。