使用 ffmpeg 对具有多个流的文件中单个音频流的部分进行静音

使用 ffmpeg 对具有多个流的文件中单个音频流的部分进行静音

我试图将 mp4 文件中的第二个音频流的一部分静音,但似乎没有任何反应。

我现在有的是: ffmpeg -i "2020-02-26 17-57-26.mp4" -filter_complex "[0:2]volume=enable='between(t,1,13)':volume=0[0:2]" -map 0:0 -map 0:1 -map 0:2 -c:v copy -c:a aac -b:a 320k "output.mp4"

我完全不知道它有什么问题

答案1

您的映射需要更改:

ffmpeg -i "2020-02-26 17-57-26.mp4" -filter_complex "[0:a:1]volume=enable='between(t,1,13)':volume=0[a1]" -map 0:v -map 0:a:0 -map "[a1]" -c:v copy -c:a:0 copy -c:a:1 aac -b:a 320k "output.mp4"
  • 用一个流说明符会更准确。使用[0:a:1]只会选择第二个音频流,而使用[0:2]则会选择文件中的第三个流,无论类型如何(视频、音频、字幕、数据)。

  • 对过滤器输出使用自定义标签([a1]在示例中),这样它就不会与通用file index:stream index方案冲突。

查看-map选项以获取更多信息。

相关内容