1

Я использую ffmpeg для извлечения кадров из GIF-файла. Когда я использую Python PIL, это показывает, что файл имеет 135 кадров. Даже окно свойств в макинтош туфель одинаковое количество кадров. Однако ffmpeg по какой-то причине извлекает> 50000 кадров. Многие из них являются дубликатами.

Gif-файл - https://78.media.tumblr.com/dd7f01acad444ca85bea050afd15afaf/tumblr_nof6lmxQLC1utshuoo1_250.gif

Я использую следующую команду ffmpeg -i input_gif.gif output/% d.jpg Журнал - https://pastebin.com/HBt58yKq

Однако я обнаружил, что когда я запускаю следующую команду, она отлично работает ffmpeg -i input_gif.gif -vsync 0 output/% d.jpg Журнал - https://pastebin.com/Ykb7WkKA

1 ответ1

3

GIF определяется как имеющий частоту кадров 6,67, но задержки отдельных кадров устанавливаются равными 65535 в единицах 1/100 секунды, т.е. 655,35 секунды на кадр. Это дает общую продолжительность более 24 часов для 135 входных кадров.

Мультиплексор последовательности изображений установлен в режим постоянной частоты кадров. Таким образом, ffmpeg будет проверять частоту кадров на входе (6,67 к / с) и отбрасывать или дублировать кадры, чтобы соответствовать этой частоте, если на вход подается другое количество кадров (в секунду). Таким образом, при воссоздании 24-часовой выходной последовательности со скоростью 6,67 кадров в секунду ffmpeg будет стремиться производить более 500 тыс. Кадров. Почти все из которых будут дубликатами.

-vsync vfr или -vsync 0 отключает поведение удаления / дублирования кадра.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .