使用NodeJS进行音频和视频会议



我想构建一个网络应用程序,让两个对等方使用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链接并传输到其他客户端。

  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插件元素之外渲染它。在你所指的垫片的情况下,他们将每个帧从flash插件复制到HTML,并在自述中提到,这在计算上太过庞大,无法用于实时视频
  • flash使用不同的协议(RTMP,RTMFP,..)和来自webrtc的编解码器,并且它们不能相互互操作。你需要分别维护两者,或者有一个复杂的两用基础设施来处理它。例如,OpenClove就是一家提出这种两用基础设施的供应商

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

我们提出了这样一个插件,免费(无成本)和所有(非特定于供应商)这里

无论您做什么,都需要浏览器上的WebRTC支持("无插件")。因此,"它将更兼容所有浏览器"是一个没有意义的问题,因为浏览器支持

最新更新