FFmpegの「過去の期間が長すぎます」エラーを修正する方法は?

FFmpegは、ビデオ、オーディオ、およびその他のマルチメディアストリームの処理に使用される無料のオープンソースプログラムです。 このプログラムは、ビデオおよびオーディオファイルの処理のコマンドラインベースの処理を処理するように設計されています。 ただし、ごく最近、ビデオのエンコードまたはダウンスケーリング中に、「 過去の期間が長すぎます 」というエラーが多数報告されています。

FFmpegロゴ

FFmpegで「過去の期間が長すぎます」エラーの原因は何ですか?

複数のユーザーから多数のレポートを受け取った後、問題を調査し、完全に修正するための一連のソリューションを考案することにしました。 また、このエラーがトリガーされる原因を調査し、次のようにリストしました。

  • 入力フレームレートの欠落:ほとんどの場合、問題は入力フレームレートが画像に入力されていないことが原因です。 これにより、プログラムは入力フレームレートが25 fpsであると想定し、そうでない場合は問題が発生する可能性があります。
  • 同期設定が実装されていない:ほとんどのユーザーでは、特定の同期設定を実装すると問題が修正されました。 特定のフレームがドロップされ、このエラーがトリガーされるため、フレームが適切に同期されない場合があります。

問題の性質を基本的に理解できたので、解決策に進みます。 衝突を避けるために、これらが提示されている特定の順序で実装するようにしてください。

解決策1:入力フレームを追加する

ビデオの入力フレームレートが追加されていない場合、一部のフレームがドロップされ、エラーがトリガーされる可能性があります。 したがって、この手順では、そのための入力フレームを追加します。

  1. ビデオの変換に使用した呼び出しを確認します。次のような場合があります
     ffmpeg -i%05d.png -r 24 -c:v libx264 -crf 5 out.mkv 
  2. 次に、次のように使用する呼び出しにフレームレート追加します
     ffmpeg -framerate 24 -i%05d.png -c:v libx264 -crf 5 out.mkv 
  3. 問題が解決しないか確認してください。

解決策2:同期フラグを使用する

同期フラグを追加すると、ビデオの初期フレームレートに従って出力と入力ビデオを同期するのに役立ちます。 したがって、同期コマンドが追加されていない場合、フレームが適切に同期されていない可能性があります。 このステップでは、同期コマンドを追加します

  1. この段階では、おそらく次の呼び出しを使用する必要があります
     ffmpeg -framerate 24 -i%05d.png -c:v libx264 -crf 5 out.mkv 
  2. ただし、これの代わりに、次の呼び出しを使用します
     ffmpeg -framerate 24 -i%05d.png -c:v libx264 -crf 5 out.mkv -async 1 -vsync 1 
  3. -async 1 -vsync1 」を呼び出しに追加したばかりであり、使用している呼び出しの最後に追加する必要があることに注意してください。

    注:最初の呼び出しは、例として使用した呼び出しとは異なる場合があります。 ただし、招集に追加された変更は変わらないはずです。

興味深い記事