FFMPEG извлекает внутрикадровые кадры I,P,B

FFMPEG извлекает внутрикадровые кадры I,P,B

Есть ли способ извлечь внутренние кадры и сохранить их как есть из FFMPEG или подобной программы? Я знаю, что можно извлечь кадры в последовательность изображений JPEG с помощью -f image2. Но это полные изображения каждого из кадров. Я хотел бы экспортировать только изображение изменения движения, поэтому у меня будут только кадры P и B, показывающие изменение движения, исключая или маскируя неизмененную область изображений.

Это возможно?

Базовая команда экспорта кадров, которую я использую. Она дает мне полнокадровые изображения каждого кадра с указанным FPS.

ffmpeg -i input.mp4 -r 12 -an -b 1024k -y -f image2 frame%4d.jpg

Я надеюсь экспортировать кадры так, чтобы у меня была папка кадров, где первый кадр будет полным изображением, а следующий кадр будет только данными изображения, где изображение нужно перерисовать. Раскрытие временной избыточности между двумя кадрами (разве это не то, что делают кадры I,P,B?)

решение1

Для извлечения определенного типа кадра используйтеselectфильтр:

select=eq(pict_type\,<x>)

где <x>находится одно из следующего:pict_type (video only) the type of the filtered frame, can assume one of the following values: I, P, B, S, SI, SP, BI

Так, например:

ffmpeg -i <inputfile> -vf '[in]select=eq(pict_type\,B)[out]' b.frames.mp4

Чтобы лучше понять вывод, добавьтеshowinfoфильтр:

ffmpeg -i <inputfile> -vf '[in]select=eq(pict_type\,B),showinfo[out]' b.frames.mp4

решение2

Кадры P и B обычно не содержат новых данных изображения для каждой из измененных областей. Вместо этого изображение разбивается на макроблоки разных типов. Некоторые типы макроблоков содержат новые данные изображения, но большинство вычисляют содержимое на основе других опорных изображений и векторов движения.

Не совсем то, что вы просили, но это будет использовать цвет для отображения типа каждого макроблока:

ffmpeg -debug vis_mb_type -i input.mp4 output.mp4

или

ffplay -debug vis_mb_type input.mp4

Это также покажет вам векторы движения:

ffplay -debug vis_mb_type -vismv 7 input.mp4

Более подробную информацию о цветах каждого MB можно получить по ссылке:

Отладка макроблоков и векторов движения Документация FFMpeg

Связанный контент