2つのオーディオストリームを持つビデオファイルの2番目のオーディオストリーム(0:2)を置き換えて、可能であればラベルを付けたいです。これについてどうすればいいですか?私が見つけたすべてのffmpegコマンドでは、2番目のオーディオストリームを維持できません。
-map
オプション を使用してストリームを選択します。デフォルト ストリーム選択 は、各ストリームタイプの1つのみを選択するため、-map
を使用する必要があります。
ffmpeg -i video.mkv -i audio.mp3 -map 0:v -map 0:a:0 -map 1:a \
-metadata:s:a:0 language=eng -metadata:s:a:1 language=sme -codec copy \
-shortest output.mkv
0:v
– 0
は、video.mkv
である最初の入力を参照します。 v
は、「ビデオストリームタイプの選択」を意味します。
0:a:0
– 0
は、video.mkv
である最初の入力を参照します。 a
は、「オーディオストリームタイプの選択」を意味します。最後の0
は、この入力からの最初のオーディオストリームを指します。 0:a
のみを使用すると、すべてのビデオストリームがマッピングされます。
1:a
– 1
は、2番目の入力であるaudio.mp3
を参照します。 a
は、「オーディオストリームタイプの選択」を意味します。
-codec copy
は、エンコードの代わりに stream copy (re-mux)になります。特定のオーディオコーデックが必要な場合は、-c:v copy
(ビデオを保持するため)を指定し、次に-c:a libmp3lame
を指定して、オーディオストリームをMP3に再エンコードする必要があります。
-shortest
は、最短の入力が終了したときに出力を終了します。
ffmpeg -i vid.mkv -i aud.mp3 -filter_complex "[0:a][1:a]amerge=inputs=2[a]" \
-map 0:v -map "[a]" -c:v copy -c:a aac -strict experimental -b:a 192k -ac 2 \
-shortest out.mp4
amerge
filter を使用しているため、この例ではオーディオをストリームコピーできません。