【问题标题】:Audio and video conference with NodeJS使用 NodeJS 进行音频和视频会议
【发布时间】:2014-10-24 08:05:58
【问题描述】:

我想构建一个 Web 应用程序,让两个对等方使用带有 HTML5 的视频和音频流并且没有插件(IE 除外,我假装使用 getUserMediajs 来使用 Flash 后备)来看到和听到对方。

我也想使用 NodeJS 传输该数据,但我不知道从哪里开始。举个例子:

节点 A 节点 JS 节点 B

我对这种 Peer 2 Server 2 Peer 方法感兴趣,而不是像 PeerJS 这样的 Peer 2 Peer 解决方案,因为:

1) 我认为它会更兼容所有浏览器。 如果这不完全正确,请告诉我

2) PeerJS(我不感兴趣)在某些情况下依赖于黑魔法 STUN-TURN-ICE 信号。我在某处读到只有 70% 的连接适合这种传输,而我无法承受 30% 的损失。再次让我知道这是否不完全正确

我已经玩过socket.io 并且知道 getUserMedia() 的概念来获取用户的网络摄像头,但不知道如何将其与 socket.io 链接并将其传输到其他客户端。

【问题讨论】:

  • 如果您打算在 IE 上使用 Flash,您将需要某种媒体桥来让流通过(因此在这种情况下不是 Peer2peer)。此外,70% 的案例只需要 STUN。这个百分比是在谈论转弯的必要性。几乎所有情况都需要 NAT 遍历,这取决于类型。
  • 感谢您的反馈。那么,总有(98% ~ 99%)的机会使用 STUN 或 TURN(30% 的连接)我们可以建立 P2P 连接?
  • Stun 将在大约 70% 的时间内用于 nat 遍历。同样,在不支持 WebRTC(即 IE)的浏览器中,您将不得不中继流量(解密、正确编码等)。

标签: html node.js sockets video-streaming webrtc


【解决方案1】:

无论您做什么,都需要浏览器上的WebRTC 支持(“无插件”)。因此,“它将与所有浏览器更兼容”是一个有争议的问题,因为browser support

【讨论】:

  • 你说得对,我应该提到我计划使用getUserMediajs 让 IE 使用 Flash 回退,然后以某种方式发送该数据使用NodeJS 到另一个节点。
  • 所以本质上,您将在自定义后备和 PeerJS(或您选择的任何 webrtc 解决方案)之间建立沟通桥梁。愉快的源代码浏览:)
【解决方案2】:
  1. 浏览器兼容性与添加服务器端组件无关。你可能是p2p,也可能是p2s2p,如果你发送的内容没有被接收浏览器识别,那就不行了。

  2. ICE 是 webrtc 的强制性,你不能没有,句号。默认情况下,您只能连接到同一网络中的计算机(主机候选人)。如果您提供 STUN 服务器,您将能够在 70% 的情况下一起连接,在企业环境中就更少了。 http://webrtcstats.com/webrtc-revolution-in-progress/ 有来自一些供应商的最新统计数据。您可以看到,对于社交网站,截至 2014 年 6 月,92% 的呼叫可以使用简单的 STUN 通过防火墙和 NAT。剩余的被叫需要通过 TURN 服务器进行中继。你有很多免费的 STUN 服务器提供商,这是你应该使用的最低限度。

  3. 用于桌面 IE 和 Safari 的 webRTC。

虽然 Flash 回调很有趣(阅读,简单),但它们暂停了两个问题:

  • 它们不会生成与对等连接或 HTML5 兼容的视频流。不兼容对等连接意味着您无法发送图像或视频,而只能在本地使用。与 HTML5 不兼容意味着您不能在元素中使用生成的图像和视频,并且无论如何您都没有简单的方法在 Flash 插件元素之外呈现它。对于您所指的 shim,他们会从 flash 插件中复制每一帧到 HTML,并且他们在自述文件中提到,这计算量太大,无法用于实时视频。
  • flash 使用不同的协议(RTMP、RTMFP、..)和来自 webrtc 的编解码器,它们不能互操作。您需要单独维护两者或拥有复杂的双重用途基础架构来处理它。例如,OpenClove 就是提出这种双重用途基础设施的供应商。

另一个解决方案是在桌面 IE 和 Safari 上安装一个 webRTC 插件(不是 flash),它实现了“纯”webRTC。在这种情况下,您可以直接与 chrome、firefox、opera 和任何其他原生实现 webRTC 1.0 的浏览器进行互操作

我们提出了这样一个插件,免费(免费)和所有人(不是特定于供应商)here

【讨论】:

    猜你喜欢
    • 2021-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-28
    • 2014-05-22
    相关资源
    最近更新 更多