使用ffmpeg,我使用以下命令从udp流( 25帧/秒的hd264)中获取帧:
ffmpeg -loglevel debug -i udp://231.20.20.146:2005 -fflags nobuffer -r 1 -preset超快-vf scale=432:243 -f image2pipe -vcodec ppm管道:1
在管道的另一端,我运行了一个非常简单的二进制文件,它输出接收帧的时间。
然而,即使我指定fps 1,帧进入管道也有一些延迟,有100-200ms的延迟。
造成这种延迟的原因是什么?是帧的解码和ppm图像的编码吗?以及如何强制ffmpeg至少在彼此之间的正确距离处发送图像,以便每一帧恰好在前一帧之后1000毫秒到达?
ps。前6帧被缓冲,几乎同时进入管道。以下是记录的ms值的示例:
5350 5368 5385 5493 5599 5676 5785 6221 7243 8235 9218 10219 11227 12268 13268 14242 15288 16219 17297 18222 19284 20272
发布于 2017-02-10 04:13:17
最接近的解决方案是在视频过滤器中使用fps:
ffmpeg -analyzeduration 100000 -i udp://231.20.20.146:2005 -r 8 -fflags nobuffer -preset ultrafast -vf "scale=432:243, fps=8, realtime" -f image2pipe -vcodec ppm pipe:1仍然有一些1-3ms关闭的情况,但这可能是由于cpu缩放或将流转换为ppm。
https://stackoverflow.com/questions/41768839
复制相似问题