【问题标题】:How to use advanced options in filter_() using ffmpeg-python?如何使用 ffmpeg-python 在 filter_() 中使用高级选项?
【发布时间】:2021-12-18 01:13:02
【问题描述】:

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

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

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

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

现在使用包装器,我尝试了类似的方法:

    (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)

谢谢。

【问题讨论】:

  • 总是将完整的错误消息(从单词“Traceback”开始)作为文本(不是截图,不是链接到外部门户)有问题(不是评论)。还有其他有用的信息。
  • 与语法问题无关,但 -q:a 0 被 WAV 复用器忽略,因此您可以将其删除。 WAV 未压缩,所以-q:a 什么都不做。
  • @furas 错误是:初始化复杂过滤器时出错。无效参数 [...] 引发 Error('ffmpeg', out, err) ffmpeg._run.Error: ffmpeg 错误(详见 stderr 输出)
  • @llogan 公平点,通过编辑删除了这个。主要问题仍然存在。

标签: python audio video ffmpeg wrapper


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2020-09-02
    • 2019-02-11
    • 2011-01-31
    • 1970-01-01
    • 1970-01-01
    • 2017-01-09
    • 2011-09-15
    • 2012-05-25
    • 2012-01-18
    相关资源
    最近更新 更多