我试图用Windows上的ffmpeg 3.2.2从一个5MP USB摄像头上捕捉和播放视频。下面是我使用的命令行:
ffmpeg -f dshow -video_size 320x240 -framerate 30 -i video="HD USB Camera" -vcodec libx264 -preset ultrafast -tune zerolatency -g 60 -f mpegts udp://192.168.1.100:10000我的流的目的地(同一子网上的Ubuntu框)正在通过以下方式运行ffplay:
ffplay -i udp://127.0.0.1:10000这是可行的,但视频流似乎被延迟了8-10秒。我的理解是,在接收到i帧之前,目标无法开始显示流,因此我尝试指定GOP值为60,认为这将导致每2秒插入i帧(@ 30 FPS)。
正在进行转码的Windows机器运行的是i7-3840QM @ 2.80GHz,内存为32 GB。FFmpeg似乎使用很少的CPU (比如2%),所以它看起来不像是CPU绑定的。作为一个测试,我尝试摄入一个MP4文件而不执行任何转码(ffmpeg -re -i localFile.mp4 -c copy -f mpegts udp://192.168.1.100:10000),但是在Ubuntu系统上显示流还需要几秒钟的时间。
另外,我还在评估Wowza流媒体引擎服务器的试用版本,当我将ffmpeg流定向到Wowza时,在Wowza测试播放器开始播放之前,我会得到相同的8-10秒的延迟。不管它的价值是什么,一旦流开始播放,它似乎运行良好(除了事实,一切都“落后”了几秒钟)。
我刚开始使用视频流,所以我可能在这里遗漏了一些显而易见的东西,但谁能告诉我是什么原因导致了这种延迟,或者建议我如何进一步解决这个问题?谢谢!
发布于 2017-02-22 19:54:11
尝试设置以下值:
分析整数(输入) 指定要分析多少微秒来探测输入。更高的值将能够检测到更准确的信息,但会增加延迟。它默认为5,000,000微秒=5秒。 正整数(输入) 设置探测大小(以字节为单位),即要分析的数据大小以获取流信息。更高的值将允许检测更多的信息,以防信息分散到流中,但会增加延迟。必须是不小于32的整数。默认情况下是5000000。
https://stackoverflow.com/questions/42400680
复制相似问题