通过服务器将视频从一个客户端传输到另一个客户端

时间:2012-03-31 21:56:58

标签: javascript html5 sockets node.js websocket

我正在尝试将视频流从一台笔记本电脑发送到另一台笔记本电脑,并通过服务器进行路由。让我们称他们为笔记本电脑A向笔记本电脑B发送视频流。

在笔记本电脑A上,我没有特别要求我如何收集视频流,但我认为会有某种NodeJS服务器运行,它会向服务器打开一个Web套接字以发送回视频流。

在笔记本电脑B上,我想用html5视频标签在浏览器中呈现视频。

有没有人对如何在技术上做到这一点有任何建议?

我不太了解的差距是: *如何从笔记本电脑A向服务器(也可能运行NodeJS)发送流 *如何提供可以插入笔记本电脑B上的视频标签的视频流

谢谢!

1 个答案:

答案 0 :(得分:0)

尝试使用javscript / html5实际上是选择错误的技术。您应该查看客户端上的Flash(和RTMP),并使用任何免费(开源)Flash Media Server替代方案。 (您必须拥有Flash或Silverlight等插件才能访问网络摄像头数据 - 您的网络浏览器/ javascript无法访问网络摄像头。)

node-rtmp是一个用Node.JS编写的RTMP协议服务器,可能符合您的利益。我自己没有测试过node-rtmp,但它可以作为你的起点。如果它不适合您,那么还有多个其他RTMP服务器项目。 (我经常使用Red5,这是在java中。)

在计算机A上,您需要一个Flash应用程序来获取您的网络摄像头数据并将其发送到RTMP服务器。有一些开源项目已经这样做了,例如: https://github.com/AF83/webcam-streaming Red5中还包含此类Flash应用程序的示例代码,也可能包含在其他RTMP服务器项目中。

您无法使用HTML视频标记在计算机B上显示RTMP流。如果是RTMP,则必须使用Flash播放器。可以将RTMP数据转换为其他内容,以便可以使用HTML视频标记进行显示。它可能(可能)可以使用开源软件的组合,如Red5,rtmpdump,ffmpeg和一些http黑客来使它超过http。但是,我真的会考虑是否值得工作,而且只是因为没有运行Flash应用程序而麻烦...

在计算机B上,我会使用jwplayer(或任何jwplayer克隆)来播放RTMP流。