2013-02-24 8 views
6

FFmpegを自動化して、特定のディレクトリのすべてのビデオファイルをMKVに再変換しようとしています。現在使用中ですMKVにRemuxしますが、FFmpegを使ってすべてのストリームを追加します

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

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

FFmpegを自動化しようとしているので、コマンドが各ファイルに対して変更されない場合、つまりすべてのストリームを手動で指定する場合は-mapですべてのファイルを解析する必要があります。私が必要ならばこれをやるだろうが、もっと良い解決策があればそれを好むだろう。

+0

[あなた自身のメタに関する議論](http://meta.stackexchange.com/q/168740/159624)の合意によれば、この質問はスーパーユーザーになったはずです。私は移行することを票決した。 – slhck

+0

から* http://meta.stackexchange.com/a/168743/170007 - * FFmpeg.exeを使用してアプリケーションを開発し、その使用法を自動化するためのスクリプトを書く→両方のトピックについて話しますが、SU *についてはもっと話題になります。私はffmpegを自動化しようとしているので、ここではontopicだよね?ああ、お返事ありがとうございます:) – sashoalm

+0

プログラミング言語が関係しておらず、 '$ INPUT'または' input.mp4'が本当に違いを生み出さないので、境界線だと思います。間違った理由でここでクローズされた質問の多くが見られたため、ある時点で削除される前に移行されるようにしてください:) – slhck

答えて

15

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

-mapオプションは、ショートカット-map 0でこれを行うことができます。例えば

:output.mkvに2:0と0:

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

ストリーム0をコピーします。

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

コピーする(多重ビデオ、オーディオまたは字幕ストリームが存在する場合でも)入力が出力に入力0(input.mkv)からストリーム全て。

-map値が入力された数字(0が最初に入力され、1は第二の入力、などである)に対応して:あなたは追加の入力を追加した場合( - >入力1)、また、すべての内容をコピーしたいです、-map 1を追加する必要があります。

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

+5

''タイムスタンプが不明なパケットを書き込めません。 'というエラーが出たら、ffmpegコマンドの後に '-fflags + genpts'を追加する必要があります。 [このバグ](https://trac.ffmpeg.org/ticket/1979)とここに記載されている回避策を参照してください。http://askubuntu.com/a/413968/135671 – erik

+0

誰かがこの回答を見つけましたが、見つけられない場合'ffmpeg'; 'ffmpeg'はもはやUbuntu 14.04リポジトリには存在しませんが、そのフォーク' avconv'は同じです( 'sudo apt-get install libav-tools')。 – JeroenHoek

+0

@JeroenHoekさらに、fffmpegビルドはhttp://ffmpeg.org/downloadからダウンロードできます。html – slhck

関連する問題