Миниатюра libavfilter, кажется, обрабатывает только первый набор из N кадров - PullRequest
0 голосов
/ 29 января 2012

Согласно документам (см. Ниже), '-vf thumbnail' должен обрабатывать партии из N кадров и выбирать 1 кадр из каждой партии, но это не так. Я делаю что-то неправильно? Я также пробовал различные варианты с «-vframes 5» и «out% d.png», но один и тот же кадр повторялся много раз, но он обрабатывал несколько пакетов из N кадров.

8,37 миниатюра

Выберите наиболее представительный кадр в данной последовательности последовательных кадров.

Принимает в качестве аргумента размер пакета для анализа (по умолчанию N = 100); в наборе из N кадров фильтр выберет один из них, а затем обработает следующую серию из N кадров до конца.

Поскольку фильтр отслеживает всю последовательность кадров, большее значение N приведет к более высокому использованию памяти, поэтому высокое значение не рекомендуется.

В следующем примере извлекается одно изображение каждые 50 кадров:

эскиз = 50

Завершите пример создания эскиза с помощью ffmpeg:

ffmpeg -i in.avi -vf thumbnail, scale = 300: 200 -frames: v 1 out.png

1 Ответ

1 голос
/ 16 августа 2012

Вам необходимо установить еще один параметр -vsync (установите его на 0 или 2), или мультиплексор получил неправильные кадры, потому что по умолчанию -vsync=1

Например, правильная команда

ffmpeg -i INPUT_FILE -vsync 0 -vf thumbnail,scale=300:200 -frames:v 20 -f image2 img-%04d.jpg

Что касается меня, то вместо фильтра миниатюр я использую селектор I-frame - он генерирует немного больше файлов, но он более точен для моих целей.Это пример с отметкой времени, и во-первых, мы должны узнать правильный fps из файла (это Mac OS X grep диалект), чтобы установить значение r=

ffmpeg -i INPUT_FILE 2>&1 | grep -Po "[^\s]+\sfps"

Также вам нужно выбрать свой собственныйфайл шрифтов, я использую файлы Mac OS X

Теперь все готово (например, сохраните первые 20 I-кадров)

ffmpeg -i INPUT_FILE -someq -vsync 0 -vf \
drawtext="fontfile=/Library/Fonts/Courier\ New.ttf: \
timecode='00\:00\:00\:00':r=23.98: fontcolor=0xFFFFFFFF:fontsize=18:\
shadowcolor=0x000000EE:shadowx=1:shadowy=1",select='eq(pict_type\,I)'\
-vframes:v 20 -f image2 img-%04d.jpg

(странно, я получаю ошибку на \ с пробеламилиния, но все работает в одну строку)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...