找到电视上的瓶颈捕获RTMP延迟

Mat*_*ick 5 ubuntu nginx rtmp video-streaming live-streaming

我正试图在本地将电视捕获从一台计算机传输到另一台计算机,但我的延迟高于我想要的.

我的设置是12GB,i5 x4 3.2ghz,Geforce 970,带有Elgato HD60 Pro采集卡.该机器正在运行安装了Nginx + RTMP(https://github.com/arut/nginx-rtmp-module)的Ubuntu实例.

它配备了捕获/流媒体软件,允许您调整带宽+分辨率.它设置为流式传输到本地RTMP rtmp://192.168.1.200/capture.

在我的接收机器上,我尝试过使用VLC(开放式网络)和FFPLAY(ffplay -fflags nobuffer rtmp://192.168.1.200/capture -loglevel verbose).

FFPLAY的延迟比VLC低,考虑到nobuffer标志似乎是有意义的.然而,在我看到正确的更新之前,它仍然是大约2-3秒.

  • 捕获预览的响应时间几乎是立即的(可能约100ms)
  • 来自FFPLAY流的响应时间在2-3秒之间

我想这意味着Elgato和RTMP服务器之间或者RTMP服务器和我的ffplay流之间存在瓶颈.

我试过的事情:

  • 从捕获软件增加1.00到8.00之间的Mbps
  • 从最高到最低降低捕获质量
  • 将捕获的分辨率从1080降低到720,达到标准
  • 将帧速率从60fps降低到30fps
  • 使用FFPLAY代替VLC

注意:我的RTMP NGINX配置中没有特殊选项.这是一个标准live on,而且几乎就是这样.

诊断问题的最佳方法是什么?我想得到它<1s.

谢谢!

小智 0

我认为在你的情况下瓶颈是视频处理。通常,软件视频编码不是那么快。如果你降低视频质量、比特率等,你就会增加更多的处理,只会增加延迟。如果您需要将视频发送到距离源不太远的地方,只需使用 HDMI 等视频接口即可。它将按原样传递视频(无需处理)。如果您确实对网络流式传输感兴趣,请考虑使用特殊的硬件编码器设备,例如 PCI 或外部设备。这些设备具有嵌入式硬件视频编码器,不使用 CPU 进行视频处理。通常使用硬件编码器延迟小于 1 秒,但这仍然是正确的说法:“更多视频处理 = 更多延迟”