Как мне захватить все ключевые кадры и уменьшить до 320 пикселей в ширину? - PullRequest
2 голосов
/ 06 января 2020

Я пытаюсь использовать ffmpeg для вывода всех ключевых кадров из видеофайла и масштабирования их до ширины 320 пикселей при сохранении соотношения сторон. Я знаю, что могу сделать это с помощью двух отдельных команд, но я пытаюсь найти способ сделать это аккуратно в одной.

Я уже преуспел в каждом из шагов в отдельности, используя следующие команды.

Выведите ключевые кадры:

.\ffmpeg -i input.mp4 -q:v 2 -vf select="eq(pict_type\,PICT_TYPE_I)" -vsync 0 thumb%07d.png

Масштаб изображения:

.\ffmpeg -i input.mp4 -vf scale=320:-1 thumb%07d.png

Я не поделюсь всем, что я пробовал , но вот три ошибки при их объединении.

// сбой, не только ключевые кадры, масштабируется .\ffmpeg -i input.mp4 -q:v 2 -vf select="eq(pict_type\,PICT_TYPE_I)" -vsync 0 -vf scale=320:-1 thumb%07d.png -hide_banner

// сбой, не удается найти подходящий выходной формат для команды масштабирования, недопустимый аргумент .\ffmpeg -i input.mp4 -q:v 2 -vf select="eq(pict_type\,PICT_TYPE_I)" -vsync 0, scale=320:-1 thumb%07d.png -hide_banner

// сбой .\ffmpeg -i input.mp4 -q:v 2 -vf scale=320:-1, -vf select="eq(pict_type\,PICT_TYPE_I)" -vsync 0 thumb%07d.png -hide_banner

Я пробовал много разных вещей, перемещая команды, комбинируя с помощью запятых и т. Д. c ... Но я не добился успеха в объединение команд get key-frame и scale. Так как же мне go объединить команды получения ключевых кадров и масштабирования, чтобы они работали?

спасибо.

1 Ответ

1 голос
/ 06 января 2020

Фильтры выбора и масштабирования здесь представляют собой линейную последовательность фильтров, поэтому их следует указывать один за другим. См. http://ffmpeg.org/ffmpeg-filters.html#Filtering -Введение

Итак, вы можете использовать

ffmpeg -i in -vf "select='eq(pict_type\,PICT_TYPE_I)',scale=320:-1" -vsync 0 -q:v 2 out%07d.png

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

ffmpeg -skip_frame nokey -i in -vf "scale=320:-1" -vsync 0 -q:v 2 out%07d.png
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...