Python调用FFmpeg使用filter为何导致输出无音频?
解决FFmpeg-Python滤镜处理后丢失音频的问题
你遇到的问题是因为代码只对视频流应用了滤镜,但没明确指定音频的处理逻辑——FFmpeg默认在这种场景下只会输出处理后的视频流,自动忽略了音频部分。
修改后的代码
ffmpeg.input("input.webm").filter("scale", force_original_aspect_ratio="decrease", force_divisible_by=2).output("out.mp4", vcodec="libx264", r=60, preset='fast', acodec="copy").run()
关键说明
- 新增的
acodec="copy"参数让FFmpeg直接复制原视频的音频流,不做重新编码,既能完整保留原音频,还能提升转换速度。 - 如果原音频编码和MP4容器不兼容(极少数WebM会出现这种情况),可以把
acodec="copy"替换成acodec="aac",让FFmpeg将音频重新编码为MP4兼容的格式,尽可能保留原音质。
内容的提问来源于stack exchange,提问作者muzak
相关产品推荐
相关产品推荐

