Как извлечь самый первый кадр секунды в видео, используя ffmpeg? - PullRequest
2 голосов
/ 03 февраля 2020

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

ffmpeg -i input.ts -s 400x222 -q:v 3 -start_number 0 -vf fps=1 %d.jpg

Позже я пытаюсь снова извлечь кадры, используя приведенную ниже команду именно этой секунды. Здесь я извлекаю кадры с 210-й секунды.

ffmpeg -ss 210 -i input.ts -s 300x250 -t 1 -start_number 0 images.%d.jpg

Я хочу извлечь только начальный кадр второго. Скажем, от 0,001 этой конкретной секунды.

Когда я сравниваю кадр 210 секунд, извлеченный моей первой командой, с первым кадром, извлеченным второй командой, они совершенно разные.

Для последующего использования, чтобы предотвратить конфликты, я хочу извлечь только самый первый кадр исходного входного видео. Я пытался использовать команду, которая была рассказана экспертами stackoverflow в прошлом здесь . Но когда я запускаю это. Это только извлечение начального кадра (только 1 кадр).

Как я могу извлечь самый начальный кадр видео за каждую секунду?

1 Ответ

1 голос
/ 03 февраля 2020

попробуйте эту команду:

ffmpeg -i input.mp4 -vf "select=between(mod(n\, 25)\, 0\, 0), setpts=N/24/TB" output-%04d.png

вы должны передать частоту кадров вашего видео или fps в between(mod(n\, 25)\, 0\, 0) мое видео fps 25, поэтому я передаю 25

, если ваш fps 60, то вы должны передать 60 в between(mod(n\, 60)\, 0\, 0)

, также, если вы хотите первые 5 кадров каждую секунду, тогда используйте between(mod(n\, 25)\, 0\, 4), это даст вам первые 5 кадров каждую секунду.

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