Bagaimana Membetulkan Kesalahan 'Masa Lalu Terlalu Besar' di FFmpeg?

FFmpeg adalah program sumber terbuka dan bebas yang digunakan untuk mengendalikan aliran Video, Audio, dan multimedia lain. Program ini telah dirancang untuk mengendalikan pengendalian pemprosesan fail video dan audio berdasarkan baris perintah. Namun, baru-baru ini, terdapat banyak laporan mengenai Ralat " Duration Terlalu Terlalu Besar " semasa mengekod atau menurunkan skala video.

Apa yang Menyebabkan Kesalahan "Tempoh Masa Lalu Terlalu Besar" di FFmpeg?

Setelah menerima banyak laporan dari beberapa pengguna, kami memutuskan untuk menyiasat masalah ini dan merancang satu set penyelesaian untuk membetulkannya sepenuhnya. Kami juga melihat sebab-sebab yang menyebabkan kesalahan ini dicetuskan dan menyenaraikannya seperti berikut:

  • Input Framerate Hilang:  Dalam kebanyakan kes, masalah ini disebabkan kerana framerate input tidak dimasukkan untuk gambar. Ini menghasilkan program dengan anggapan bahawa framerate input adalah 25 fps yang dapat menimbulkan masalah jika tidak demikian.
  • Tetapan Penyegerakan tidak Dilaksanakan: Dengan kebanyakan pengguna, pelaksanaan tetapan penyegerakan tertentu menyelesaikan masalah. Kadang-kadang, bingkai mungkin tidak diselaraskan dengan betul kerana bingkai tertentu mungkin dijatuhkan dan kesalahan ini mungkin dicetuskan.

Setelah anda memahami asas mengenai masalah ini, kami akan terus mencari jalan keluarnya. Pastikan untuk menerapkannya dalam urutan khusus di mana ia disajikan untuk mengelakkan konflik.

Penyelesaian 1: Menambah Bingkai Input

Sekiranya framerate input video belum ditambahkan, ini mungkin mengakibatkan beberapa bingkai dijatuhkan dan kesalahan tersebut dicetuskan. Oleh itu, dalam langkah ini, kami akan menambahkan bingkai input untuk itu:

  1. Perhatikan konvokesyen yang anda gunakan untuk menukar video, mungkin serupa dengan yang berikut
    ffmpeg -i% 05d.png -r 24 -c: v libx264 -crf 5 keluar.mkv
  2. Kini hanya menambah yang kadar bingkai untuk konvokesyen yang digunakan seperti berikut
    ffmpeg -framerate 24 -i% 05d.png -c: v libx264 -crf 5 keluar.mkv
  3. Periksa untuk melihat apakah masalah itu berlanjutan.

Penyelesaian 2: Menggunakan Bendera Segerak

Menambah bendera Sync dapat membantu menyegerakkan output dan video input mengikut bingkai awal video. Oleh itu, Sekiranya perintah penyegerakan belum ditambahkan, kemungkinan bingkai tidak diselaraskan dengan betul. Dalam langkah ini, kita akan menambahkan arahan penyegerakan

  1. Pada peringkat ini, anda mungkin menggunakan konvokesyen berikut
    ffmpeg -framerate 24 -i% 05d.png -c: v libx264 -crf 5 keluar.mkv
  2. Namun, bukannya ini, gunakan konvokesyen berikut
    ffmpeg -framerate 24 -i% 05d.png -c: v libx264 -crf 5 out.mkv -async 1 -vsync 1
  3. Perhatikan bahawa kami baru saja menambahkan " -async 1 -vsync1 " ke konvokesyen dan ini perlu ditambahkan pada akhir konvokesyen yang anda gunakan.

    Catatan:  Konvokesyen awal anda mungkin berbeza dengan yang digunakan sebagai contoh. Perubahan yang ditambahkan pada konvokesyen, bagaimanapun, tidak boleh berbeza.