代码之家  ›  专栏  ›  技术社区  ›  Sven Eppler

WebRTC单向视频通话

  •  6
  • Sven Eppler  · 技术社区  · 6 年前

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

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

    呼叫者和被呼叫者可以自由选择共享网络摄像头和/或音频。然后GetUserMedia()(MediaConstraints)会遵守这一点。

    现在有一件奇怪的事:客户端(Chrome 65)只有在调用者启动视频时才协商视频通话。如果呼叫者没有提供他的网络摄像头,我们不会将被呼叫者的网络摄像头流回(如果他允许的话)。

    但是,当呼叫者启动网络摄像头时,被呼叫者决定不显示自己的摄像头,一切正常。(只有调用者有实时流)。

    如果双方都同意播放视频,我们就可以使用双分割视频流。

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

    提前感谢, 斯文

    2 回复  |  直到 6 年前
        1
  •  6
  •   Christian Fritz    3 年前

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

        2
  •  0
  •   Christian Fritz    3 年前

    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 。有关可选步骤,请参阅 https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpTransceiver/direction

    推荐文章