我正在尝试将电视捕获内容从一台计算机本地传输到另一台计算机,但是我的等待时间比我想要的要高。
我的设置是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秒,直到我看到正确的更新。
我想这意味着Elgato和RTMP服务器之间或者RTMP服务器与我的ffplay流之间或者两者之间都存在瓶颈。
我尝试过的事情:
注意:我的RTMP NGINX配置中没有特殊选项。这是一个标准的
live on
,仅此而已。诊断问题出在哪里的最佳方法是什么? 我想要得到它
谢谢!
最佳答案
我的猜测是视频编码和视频解码引入了最大的延迟。假设您压缩到H.264(AVC)-我将关闭B帧。
关于诊断-我将在客户端计算机上运行Wireshark。确保客户端和服务器时钟同步。然后,我将RTMP流中的时间戳与客户端的时钟进行比较。这应该使您对编码延迟有所了解。总延迟减去编码可为您提供解码延迟。您可能会忽略网络缓冲和传输延迟。
这是一个有趣的问题,业界为此提供了一些解决方案,例如http://www.ineoquest.com/。
关于ubuntu - 寻找电视捕获RTMP延迟的瓶颈,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43861479/