FFmpeg でビデオファイルからオーディオを削除する

FFmpeg でビデオファイルからオーディオを削除する

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 番目のトラック (イタリア語のオーディオ) を挿入します (-この場合は NO 記号に注意してください)。


これは、複数のファイルを扱う場合にも非常に便利です。
たとえば、次のような場合です。

  • 1つのファイルからオーディオを取得する
  • 別のオーディオトラック
  • 3番目の字幕とメタデータ

関連情報