
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番目の字幕とメタデータ