извлечь кадр

Ответить
ya
^-^
Сообщения: 2336
Зарегистрирован: 16 дек 2021, 19:56

извлечь кадр

Сообщение ya »

Если вы точно знаете, какие кадры нужно извлечь, например, 1, 200, 400, 600, 800, 1000, попробуйте использовать:

Код: Выделить всё

select='eq(n\,1)+eq(n\,200)+eq(n\,400)+eq(n\,600)+eq(n\,800)+eq(n\,1000)' \
       -vsync vfr -q:v 2
Я использую это с трубой в Imagemagick's montage, чтобы получить 10 кадров предварительного просмотра из любого видео. Очевидно, что номера кадров вам нужно будет вычислить с помощью ffprobe.

Код: Выделить всё

ffmpeg -i myVideo.mov -vf \
    select='eq(n\,1)+eq(n\,200)+eq(n\,400)+eq(n\,600)+eq(n\,800)+eq(n\,1000)',scale=320:-1 \
    -vsync vfr -q:v 2 -f image2pipe -vcodec ppm - \
  | montage -tile x1 -geometry "1x1+0+0<" -quality 100 -frame 1 - output.png
ya
^-^
Сообщения: 2336
Зарегистрирован: 16 дек 2021, 19:56

Re: извлечь кадр

Сообщение ya »

FFmpeg может сделать это, обратившись к заданной временной метке и извлекая ровно один кадр в виде изображения, например, см:

ffmpeg -i input_file.mp4 -ss 01:23:45 -frames:v 1 output.jpg
Поясним параметры:

-i входной файл путь к входному файлу
-ss 01:23:45 seek the position to the specified timestamp
-frames:v 1 обрабатывать только один видеокадр
output.jpg имя выходного файла, должно иметь известное расширение
Ответить