2

ランダムな形式のさまざまなビデオ ファイルを連結したいと考えています。まず、それらを flv に変換し、各ビデオのフレームレートを関連するビデオの最低に合わせます。次のステップは、それらをデコードしてヘッダーを削除することです (ただし、シーケンスの最初のビデオのヘッダーは削除しないでください)。次に、それらを cat で連結し、最後に結果シーケンスをエンコードします。

しかし、ビデオ トラックとオーディオ トラックは、シーケンス パートからシーケンス パートへとますます同期がずれています。

どんなアイデアでもうれしいです。

4

1 に答える 1

0

あなたの問題は、concatプロセスを実行している間同期を維持することです。経験則では、ステップが少ないほど良いです。これで問題が解決するはずです。まず、中間フォーマットにflvの代わりにmpgを使用します。次に、各コマンドに-copytsを追加します(同期を維持するためにタイムスタンプをコピーします)。また、最低のフレームレートに移動する必要はありません。このプロセスを通じて、最高のビデオの品質を維持できます。これを試して:

$ ffmpeg -i a.mp4 -qscale:v 1 -copyts a.mpg
$ ffmpeg -i b.flv -qscale:v 1 -copyts b.mpg

これで、互換性のあるビデオ品質の2つの(大きな)中間ファイルができました(変数:) -qscale:v 1。あなたはそれらを一緒に接着する準備ができています。

$ ffmpeg -i concat:"a.mpg|b.mpg" -c copy all.mpg

Windowsを使用している場合は、そのままで問題ありません。UNIXフレーバーでは、パイプの前に円記号が必要です。(私のバージョンでは、大量のbuffer underflow / packet too large, ignoring buffer limits to mux itエラーが発生します。それらは無害のようです。)これで、より現実的な品質で、より便利な形式に変換できます。

$ ffmpeg -i all.mpg -qscale:v 2 -copyts all.mp4

連結されたビデオの同期を維持することに成功しましたが、品質が本来あるべきほど良くないようです。たぶん、中間ファイルのパラメータを微調整します。

于 2013-03-01T01:26:24.677 に答える