我正在寻找一些关于如何使用标签流式传输具有相对较低延迟(~2s)的实时视频流的建议。我已经看到了一些类似于此问题的其他问题,例如this和this,但两个问题都没有真正回答我的问题。第一个是假设内容消费者不在现场。第二个也似乎做出了这个假设。
我正在寻找技术,图书馆或任何真正实现这一目标的建议。我已尝试使用nginx-RTMP从视频设备接收流,然后使用HLS将其发送到浏览器。然而,我能够实现的最低延迟是~4s。我还没有和DASH一起工作,我发现this论文描述了在类似的设置中使用它来实现低延迟,但在开始尝试之前我想要一些意见。
我知道gstreamer这样的解决方案确实存在,并且我使用GPAC工具测得的延迟大约为200毫秒但是用户下载的东西并不是我能追求的选择(局域网设置的网站赢了#39) ;有互联网,手机或其他方式)。
编辑1:
我根本没有大规模工作。最多将有200个用户,所有用户都将通过wifi连接到局域网。我需要低延迟的原因是项目的目标是为用户提供更好的事件视图。实际的观点非常糟糕。
答案 0 :(得分:1)
使用任何分段分发方法(HLS,DASH或类似方法)都无法实现低延迟。这些协议的本质是将数据分成相对较大的部分。使用HLS的4秒非常低,并且有很小的块你有相当多的开销......浪费带宽而不是真正的HLS和DASH是好的。
第一个是假设内容消费者不在现场。
我的答案(https://stackoverflow.com/a/37475943/362536)并不认为消费者不会在您的网站上......根本不是这样的。我建议您在不需要低延迟的情况下利用YouTube并嵌入他们的观众,从而节省大量资金。
如果所有的观看者需要低延迟视频才能使其正常工作,那么您将不得不在服务器端变得狡猾。如果你告诉我们你正在使用什么样的规模,也许我们可以提出更具体的建议。既然你没有,那就让我们专注于客户端的可能性。
WebRTC是最好的选择之一。整个WebRTC堆栈中的所有内容都以低延迟为基础构建。使用WebRTC,您可以在正常操作中获得这些亚秒级延迟。请注意,对于今天支持WebRTC的流媒体服务器来说,这并不是很好的选择。
您还可以使用Media Source Extensions和Web Sockets。这为您提供了相当多的控制,并允许非常快速的数据流传输到客户端,延迟成本略高。这样做要比实现支持媒体流的服务器端WebRTC容易得多。
我强烈建议您再次阅读我对其他问题的回答。这里有很多考虑因素......请确保这种低延迟实际上值得降低质量和所涉及的财务成本。这种情况很少发生,特别是对于成千上万的用户或更多用户而言。