局域网下低延迟的HTML5视频

3
我正在寻求有关如何使用

唯一接近的是WebRTC。否则,您需要使用应用程序而不是浏览器。 - szatmary
Wifi,但我认为我已经解决了这个部分。我将有大约10个小型服务器,每个服务器都连接4个mesh aps,它们将全部有线连接到一个中央服务器上,该服务器将处理发送到它的视频的编码,并向所有较小的服务器发送最终的视频流。我正在使用一堆ubiquiti aps,它们显然可以做到这种类型的工作,并限制其广播强度以鼓励用户设备迁移到更好的ap。或者我可能一无所知。无论如何,这更多是一个私人项目,而不是必须采用绝对最佳方式完成的东西。 - Curtis Bezault
这并不是说我不欣赏在合理预算范围内最佳实践的建议。例如,您会如何用20-40人来做到这一点? - Curtis Bezault
好的,所以在浏览器中没有办法接收UDP组播,除非使用某种额外的插件,但我真的做不到。 - Curtis Bezault
是的,这是我要使用 RTP 直接流式传输到一些投影仪之外的浏览器方面的一个个人项目。 - Curtis Bezault
显示剩余4条评论
1个回答

4
任何分段分发方法(如HLS、DASH或类似方法)都无法实现低延迟。这些协议的本质是将数据划分为相对较大的块。使用4秒的HLS已经非常低延迟了,而且这样小的块会带来很多开销......浪费带宽,并不是HLS和DASH擅长的。

第一种情况是基于内容消费者不在现场的假设下工作。

我的回答(https://dev59.com/Y1oU5IYBdhLWcg3wcmq8#37475943)并没有假设消费者不在您的网站上......事实并非如此。我建议利用YouTube并嵌入其播放器,以节省大量资金,当不需要低延迟时。

如果所有观众都要求低延迟视频才能使其正常工作,那么您需要在服务器端进行巧妙处理。如果您告诉我们您正在处理的规模,也许我们可以提供更具体的建议。既然没有提供,让我们专注于客户端的可能性。

WebRTC是最好的选择之一。整个WebRTC堆栈中的所有内容都是为低延迟而构建的。使用WebRTC,您可以在正常操作中获得那些亚秒级的延迟。请注意,今天支持WebRTC的流媒体服务器选择并不多。

您还可以使用Media Source Extensions和Web Sockets。这样可以使您对数据具有相当大的控制权,并以略高的延迟成本为代价,快速将数据流式传输到客户端。这比实现自己的支持媒体流的服务器端WebRTC要容易得多。

我强烈建议再次阅读我的其他问题上的回答。这里有很多考虑因素......一定要确保这种低延迟实际上值得降低质量和涉及的财务成本。这很少发生,特别是对于成千上万的用户。


嗨Brad,感谢你抽出时间回答我的问题。我重新阅读了你的答案,现在更清楚你所说的是一个比我最初理解的更为普遍的设置。问题涉及到的规模可能是我立即想到用户不在局域网上的原因。我已经根据你指出的一些细节更新了我的问题。同时,如果可能的话,我希望所有用户都能够拥有低延迟。 - Curtis Bezault
@CurtisBezault 我有完全相同的需求。WebRTC 不可接受,因为我们需要在需要时倒回并返回到实时状态。标准的 DASH 播放器和带有 2 秒片段的 nginx rtmp 插件中,最小值是 4 秒。我看到了那篇关于低延迟 DASH 的论文,并考虑修改播放器 JavaScript 代码以更早地加载片段,并且不一直刷新 mpd。如果在片段可用之前请求片段,则我会在服务器端等待并在其可用时返回。我对 DASH 还很陌生,不知道这是否会起作用。有任何意见吗? - Olga Khylkouskaya
1
@OlgaKhylkouskaya 没有理由不使用不同的技术来实现应用程序的倒带/点播部分。但如果您想要一个统一的系统,那么Web套接字和媒体源扩展是最好的选择。 - Brad
谢谢@Brad,我可以使用不同的技术进行倒带(这实际上是备选方案:)你所说的Web套接字+媒体源扩展是什么意思?类似于WebRTC吗?您能否提供有关要使用的源(RTP、任何网关...)的更多详细信息?我们必须使用h264编解码器。 - Olga Khylkouskaya
@OlgaKhylkouskaya WebSockets和媒体源扩展实际上可以比Flash提供更低的延迟。通过IP摄像机流式传输h.264视频到Unreal Media Server的实时示例:打开其演示网页上的HTML5播放器和Flash播放器,比较延迟:http://umediaserver.net/umediaserver/demos.html - user1390208

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