Декодирование B-кадров из видеопотоков H.264 и H.265🔗
Кодеки H.264 и H.265 используются для сжатия видеопотоков следующие типы кадров:
I-кадры (опорные, ключевые): содержат все фрагменты кодируемого изображения.
P-кадры (разностные зависимые): содержат новые фрагменты кодируемого изображения или изменения относительно ключевого кадра.
B-кадры (двунаправленно зависимые): кодируют разницу между соседними кадрами, ссылаясь на закодированные фрагменты в ключевых и разносно зависимых кадрах.
Видеопотоки, сжатые с использованием B-кадров, имеют большую степени сжатия по сравнению с видеопотоками, где используются только I- и P-кадры. Таким образом, для видео, сжатого с использованием B-кадров, требуется меньшая ширина канала при передаче по сети (от камеры на сервер и от сервера в клиентское приложение). Также оно занимает меньший объём дискового пространства при хранении в архиве. Величина экономии может достигать 40% по сравнению с видео, где используются только I- и P-кадры.
Фактически достигаемая величина сжатия зависит от множества параметров: количества деталей в кадре, интенсивности движения, разрешения, частоты кадров и других характеристик, в том числе от разработчика кодека. При этом с увеличением разрешения и частоты кадров степень сжатия в большинстве случаев увеличивается.
В то же время, для кодирования B-кадров требуется больше вычислительных ресурсов по сравнению с кодированием только I- и P-кадры.
Кроме того, использование B-кадров приводит к увеличению задержки видео реального времени. Это происходит за счёт того, что при кодировании и декодировании B-кадров требуется буферизация.
Возможность кодирования B-кадров обычно указывается в документации на камеру. Например, может быть указана поддержка IBP или IBBP. При этом, как правило, видеокодек H.264/H.265 должен поддерживать профиль не ниже чем Main Profile.
Выяснить, поддерживает ли Macroscop приём видеопотока с B-кадрами от определённой камеры, можно в службе технической поддержки Macroscop.
Узнать о наличии B-кадров в видеопотоке можно из отладочной информации. Для этого в приложении Macroscop Клиент нужно включить вывод отладочной информации. О наличие B-кадров будет свидетельствовать индикация (B).