首页 > 解决方案 > 如何使用 ffmpeg-python 在 filter_() 中使用高级选项?

问题描述

我正在使用ffmpeg-python包装器。

我想通过这个包装器模仿这个 ffmpeg 命令。

ffmpeg -i multiaudio.avi -map 0:a:0 multiaudio_test_a01.wav

这样做的目的是从视频中获取第一个音轨并将其保存为具有最佳质量的单独音频文件。有关高级选项“地图”的更多信息:ffmpeg 地图文档

现在使用包装器我尝试了类似的东西:

    (ffmpeg
 .input(filepath)
 .filter_('map', map='0:a:0')
 .output(str(os.path.splitext(filepath)[0]) + "_test_a01.wav")
 .run()
 )

现在重要的一行,不断抛出错误是这一行:

.filter_('map', map='0:a:0')

有人可以告诉我,我需要如何重写这行代码才能使其工作?

编辑:错误消息

Error initializing complex filters. Invalid argument [...] raise Error('ffmpeg', out, err) ffmpeg._run.Error: ffmpeg error (see stderr output for detail)

谢谢你。

标签: pythonaudiovideoffmpegwrapper

解决方案


由于 ffmpeg 参数“-map”是高级选项而不是过滤器,因此需要为输出指定参数,如下所示:

(ffmpeg
 .input(filepath)
 .output(str(os.path.splitext(filepath)[0]) + "_test_a01.wav", map="0:a:0")
 .run()
 )

推荐阅读