如何使用ffmpeg从视频文件中删除一个曲目?

use*_*r25 20 video ffmpeg

如何使用ffmpeg从视频文件容器(.vob或.mkv)中只删除一个轨道(不是全部)?

我知道我可以将视频(-c:v copy -an)和特定音轨从容器复制到两个独立的文件中然后加入它们.

但是有更简单的方法吗?我可以从容器中删除特定的音轨吗?ffmpeg命令?

llo*_*gan 42

使用负映射排除特定流:

ffmpeg -i input -map 0 -map -0:a:2 -c copy output
Run Code Online (Sandbox Code Playgroud)

此示例将映射除第二个音频流之外的所有内容.

  • 代替-0:a:1,要删除其他音频,可以使用-0:a:0 (2认同)
  • 删除所有音频(并保留视频、数据等):`ffmpeg -i input -map 0 -map -0:a -c copy output` 同样,删除所有视频:`ffmpeg -i input -map 0 -映射 -0:v -c 复制输出` (2认同)
  • @Synchro 我将添加一个“删除频道”部分。我认为用户在找到这个答案时不会想要这样做。 (2认同)

v01*_*dya 5

您正在寻找-map.

我已改为使用avconv,但应该大致相同。

假设您有一个名为“input.vob”的文件,其中包含一个视频和两个音轨;并且您希望“output.vob”包含视频和最后一个音频。

你会这样做:

avconv -i input.vob -map 0:0 -c:v copy -map 0:2 -c:a copy output.vob
Run Code Online (Sandbox Code Playgroud)

你应该注意到:

  1. 我没有复制 -map 0:1
  2. 我不需要做-an,因为有音轨。但是,如果根本没有音轨,您可能需要使用这样的属性。
  3. 有时流没有按照我描述的方式编号,例如音频可以在视频之前出现。
  4. 如果那里有字幕流,您还需要弄清楚如何处理它们。

您不能“就地”处理文件,您需要保存到不同的文件中。

PS下次你可能想在video.stackexchange.com上问这样的问题。