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. 「」を追加したことに注意してください。 -非同期 1 -vsync1 」を召集に追加します。これは、使用している召集の最後に追加する必要があります。
    注意: 最初の召集は、例として使用されたものとは異なる場合があります。ただし、召集に追加された変更は異なるべきではありません。
読んだ2分