我正在尝试将电视捕获内容从一台计算机本地传输到另一台计算机,但是我的等待时间比我想要的要高。

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

它带有捕获/流软件,可让您调整带宽和分辨率。它已设置为以rtmp://192.168.1.200/capture流式传输到本地RTMP。

在接收机上,我尝试使用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,仅此而已。

    诊断问题出在哪里的最佳方法是什么? 我想要得到它
    谢谢!

    最佳答案

    我的猜测是视频编码和视频解码引入了最大的延迟。假设您压缩到H.264(AVC)-我将关闭B帧。

    关于诊断-我将在客户端计算机上运行Wireshark。确保客户端和服务器时钟同步。然后,我将RTMP流中的时间戳与客户端的时钟进行比较。这应该使您对编码延迟有所了解。总延迟减去编码可为您提供解码延迟。您可能会忽略网络缓冲和传输延迟。

    这是一个有趣的问题,业界为此提供了一些解决方案,例如http://www.ineoquest.com/

    关于ubuntu - 寻找电视捕获RTMP延迟的瓶颈,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43861479/

    10-12 20:41