FFmpeg提取UDP直播流缩略图启动时间过长问题求助
FFmpeg默认启动时会预留较长的流探测时长、开启缓冲来适配未知格式的流,对于已知编码和封装格式的UDP流,这些默认机制会带来不必要的等待时间。你可以通过调整参数大幅降低启动耗时,优化后的命令如下:
ffmpeg -fflags nobuffer -flags low_delay -avioflags direct \ -probesize 32768 -analyzeduration 1000000 \ -f mpegts -i "udp://224.1.2.123:9001" \ -an -s 256x144 -vf fps=1 -update 1 test.jpg -y
参数说明
-fflags nobuffer -flags low_delay -avioflags direct:关闭默认的缓冲机制,开启低延迟模式,跳过不必要的缓存等待-probesize 32768 -analyzeduration 1000000:将流探测的字节数从默认的数MB降低到32KB,探测时长从默认的5秒降低到1秒,因为你已经明确知道输入是mpegts格式,小探测值足够完成格式识别-f mpegts:手动指定输入流格式,跳过FFmpeg的自动格式探测步骤,直接用mpegts解析输入-an:关闭音频处理,你仅需提取视频帧,无需处理AAC音频流,省去音频解码的初始化开销
额外优化建议
如果你的H264流I帧间隔大于1秒,可以在输入参数前添加-skip_frame nokey,只解码关键帧,进一步降低首帧输出等待时间。
内容的提问来源于stack exchange,提问作者Robbie
相关产品推荐
相关产品推荐

