Есть ли способ извлечь внутренние кадры и сохранить их как есть из 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 можно получить по ссылке: