为何mpeg1video编码器显示支持10fps却无法设置?
问题分析与解决
原因
虽然ffmpeg -h encoder=mpeg1video显示编码器支持10/1帧率,但MPEG-1/2编码标准本身对帧率有严格规范限制,仅允许特定标准帧率(如23.976、24、25、29.97、30、50、59.94、60fps等),10fps不在标准许可范围内,因此实际编码时触发报错。
解决方法
- 改用MPEG标准支持的帧率,比如12fps、15fps或25fps,修改命令中的
-r参数即可,示例:ffmpeg -loglevel level+info -i rtsp://10.110.63.70:554/ISAPI/Streaming/Channels/101/ -n -f mpegts -r 15 -s 672x380 -c:v mpeg1video -b:v 600K tcp://127.0.0.1:56883 - 若业务场景必须接近10fps输出,可先用
fps滤镜将源视频帧率降为10,再强制编码器使用可变帧率模式(但需注意部分播放器可能无法正常播放非标准帧率的MPEG-1/2视频),示例:
注:此方法仅作为临时替代方案,优先推荐使用标准帧率。ffmpeg -loglevel level+info -i rtsp://10.110.63.70:554/ISAPI/Streaming/Channels/101/ -n -f mpegts -filter:v fps=10 -r 10 -vsync vfr -s 672x380 -c:v mpeg1video -b:v 600K tcp://127.0.0.1:56883
内容的提问来源于stack exchange,提问作者Static
相关产品推荐
相关产品推荐

