8

FFmpegを自動化して、特定のディレクトリ内のすべてのビデオファイルをMKVに再ルーティングしようとしています。私は現在使用しています

ffmpeg -i $INPUT -c copy $OUTPUT.mkv

ただし、一部のストリームはそのようにスキップされます。たとえば、オーディオストリームが2つある場合、出力ファイルに送られるのは1つだけです。

入力からのすべてのストリームを出力にコピーする必要があることを指定するにはどうすればよいですか?

私はFFmpegを自動化しようとしているので、コマンドがファイルごとに変更されない場合、つまり、すべてのストリームを手動で指定する-mapと、最初にすべてのファイルを解析する必要がある場合に最適です。必要に応じてこれを行いますが、より良い解決策がある場合はそれをお勧めします。

4

1 に答える 1

20

入力からのすべてのストリームを出力にコピーする必要があることを指定するにはどうすればよいですか?

-mapオプションは、ショートカットを使用してこれを行うことができます-map 0

例えば:

ffmpeg -i input.mkv -c copy -map 0:0 -map 0:2 output.mkv

ストリーム0:0および0:2をoutput.mkvにコピーします。

ffmpeg -i input.mkv -c copy -map 0 output.mkv

すべての入力ストリームを入力0( )から出力にコピーしinput.mkvます(複数のビデオ、オーディオ、または字幕ストリームがある場合でも)。

-map値は入力番号に対応します(最初0の入力、12番目の入力など):追加の入力(->入力1)を追加し、すべての内容をコピーする場合は、追加する必要があります-map 1

を使用ffprobeしてファイルを分析し、どのストリームがどこにマップされているかを確認できます。エラーが発生した-fflags +genpts場合は試してください。unknown timestamp詳細なチュートリアルについては、オプションのFFmpegWikiページを参照してください-map

于 2013-02-24T14:25:00.033 に答える