FFmpeg には、すべてのストリームを出力にマップするオプションがあります。オプション -map 0
を使用する必要があります すべてのストリームを入力から出力にマップします。
全体的には次のようになります:
ffmpeg -i in.mp4 -c copy -map 0 out.mp4
詳細については、ストリームの選択に関するドキュメントと -map
を参照してください。 オプション。
どうやらこれはよくある質問なので、他の人が見ることができるように、私の解決策を回答として投稿します (以前はコメントの返信でした)。
このチケットから正しい構文を見つけることができました。正しい構文は次のとおりです:
ffmpeg -i in.mp4 -vcodec copy -c:a copy -map 0:0 -map 0:1 -map 0:2 out.mp4
これにより、3 つのストリームすべてがコピーされます。
OK、ffmpeg
をかなり深く読みました マンページを見て、役に立つはずのこれを見つけました:
現在、各出力ストリームには、単一の入力ストリームからのチャネルのみを含めることができることに注意してください。たとえば、「-map_channel」を使用して、異なるストリーム (同じまたは異なるファイルから) に含まれる複数の入力オーディオ チャネルを選択し、それらを単一の出力ストリームにマージすることはできません。したがって、たとえば、2 つの別々のモノラル ストリームを 1 つのステレオ ストリームにすることは現在のところ不可能です。ただし、ステレオ ストリームを 2 つのシングル チャネル モノラル ストリームに分割することは可能です。
この機能が必要な場合、考えられる回避策は amergefilter を使用することです。たとえば、2 つのモノラル オーディオ ストリームを含むメディア (ここでは input.mkv) を 1 つのステレオ チャネル オーディオ ストリームにマージする (そしてビデオ ストリームを保持する) 必要がある場合は、次のコマンドを使用できます。
ffmpeg -i input.mkv -filter_complex "[0:1] [0:2] amerge" -c:a pcm_s16le -c:v copy output.mkv
man ffmpeg-filters
の man ページの説明を読み、試してみることをお勧めします。 チャンネルの名前付けと予想される出力について、どのレベルの複雑さを感じているかを理解するために。
[編集:Mulvya が指摘したように、これは質問への回答ですが、元の投稿者の質問とはまったく異なります。]