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

tsh*_*ang 138 video-editing

我有一个带有多个音轨的 mp4 视频文件。我想去掉其余的轨道,只保留一个。我该怎么做呢?

gel*_*aen 159

首先运行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
Run Code Online (Sandbox Code Playgroud)

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

  • 在 Windows 上,此命令给出错误`选项映射(设置输入流映射)不能应用于输入文件 file.mp4 new_file.mp4 -- 您正试图将输入选项应用于输出文件,反之亦然。将此选项移动到它所属的文件之前。`:要修复它,只需更改参数的顺序即可:`ffmpeg -i file.mp4 -map 0:0 -map 0:2 -acodec copy -vcodec copy new_file.mp4 ` (3认同)
  • 您可以使用更通用的选项 `-c copy` 为音频、视频和字幕提供相同的流:`ffmpeg -i input.mp4 -map 0:0 -map 0:2 -c copy output.mp4`。 (3认同)

小智 144

相关问题 —可以通过以下方式从 mp4 文件中删除所有音轨:

ffmpeg -i input_file.mp4 -vcodec copy -an output_file.mp4
Run Code Online (Sandbox Code Playgroud)


小智 8

识别流号:

$ ffmpeg -i in.mp4
   ...
   Stream #0:0: Video: ...
   Stream #0:1: Audio: ...
   Stream #0:2: Audio: ...
Run Code Online (Sandbox Code Playgroud)

使用-map _file_:_stream_选择哪个流处理和输出

$ ffmpeg -i in.mp4 -map 0:0 -map 0:2 -vcodec copy -acodec copy out.mp4
Run Code Online (Sandbox Code Playgroud)

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


wag*_*wag 3

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