使用JavaScript通过Websockets进行视频流传输

98

如何使用JavaScript最快地流式传输实时视频?使用TCP上的WebSockets协议是否足够快以流式传输像30fps这样的视频?


1
不行:http://groups.google.com/a/chromium.org/group/chromium-html5/browse_thread/thread/bec3ac48af5766b1 - Simon Epskamp
2
我不会太担心流媒体部分,而是关注如何以这种方式渲染视频流。这是否可能? - deceze
1
@Brad:谢谢你的回复。我可能会选择Flash。 @deceze:我不明白为什么不可以。你有一个画布对象,通过绘制每个像素来更新它... - SMiLE
4
以下是翻译的内容:对于那些怀疑网页速度的人们,这些都是使用HTML 5实现的快速帧率和视频帧率的示例:The Wilderness Downtown(Chrome浏览器,视频)http://www.thewildernessdowntown.com/ 和 Quake in HTML 5(Chrome浏览器,帧率)http://techcrunch.com/2010/04/01/google-html5-quake/ 这是一些概念证明。它只会变得更好。如果还没有人跟进市场,很快就会有人跳上这列车并受益。至于IE浏览器呢?我不知道。 - John K
2
谢谢你的示例,John K. - SMiLE
显示剩余10条评论
5个回答

96

WebSockets over TCP协议足够快以流畅播放每秒30帧的视频吗?

是的,可以。看一下这个project。Websockets轻松处理高清视频流。但是,你应该使用自适应流媒体传输。我在here中解释了如何实现它。

目前,我们正在开发一个基于Web的即时通讯应用程序,具有聊天、文件共享和视频/网络摄像头支持。通过一些技巧,我们通过websockets(使用HTML5媒体捕获从网络摄像头获取流)得到了流媒体。

你需要构建一个流API和一个媒体流转换器来控制相关的媒体处理和传输。


4
太好了,谢谢!我想我会尝试一种非自适应的基本视频流实现,查看结果,并相应地进行调整。虽然这是可能的事情让人感到鼓舞!你的教程也非常有帮助。 - SMiLE
1
是的,从一个简单的应用程序开始是一个很好的实践。当你刚开始并且独自一人时,你可能没有办法构建所需的大部分直播技术。祝你好运。 - Wouter Dorgelo
@Mr.Pallazzo,你正在开发这个应用程序是为了什么?是为了商业目的吗?我能否与您联系,了解一下您是如何做到的? - Alistair
@WouterDorgelo,当使用Websockets进行高清流媒体时,您的应用程序性能如何? - quarks
1
我们能否使用Javascript在网页上实时播放CCTV录制的视频? - Shaiju T

1

有没有类似 ws2video.js 项目的东西可以展示它的速度有多快?这篇博客文章提到它会导致5秒的延迟:http://phoboslab.org/log/2013/09/html5-live-video-streaming-via-websockets - Thaddee Tyl

0

回答问题:

使用JavaScript实时流传输视频的最快方法是什么?WebSocket通过TCP是足够快的协议,可以流传输30fps的视频吗?

是的,WebSocket可以用于传输超过30fps甚至60fps的视频。

WebSocket的主要问题在于它是低级别的,您必须处理比仅传输视频块更多的问题。总的来说,WebSocket是视频和音频传输的好工具。


1
那么,WebRTC怎么样呢?它(作为w3c)正在使用UDP连接,并且如果我们有一些数据包丢失,这不会成为问题。另一方面,WebSocket是面向连接的,可能会因为延迟而影响用户体验。 - M. Rostami

0
在传输音频和视频时,WebSocket协议中不存在瓶颈。test

-1

这是可行的,但我不确定我们是否已经做到了。同时,我建议使用类似 SilverlightIIS Smooth Streaming 这样的东西。 Silverlight 是基于插件的,但它可以在 Windows/OSX/Linux 上运行。将来,HTML5 <video> 元素 将成为主流,但那需要一段时间去适应。


感谢您的回复。我同意在这一点上Silverlight和Flash可能是更好的选择。但我对Javascript流媒体很感兴趣,因为它为用户和(视频传输)服务器之间的交互打开了更多的可能性。 - SMiLE
我必须同意Josh的观点。如果你现在迫切需要流媒体,不要选择HTML5。 - Wouter Dorgelo
9
万一还有人在读这个:首先,Silverlight从未支持Linux或移动系统。Linux上的Silverlight支持根本不存在。其次,正如较新的答案所指出的那样,现代浏览器现在非常适合使用HTML5/MSE视频流,几乎所有情况下都应该优先考虑它,而不是任何基于插件的方法。 - ntninja
6
如果有人仍在阅读这篇文章,那么这一天已经到来。求你不要使用Silverlight。 - Zannith
如果仍有人阅读此内容,您可以在此处测试:https://whatwebcando.today/camera-microphone.html 这甚至在苹果设备上也能正常工作! :) - ALZlper

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接