ビデオファイルのオーディオストリームを複数のオーディオストリームに置き換える方法


19

2つのオーディオストリームがあるビデオファイルの2番目のオーディオストリーム(0:2)を置き換え、可能であればラベルを付けたいと思います。これについてどうすればいいですか?私が見つけたすべてのffmpegコマンドでは、2番目のオーディオストリームを保持できません。

回答:


22

-mapオプションを使用して、ストリームを選択します。デフォルトのストリーム選択では、各ストリームタイプの1つのみが選択-mapされるため、使用する必要があります。

2番目のオーディオストリームを置き換える

ここに画像の説明を入力してください

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:v0は、最初の入力を指しvideo.mkvます。vは、「ビデオストリームタイプを選択する」という意味です。

  • 0:a:00は、最初の入力を指しvideo.mkvます。aは、「オーディオストリームタイプを選択する」という意味です。最後0は、この入力からの最初のオーディオストリームを指します。のみ0:aを使用すると、すべてのビデオストリームがマップされます。

  • 1:a1は、2番目の入力を指しaudio.mp3ます。aは、「オーディオストリームタイプを選択する」という意味です。

  • -codec copyエンコードではなくコピー(re-mux)をストリーミングします。特定のオーディオコーデックが必要な場合は、-c:v copy(ビデオを保持するために)指定してから、たとえば-c:a libmp3lameオーディオストリームをMP3に再エンコードする必要があります。

  • -shortest 最短の入力が終了すると出力が終了します。

2つのオーディオストリームを1つにまとめる

ここに画像の説明を入力してください

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フィルターが使用されるため、この例ではオーディオをストリームコピーできません。

私にはまったく機能しませんでした。
ルドルフオラー14

@omouseが「機能しませんでした」のヘルプを提供するのは困難です。pastebinリンクを使用して、コマンドと完全なコンソール出力を表示する必要があります。
llogan

私の問題は、ですが、私は-codec copyそれを修正しました(ffmpegの異なるバージョン)、私が持っていた他の問題は-map、間違った数のストリームについて不平を言いました。
ルドルフオラ

1
使っ-map 0:v -map 1:aたばかりです。私は確かに何...最初のファイル(video.mkv)からビデオを取ると、その後output.mkvを作成するために、第2のファイル(audio.mp4)からオーディオを取るために、この手段を想定していない-map 0:a:0ためです。私はそれを除外し、必要な結果を得ました。

2
@ aaronk6元の質問は、複数のオーディオストリームを出力にマップする方法を要求していました。この例では、最初の入力から最初のオーディオストリームを取得し、2番目の入力からオーディオストリームを取得して、それらを出力にマップします。いくつかの例は、単一のオーディオストリームで出力を作成し、その後混乱することを想定しているようです。
-llogan
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.