我希望与一群朋友一起主持一个现场游戏流,并向一个流行的流媒体服务广播。
我希望4个参与者之间的最小延迟和最大同步。我已经在我的端设置了一个rtmp媒体服务器(使用node-media-server),参与者可以通过OBS发送他们捕获的视频,我已经为他们提供了如何在他们的端实现最低延迟的说明。
我还设置了一个关于不一致的聊天服务器。
因此,现在我有4个rtmp视频流被传送到我的媒体服务器,并通过discord组合音频馈送。
我计划编写一个简单的web应用程序,它将包含网格中的4个视频元素,以及用于我的目的的控制面板(每个视频的音量、通知、音效等),然后我在OBS中捕获它们,并将其发送到一个名为Twitch的流行流媒体服务(您可能已经听说过它)。
我最初尝试使用一个名为flv.js的库,但它有几个问题。在第一次加载视频流时,当视频流似乎稳定下来时,会有几秒钟的卡顿,偶尔会缓冲一段时间,慢慢地使视频流与其他视频流不同步。浏览器中的视频比我接收的视频晚了大约3秒(我通过rtmp媒体服务器向自己发送视频流)。不是一个大问题,但最好是我想要尽快显示传入的视频,以对齐不一致的馈送。
然后,我尝试更改媒体服务器以输出HLS,并为浏览器使用了一个名为hls.js的库(适当地)。虽然这是非常稳定的,没有卡顿,但当它在浏览器中播放的延迟是巨大的,大约20-30秒。
进一步的研究使我相信rtmp或hls协议在回放过程中总是有很大的延迟。
忽略远程视频源-让我们假设我的rtmp媒体服务器上有4个本地媒体源……这一切都发生在我的PC本地,所以不需要考虑网络延迟。
如何在最低延迟的浏览器中一次播放这些本地视频源?
发布于 2020-11-24 10:15:43
HLS是分段的..。音频/视频录制几秒钟,然后上传,然后下载,缓冲和播放。这本质上具有很高的延迟。
RTMP可以具有更低的延迟,但正如您所看到的,它不是为低延迟而设计的。它不会试图迎头赶上,靠自己生存。
WebRTC是您想要使用的技术。最简单的方法是在其他编码器上使用基于web的捕获。(现在市面上有一些售价11美元的HDMI采集USB加密狗,这让这件事变得更容易了。)然后,到处都是web页面,整个WebRTC堆栈都会为您保持较低的延迟。
https://stackoverflow.com/questions/64972422
复制相似问题