Як виправити помилку "минулої тривалості занадто великої" у FFmpeg?

FFmpeg - це вільна у використанні та програма з відкритим кодом, яка використовується для обробки відео, аудіо та інших мультимедійних потоків. Програма була розроблена для управління обробкою відео та аудіо файлів на основі командного рядка. Однак зовсім недавно багато повідомлень надходило про помилку " минула тривалість занадто велика " під час кодування або зменшення масштабу відео.

Логотип FFmpeg

Що викликає помилку "Занадто велика тривалість минулого" у FFmpeg?

Отримавши численні звіти від декількох користувачів, ми вирішили дослідити проблему і розробили набір рішень, щоб повністю її виправити. Також ми розглянули причини, через які ця помилка спрацьовує, і перерахували їх наступним чином:

  • Відсутність частоти кадрів вхідних даних : У більшості випадків проблема виникає через те, що кадр вводу не вводиться для зображень. Це призводить до того, що програма припускає, що вхідний кадр становить 25 кадрів в секунду, що може спричинити проблеми, якщо це не так.
  • Налаштування синхронізації не реалізовано. Більшість користувачів впроваджуючи певні налаштування синхронізації, вирішили проблему. Іноді кадри можуть не синхронізуватися належним чином, через що певні кадри можуть бути скинуті, і ця помилка може бути спровокована.

Тепер, коли ви маєте основне розуміння природи питання, ми рухатимемося до вирішення. Переконайтеся, що виконайте їх у певному порядку, в якому вони представлені, щоб уникнути конфлікту.

Рішення 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: Використання прапорів синхронізації

Додавання прапорців Sync може допомогти синхронізувати вихідне та вхідне відео відповідно до початкових кадрів відео. Отже, якщо команди синхронізації не додані, можливо, кадри не синхронізовані належним чином. На цьому кроці ми додамо команди синхронізації

  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 ", і це потрібно додати в кінці скликання, яке ви використовуєте.

    Примітка. Початкове скликання може відрізнятися від того, яке було використано для прикладу. Однак зміни, що додаються до скликання, не повинні відрізнятися.

Цікаві Статті