FFmpeg の連結により最初のセグメントの最後のフレームが台無しになる

FFmpeg の連結により最初のセグメントの最後のフレームが台無しになる

問題:
私は定期的に ffmpeg を使って 2 つの .MKV ファイルをきれいに連結する必要があります。約 10 ~ 20% の確率で、最初のビデオ セグメントの最後の 3 ~ 5 フレームがさまざまなビデオ プレーヤー (テスト用には VLC と PotPlayer) で問題になります。典型的な影響は、ビデオの再生中に、連結される最初のセグメントの最後から 3 ~ 5 番目のフレームがフリーズし、次の数フレームにわたって画面に表示されたままになり、2 番目のセグメントが連結される開始点まで続きます。オーディオは画像の背後で適切に再生されます。奇妙なことに、VLC の「e」コントロールを使用してシーケンスをフレームごとに進めると、すべてのフレームがそこに表示されます。両方のセグメントは同じソースから取得され、すべて同じプロパティを持っています。ソース セグメントはないこの問題自体は存在します。ソース セグメントは生成時にエンコードされるため、キーフレームの問題は発生しないはずです。

私が試したこと:

  • 連結コマンドを発行するときにビデオのみをエンコードする(オーディオと字幕をコピーする)
  • 連結コマンドを発行する際のビデオとオーディオのエンコード(字幕のコピー)
  • 警告に従ってanalyzeurationとprobesizeの値を増やす
  • ビデオのみを出力しても問題は発生します (音声なし、字幕なし)
  • これとよく似た問題についての投稿を見たことがあるが、解決策が見つからないようだ

この問題を引き起こす原因は次のとおりです:
私が発行するコマンドは

ffmpeg.exe -f concat -safe 0 -i "C:\Users\test\Downloads\ConcatListTEMP00000.txt" -c copy -map 0 "C:\Users\test\Downloads\TEST JOIN COPY.mkv"

連結ファイルの内容は

file 'C:\Users\test\Downloads\CutSegmentTEMP0001.mkv'
file 'C:\Users\test\Downloads\CutSegmentTEMP0002.mkv'

上記のコマンドを実行したときのコンソール出力への pastebin リンクを次に示します。 https://pastebin.com/mpBS6TZY

答え1

フィルターグラフで trim、atrim、および concat フィルターを使用すると、問題は解決したようです。字幕については別途対処します。

関連情報