如何在ffmpeg-python中设置RTSP输入流的FPS
解决ffmpeg-python中指定RTSP输入帧率的问题
在命令行中你用-r 18放在输入源前指定帧率,对应到ffmpeg-python里,不能直接在input()函数的参数中设置(那样会把参数放到-i之后,变成对输出帧率的设置),需要把-r作为全局前置参数添加,具体有两种可行方式:
方式一:使用option()方法添加全局参数
这完全对应命令行-r 18 -i <rtsp_url>的写法,通过链式调用在input()之前添加全局选项:
import ffmpeg # 添加全局-r参数,指定输入帧率为18 stream = ffmpeg.option("-r", 18).input("rtsp://your_rtsp_stream_address") # 配置HLS输出参数 stream = ffmpeg.output( stream, "output.m3u8", c_v="libx264", hls_time=10, hls_list_size=6 ) # 执行转码命令 ffmpeg.run(stream)
方式二:使用input()的framerate参数
ffmpeg-python的input()函数封装了framerate参数,效果等价于指定输入帧率(多数场景下和-r作用一致),写法更简洁:
import ffmpeg stream = ffmpeg.input("rtsp://your_rtsp_stream_address", framerate=18) stream = ffmpeg.output( stream, "output.m3u8", c_v="libx264", hls_time=10, hls_list_size=6 ) ffmpeg.run(stream)
两者核心区别:方式一完全复刻命令行参数顺序,确保和你之前验证有效的命令逻辑完全一致;方式二是ffmpeg-python提供的便捷封装,适合常规场景使用。
内容的提问来源于stack exchange,提问作者tamirg
相关产品推荐
相关产品推荐

