LINUX.ORG.RU

Нарезка видео на скриншоты

 


0

1

Я пытаюсь нарезать видео на скриншоты с помощью ffmpeg, вот так:

ffmpeg -i porn.mp4 -vf fps=fps=1/20 image%03d.jpg

К сожалению, почему-то это не работает с fps меньше 1/20 (может быть, это зависит от фильма). Как лечить? И можно ли как-нибудь задать FPS вещественным числом, а не дробью?

Задача: нарезать N скриншотов, равномерно распределённых по всей длине видео. Длину видео я могу получить с помощью ffmpeg и awk:

ffmpeg -i porn.mp4 2>&1 | awk '/Duration/ {split($2,a,":");print a[1]*3600+a[2]*60+a[3]}'

Надо знать параметры porn.mp4 и версию ffmpeg, чтобы воспроизвести проблему.

Предлагаю использовать фильтр framestep, у него внутри математика проще некуда, в отличие от fps, у которого в некоторых случаях могут быть переполнения при мат. операциях.

Если исходная частота кадров = 25 Гц, то вместо «fps=fps=1/20» надо «framestep=500». 500 это 20 * 25.

fopen ★★
()
Ответ на: комментарий от deep-purple

Вряд ли. С уменьшением fps к-во кадров тоже уменьшается.

discordia
() автор топика
Ответ на: комментарий от discordia

Прбуй, у меня работает:

~/Videos$ ffmpeg -i video.flv -an -r 1/500 -f image2 ./test/out%09d.png

deep-purple ★★★★★
()

Ни один из предложенных способов не сработал. Сообщение об ошибке всегда одинаковое:

Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height

Пробовал на другом файле. Мой способ (fps=fps=...) опять же сработал с 1/20, но не с 1/21 и меньшими fps.

ffmpeg 2.2.4

discordia
() автор топика
Ответ на: комментарий от discordia

Кажется, получилось. Добавил параметр -q:v 0

discordia
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.