回答:
-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
エンコードではなくコピー(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
フィルターが使用されるため、この例ではオーディオをストリームコピーできません。-codec copy
それを修正しました(ffmpegの異なるバージョン)、私が持っていた他の問題は-map
、間違った数のストリームについて不平を言いました。
-map 0:v -map 1:a
たばかりです。私は確かに何...最初のファイル(video.mkv)からビデオを取ると、その後output.mkvを作成するために、第2のファイル(audio.mp4)からオーディオを取るために、この手段を想定していない-map 0:a:0
ためです。私はそれを除外し、必要な結果を得ました。