1

Я хочу сделать анализ сжатых видео, чтобы сохранить расчеты части декодирования.

Поэтому я хочу прочитать сжатое видео и проверить каждый кадр, является ли он кадром I/B/P, и выполнить определенное действие (процесс), в зависимости от типа кадра.

Как я могу сделать это с помощью ffmpeg? Я не видел в документации, как читать сжатое видео.

Спасибо за вашу помощь.

1 ответ1

1

Определение типа фрейма с помощью ffmpeg или ffprobe

Вы хотите работать с видеофайлом, проверяя типы кадров по ходу работы. У меня была причина сделать это в прошлом. Ответ Джан Доши на SO охватывает это:

ffmpeg -i input.mp4 -vf select='eq(n,334)',showinfo -f null -

Выше будет производить выход для 335-го кадра видео

n: 0 pts: 171008 pts_time:11.1333 pos:  1090471 fmt:yuv420p sar:1/1 s:1280x720 
i:P iskey:0 type:B checksum:A72D197D plane_checksum:[9008E835 680AC49A 6CD66C90] 
mean:[136 122 134] stdev:[65.4 7.0 9.5]

Вы можете пропустить фильтр выбора и получить выходные данные для всех кадров, а затем выполнить grep, как это делает incBrain. Обратите внимание, что вы хотите, чтобы номер отображаемого изображения не кодировался.

(дополнительная ссылка отсутствует в добавленном мной ответе)

В зависимости от того, как вы хотите это сделать, у вас есть возможность использовать фильтр select как указано выше, или получить информацию для всех кадров (используя ffprobe video.mp4 -show_frames) и обработать вывод этого.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .