使用 FFmpeg 从视频文件中删除音频

Ram*_*ain 379 ffmpeg

如何使用 FFmpeg 从视频文件中去除音轨?

Mar*_*ett 541

您可以使用以下-an标志删除音频:

input_file=example.mkv
output_file=example-nosound.mkv

ffmpeg -i $input_file -c copy -an $output_file
Run Code Online (Sandbox Code Playgroud)

此 ffmpeg 标志记录在此处

  • 我是 `bash` 和 `ffmpeg` 新手,但我将这个答案与其他一些部分放在一起来创建 `function ffsilent { ffmpeg -i $1 -c copy -an "$1-nosound.${1#*.}" }` 您可以在个人资料中使用它来快速创建任何视频文件的无声版本。 (5认同)
  • @Aaron 不错,但应该是`function ffsilent { ffmpeg -i "$1" -c copy -an "${1%.*}-nosound.${1#*.}" }` 否则你会得到“file.mp4-nosound.mp4”在“file.mp4”上使用时。 (4认同)
  • @rlittles是的,`-c copy`总是避免重新编码,如果不能,它将失败并出现错误。 (4认同)
  • 请务必将“-an”标志放在“$output_file”之前 (2认同)

小智 119

您可能不想重新编码视频(一个缓慢且有损的过程),因此请尝试:

input_file=example.mkv
output_file=example-nosound.mkv

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

(注意一些 Linux 发行版现在带有ffmpegavconv 分支

  • vcodec 是 `-c:v` 的别名,所以它只会复制视频流。您使用此方法阻止的唯一数据是我所看到的字幕、元数据等。 (4认同)
  • 换句话说,可以想象,该解决方案可能会比已接受的解决方案丢失更多信息。 (3认同)
  • 我同意:这是“仅复制视频”解决方案,而接受的答案是“复制除音频之外的所有内容”解决方案。 (3认同)
  • 与公认的解决方案相比,这对我没有任何影响。 (2认同)
  • 我们可以称之为“仅视频”解决方案:+1: (2认同)

小智 11

avconv -i [input_file] -vcodec copy -an [output_file]
Run Code Online (Sandbox Code Playgroud)

如果ffmpeg由于存在而无法安装,请avconv尝试。