Как l может использовать ffmpeg для извлечения кадров с определенным кадр/с и масштабированием

Я хотел бы извлечь кадры в fps=25, и кадры повторно масштабируются к 320x240.

Что я попробовал:

ffmpeg -i video.avi -vf scale="320x240" fps=25   frames/c01_%04d.jpeg

Это возвращается fps=25: Invalid argument

но когда я выполняю его или с кадр/с или масштабируюсь, это работает.

ffmpeg -i video.avi -vf scale="320x240"    frames/c01_%04d.jpeg

или

ffmpeg -i video.avi -vf  fps=25   frames/c01_%04d.jpeg

Работает. Как я могу выполнить ffmpeg с фильтрами кадр/с и масштабом?

2
задан 6 November 2019 в 04:01

1 ответ

Объедините простые фильтры с запятой:

ffmpeg -i video.avi -vf "scale=320:240,fps=25" frames/c01_%04d.jpeg

fps

При использовании фильтра fps для извлечения кадров следует учитывать, что при входной частоте кадров:

    [ 1110]

    совпадает со значением fps, тогда фильтр ничего не делает, и вы можете удалить его.

  • выше значения fps, тогда некоторые кадры будут пропущены, чтобы соответствовать значению fps. Если это так, используйте fps перед масштабированием, и процесс будет быстрее.

  • ниже значения fps, тогда некоторые кадры будут дублироваться для соответствия значению fps.

Если вы хотите просто извлечь все кадры , то удалите фильтр fps.

scale

Рассмотрите возможность объявления только ширины или высоты и использования -1 в качестве значения для другого, такого как 320:-1 или -1:240. Это позволит фильтру автоматически выбрать правильное значение при сохранении соотношения сторон. Это предотвратит растяжение выходного изображения.

jpeg

Используйте -q:v или -qscale:v для контроля качества .

5
ответ дан 2 December 2019 в 01:54

Другие вопросы по тегам:

Похожие вопросы: