如何使用 FFmpeg 从视频文件中删除音轨?
答案1
您可以使用以下-an
标志删除音频:
input_file=example.mkv
output_file=example-nosound.mkv
ffmpeg -i $input_file -c copy -an $output_file
此 ffmpeg 标志已记录这里。
答案2
您可能不想对视频重新编码(这是一个缓慢且有损的过程),因此请尝试:
input_file=example.mkv
output_file=example-nosound.mkv
ffmpeg -i $input_file -vcodec copy -an $output_file
(注:现在有些 Linux 发行版自带了ffmpeg 的 avconv 分支)
答案3
avconv -i [input_file] -vcodec copy -an [output_file]
ffmpeg
如果由于现有问题而无法安装,avconv
请尝试一下。
答案4
您还可以使用-map
选项来ffmpeg
更好地控制将哪些内容放入最终的视频容器中。
假设你的视频文件my_video.mp4
是这样组成的:
Input #0
Stream #0:0 Video: h264
Stream #0:1 Audio: English
Stream #0:2 Audio: German
Stream #0:3 Audio: Japanese
Stream #0:4 Audio: Spanish
Stream #0:5 Audio: Italian
去除全部音轨(如-an
选项所示):
ffmpeg -i my_video.mp4 -map 0 -map -0:a -c copy my_video.noaudio.mp4`
-map 0
抓取整个输入(视频、音频、字幕、元数据、章节等)。
-map -0:a
删除所有音轨从输入 0(注意-
符号)开始。
-c copy
按原样复制,无需重新编码。
要删除日本人和西班牙语曲目:
ffmpeg -i my_video.mp4 -map 0 -map -0:3 -map -0:4 -c copy my_video.nojap.noesp.mp4`
-map -0:3
从输入 0 中删除第 3 个音轨,即日语音频。从
-map -0:4
输入 0 中删除第 4 个音轨,即西班牙语音频。
删除所有音轨但意大利语:
ffmpeg -i my_video.mp4 -map 0 -map -0:a -map 0:5 -c copy my_video.ita.mp4`
-map -0:a
从输入 0 中删除所有音轨。
-map 0:5
插入来自输入 0 的第 5 个音轨,即意大利语音频(请注意,-
在这种情况下没有符号)。
在处理多个文件时这也非常有用。
例如:
- 从一个文件中抓取音频
- 来自另一个的音轨
- 来自第三方的字幕和元数据