我有一个包含多个音轨的 mp4 视频文件。我想去掉其余的轨道并只保留一个。我该怎么做呢?
答案1
首先运行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
。
答案2
相关问题——删除全部mp4 文件中的音轨可以这样完成:
ffmpeg -i input_file.mp4 -vcodec copy -an output_file.mp4
答案3
识别流编号:
$ 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
答案4
你可以尝试avidemux
它在内部仅处理一个音频文件(因此强制您选择一个特定的轨道)。我从未尝试过使用 .mp4,但它适用于其他格式。