推荐使用 ffmpeg-python 处理视频,因其是 FFmpeg 命令行的轻量封装,支持流选择、链式构建、精准错误反馈;相较 OpenCV(偏视觉、编码控制弱)和 moviepy(抽象高、调试难),更灵活可靠。
用 Python 处理视频,不一定要从头写解码逻辑——FFmpeg 的 Python 绑定(如 ffmpeg-python)提供了简洁、可控又贴近原生命令行的接口,适合自动化剪辑、格式转换、抽帧、加水印等常见任务。
OpenCV 侧重计算机视觉,对编码器控制弱、不支持多路流精细操作;moviepy 抽象高但调试难、依赖多、性能开销大。而 ffmpeg-python 是 FFmpeg 命令行的 Python 封装,零额外编解码逻辑,所有参数直通 FFmpeg,灵活且可靠。
确保系统已安装 FFmpeg(命令行能运行 ffmpeg -version),再执行:
pip install ffmpeg-python
最简示例:将 MP4 转为 GIF(带缩放和帧率控制):
import ffmpeg
stream = ffmpeg.input('input.mp4')\
.filter('scale', '320:-1')\
.filter('fps', fps=10)
ffmpeg.output(stream, 'output.gif').run()
注意:不调用 .run() 不会真正执行;若需捕获日志或忽略错误,可用 run(capture_stdout=True, capture_stderr=True)。
g.input('video.mp4', ss=60).output('clip.mp4', t=30).run()
str(Path(...).resolve()) 转绝对路径再传入,避免 FFmpeg 解析失败vcodec='libx265',否则默认可能用 H.264pad)要求宽高为 2 的倍数,可加 .filter('pad', 'ceil(iw/2)*2:ceil(ih/2)*2')
rtmp:// 地址没加协议)