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