it-swarm.cn

如何从mp4视频文件中删除音轨?

我有一个带有多个音轨的mp4视频文件。我想删除其余的曲目,只保留其中一个。我该怎么做呢?

107
tshepang

第一次运行 ffmpeg -i file.mp4查看文件中存在哪些流。您应该会看到以下内容:

Stream #0.0: Video: mpeg4, yuv420p, 720x304 [PAR 1:1 DAR 45:19], 23.98 tbr, 23.98 tbn, 23.98 tbc
Stream #0.1: Audio: ac3, 48000 Hz, 5.1, s16, 384 kb/s
Stream #0.2: Audio: ac3, 48000 Hz, 5.1, s16, 384 kb/s

然后运行ffmpeg -i file.mp4 -map 0:0 -map 0:2 -acodec copy -vcodec copy new_file.mp4将视频流和第二音频流复制到new_file.mp4

122
gelraen

相关问题-删除 所有 可以从mp4文件中完成音轨:

ffmpeg -i input_file.mp4 -vcodec copy -an output_file.mp4
106
Greg Marks

识别流号:

$ ffmpeg -i in.mp4
   ...
   Stream #0:0: Video: ...
   Stream #0:1: Audio: ...
   Stream #0:2: Audio: ...

采用 -map _file_:_stream_选择要处理和输出的流

$ ffmpeg -i in.mp4 -map 0:0 -map 0:2 -vcodec copy -acodec copy out.mp4

参见: https://ffmpeg.org/ffmpeg.html#Advanced-options

8
jgr

您可以尝试 avidemux 在内部仅处理一个音频文件(因此迫使您选择一个特定的轨道)。我从未尝试过使用.mp4,但它可以与其他格式一起使用。

4
wag

我多次使用 Avidemux (GUI),和 ffmpeg (控制台)。

在Avidemux中,在主菜单中选择“音频”->“选择曲目”;然后将您的视频另存为新文件。

有趣的是,在某些情况下,Avidemux产生的输出比ffmpeg更好。

以防万一,Avidemux和ffmpeg在标准的Fedora Linux存储库中。 (我确定它们在其他Linux版本中也是标准的。)

3
Maxim

-vn 要么 -an将删除所有视频或音频轨道。供应-vn -acodec copy将删除视频; -an -vcodec copy将删除所有音频。

-vcodec copy指定ffmpeg应该直接复制现有的视频轨道(而不对其进行任何处理/编码)。如果您不指定它,那么它仍然可以工作,但是ffmpeg可能会重新编码现有的视频轨道,并且该操作将使用更多的CPU,并且可能需要更长的时间。

1
lots of crisps

ffmpeg程序已由avconv替换。 avconvffmpeg的用法非常相似,因此本文中的所有命令都可以是:

avconv <old ffpmeg command line options>

如果您使用的是Ubuntu,请按照 此链接 安装avconv

0
SmallChess

在命令行中使用avidemux。

(在Avidemux GUI中,如上述 https://unix.stackexchange.com/a/85834/4319 中所述,您只需选择/取消选择音轨,然后保存文件即可。)到新的AVI。))

我查看了为我的动作将哪些项目另存为SpiderMonkey或TinyPy项目,结果发现SpiderMonkey(JavaScript)项目缺少我需要的音轨选择操作,但TinyPy(Python)项目确实有他们。

我删除了所有无关的内容(不需要的行),这就是我在some_series.py

#PY  <- Needed to identify #
#--automatically built--

adm = Avidemux()

adm.audioClearTracks()
adm.audioAddTrack(1)

它离开轨道1,但掉落轨道0。

然后,我使用如下命令对许多文件进行了批量转换:

for f in *.avi; do avidemux3_cli --nogui --load "$f" --run ../some_series.py --save ../some_series/"${f%%.rus.eng.avi}".eng.avi --quit; done

它会复制所有内容,但会丢弃所有需要的音轨。

我从 https://www.avidemux.org/admWiki/doku.php?id=tutorial:batch_processing 了解了从命令行运行avidemux的方法,尽管他们没有提到= Python=脚本,只有JS脚本(对我不起作用)。

0
imz -- Ivan Zakharyaschev