代码之家  ›  专栏  ›  技术社区  ›  stevendesu

WebRTC视频在本地工作,但不能远程工作

  •  1
  • stevendesu  · 技术社区  · 8 年前

    https://github.com/stevendesu/webrtc-failure

    我正在学习WebRTC,长期以来我想做一些有趣的事情,但现在我开始做的很简单:从一台电脑发送视频到另一台电脑。不幸的是,这失败了。这是我到目前为止设置的内容。。。

    1. 在我自己的开发服务器上安装 coturn 充当眩晕/转身服务器
    2. 我创建了两个页面: broadcast.html watch.html . 前者创建媒体流,并(使用Socket.IO)将连接细节发送到信令服务器。后者从信令服务器获取连接详细信息,并尝试监视流

    运行后 npm install 你可以 npm start localhost:2017 .

    那么这是什么 作品 :

    • 打开后 广播html 系统会提示您输入广播ID。您可以在此处键入任何内容,但我通常只执行递增数字-因此我从“1”开始
    • 在输入广播ID并进行短暂延迟后,您会在屏幕上看到您的网络摄像头提要。查看控制台,您可以看到已与套接字交换了多条消息。IO服务器
    • 如果你打开 看html 在新选项卡中,系统会提示您输入广播ID。请输入与之前相同的ID
    • 输入ID后,稍加延迟,您将在新选项卡上看到网络摄像头提要。查看控制台,您可以看到早期的ICE候选人和报价详细信息是通过套接字发送的。IO服务器和观察者给出了回答
    • 返回广播选项卡,您可以验证是否已接收并处理了答案。现在已建立连接
    • pc 变量在全局范围内(对等连接),因此在控制台中,您可以建立RTCDataChannel并直接在选项卡之间发送消息(绕过Socket.IO服务器)

    这是什么 工作:

    • 看html 佩奇实际上可以看到广播。它不是“广播”,只是点对点,一旦建立了一个连接,未来的连接就会失败
    • 我的问题 :如果我打开 看html 从不同的计算机或设备(在同一网络或不同的网络上)播放视频时,视频永远不会播放

    在后一种情况下,如果您查看控制台,您将看到报价和ice候选人被交付给观察者,观察者生成答案,答案被发送回广播公司,观察者看到媒体流添加到对等连接。该媒体流被转换为blob URL,并被指定为视频元素的源。

    我正处于一个不知道如何进步的阶段。我不知道为什么视频没有出现。

    1 回复  |  直到 8 年前
        1
  •  2
  •   Philipp Hancke    8 年前

    你的手表。js不发射ice候选者。这是一个可能的原因。如果这没有帮助,你可以使用chrome://webrtc-internals要了解发生了什么,请参见 here 了解如何解释正在发生的事情。

    https://webrtc.github.io/samples/src/content/peerconnection/pc1/ 是一个相当简单的现代WebRTC代码示例,使用承诺和其他东西,例如使用srcObject而不是不推荐的URL。createObjectURL。