Есть ли способ использовать ffprobe или аналогичные инструменты командной строки для проверки битрейта видео на GOP?
ffprobe, похоже, выводит только общий битрейт для всего видео, но не пакетов.
ffprobe -i video.mp4 -show_entries packets
Я полагаю, это группа фотографий.
[PACKET]
codec_type=video
stream_index=0
pts=126976
pts_time=9.920000
dts=126464
dts_time=9.880000
duration=512
duration_time=0.040000
convergence_duration=N/A
convergence_duration_time=N/A
size=6229
pos=5648590
flags=__
[/PACKET]
решение1
Пакет не является группой изображений — в зависимости от контейнера пакет представляет собой всего один кадр или может содержать только часть кадра.
Вместо этого вам следует проверить, есть ли у вас пакет, содержащий ключевой кадр. Проверьте атрибут flags
. Если вы получаете K
в нем , это начало GOP. Запомните DTS пакета и суммируйте атрибут, size
пока не достигнете следующего ключевого кадра, разделив эту сумму на дельту во временных метках или, в качестве альтернативы, на сумму duration_time
.
Это даст вам битрейт на GOP, включая накладные расходы на пакетирование.