Перейти к основному содержимому

Блоки, макроблоки, GOP, типы кадров (I, P, B)

Одним из ключевых аспектов современного сжатия видео является организация видеопотока на структурном уровне. Понимание того, как кадры группируются и как они зависят друг от друга, критически важно для выбора параметров кодирования, оценки задержки, устойчивости к потерям и эффективности хранения. В этом разделе мы рассмотрим, как устроены видеопотоки в стандартах H.264 и H.265, что такое макроблоки, группы кадров (GOP), а также разберёмся с различиями между типами кадров — I, P и B.

Как видео разбивается на блоки: от пикселей к макроблокам

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

На первом уровне разбиения изображение делится на блоки пикселей. В стандартах H.264 и H.265 основной рабочей единицей становится макроблок — это блок размером, как правило, 16×16 пикселей. Макроблоки могут дополнительно делиться на более мелкие блоки (например, 8×8, 4×4), особенно при высоких уровнях сжатия.

Пример: Представьте, что вы смотрите на лицо человека в кадре. Кожа на щеке — однородная по цвету и текстуре. Если обрабатывать этот участок как единый блок, кодек может эффективно описать его с помощью небольшого количества данных. Именно на таком принципе и строится сжатие: не хранить каждый пиксель, а описать блоки по их содержимому.

Разбиение на блоки позволяет:

  • Применять преобразования (например, DCT — дискретное косинус-преобразование) к небольшим участкам.
  • Оценивать движение в каждом блоке независимо.
  • Кодировать данные с разной степенью детализации в зависимости от сложности блока.

Группы кадров (GOP): структура временной зависимости

Видео — это последовательность кадров, меняющихся со временем. Однако хранить каждый кадр полностью было бы крайне неэффективно. Вместо этого кодеки используют группы кадров (Group of Pictures, GOP) — структуры, в которых только один или несколько кадров хранятся полностью, а остальные описываются как изменения относительно уже закодированных.

GOP — это последовательность кадров, начинающаяся с ключевого кадра (I-кадра) и включающая несколько зависимых кадров (P и B) до следующего I-кадра.

Длина GOP измеряется в количестве кадров. Например:

  • GOP длиной 30 при 30 кадрах в секунду означает, что ключевой кадр появляется раз в секунду.
  • GOP длиной 120 — раз в 4 секунды (при 30 FPS).

Пример структуры GOP

Допустим, у нас есть GOP длиной 12 кадров при 25 FPS:

I B B P B B P B B P B B

Здесь:

  • I — ключевой кадр (полностью закодирован).
  • P — предсказанный кадр (опирается на предыдущий I или P).
  • B — бидирекциональный кадр (использует как предыдущие, так и будущие кадры для предсказания).

Такая структура позволяет достичь высокой степени сжатия, так как большинство кадров содержат только разницу (движение, изменения), а не полное изображение.

Типы кадров: I, P, B

Разные типы кадров играют разную роль в сжатии и влияют на качество, задержку и устойчивость к ошибкам.

I-кадры (Intra-coded frames)

  • Полностью самодостаточны — не зависят от других кадров.
  • Кодируются только с использованием пространственной избыточности (внутри самого кадра).
  • Аналогичны сжатию изображения в формате JPEG.
  • Требуют наибольшего объёма данных среди всех типов кадров.
  • Являются точками синхронизации — с них можно начать декодирование потока.

Практическое значение: При потере сигнала или переключении канала воспроизведение начинается с ближайшего I-кадра. Чем реже они идут, тем дольше «чёрный экран» или артефакты при переключении.

P-кадры (Predicted frames)

  • Кодируются на основе предыдущего I- или P-кадра.
  • Используют межкадровое предсказание: вычисляют векторы движения для блоков и хранят только разницу (остаток).
  • Занимают меньше места, чем I-кадры.
  • Зависимы от предыдущих кадров — при их потере последующие P-кадры могут не декодироваться корректно.

Пример: Камера снимает улицу. Машина движется по кадру. P-кадр запоминает, что блок, соответствующий машине, сместился на 5 пикселей вправо, и сохраняет только эту информацию и небольшие изменения в цвете.

B-кадры (Bi-predictive frames)

  • Используют оба направления: опираются на предыдущие и будущие кадры.
  • Наиболее эффективны с точки зрения сжатия — требуют наименьшего битрейта.
  • Однако требуют буферизации — декодер должен дождаться будущего кадра, чтобы восстановить B-кадр.
  • Увеличивают задержку и требования к памяти.

Визуализация: Представьте, что вы пытаетесь описать, где была машина в момент t=5, но у вас есть кадры t=4 и t=6. B-кадр использует оба, чтобы точнее предсказать положение — и кодирует только минимальную разницу.

Сравнение типов кадров

ПараметрI-кадрP-кадрB-кадр
ЗависимостьНетОт предыдущего I/PОт предыдущего и будущего
Объём данныхВысокийСреднийНизкий
ЗадержкаМинимальнаяУмереннаяВысокая
Устойчивость к потерямВысокаяСредняяНизкая
РольТочка входаПредсказание вперёдМаксимальное сжатие

Влияние структуры GOP на производительность системы

Выбор структуры GOP напрямую влияет на несколько ключевых характеристик видеосистемы:

1. Задержка (latency)

  • Чем больше B-кадров и длиннее GOP, тем выше задержка.
  • Для реального времени (видеосвязь, стриминг) используют короткие GOP (например, 2–4 кадра) и минимум или вообще без B-кадров.
  • Для архивации или записи (например, видеонаблюдение) допустимы длинные GOP и B-кадры — это снижает объём хранения.

2. Устойчивость к потерям

  • При потере пакета с I-кадром восстановление возможно только после следующего I-кадра.
  • P- и B-кадры зависят от других — ошибка «распространяется».
  • Решение: частые I-кадры (например, I-кадр каждые 2 секунды) улучшают восстановление после потерь, но увеличивают битрейт.

3. Битрейт и эффективность сжатия

  • Длинный GOP с B-кадрами → низкий битрейт, но риск артефактов при движении.
  • Короткий GOP без B-кадров → высокая надёжность и низкая задержка, но выше битрейт.

Особенности AV1: эволюция структуры видеопотока

AV1 — современный открытый видеокодек, разработанный Alliance for Open Media. Он сохраняет основные принципы H.264/H.265, но вводит значительные улучшения:

  • Более гибкая структура блоков: AV1 использует суперблочные структуры (до 128×128 пикселей), которые могут делиться рекурсивно — это позволяет точнее адаптироваться к содержимому.
  • Улучшенное межкадровое предсказание: поддержка множественных ссылок (до 7), что повышает эффективность при сложных сценах.
  • Новые типы кадров: например, ALTREF (альтернативный эталонный кадр) — позволяет хранить усреднённые или улучшенные версии кадров для лучшего предсказания.
  • Адаптивная структура GOP: AV1 поддерживает сложные иерархические структуры с переменной длиной GOP и динамическим выбором типов кадров.

Пример: В сцене с медленным панорамированием камеры AV1 может использовать длинные GOP с ALTREF-кадрами, чтобы сохранить высокое качество при минимальном битрейте. При резких сценах он автоматически вставляет I-кадры и перестраивает структуру.

Практические рекомендации

При настройке видеопотока в реальных системах (камеры, стриминг, запись) следует учитывать:

  • Видеонаблюдение: можно использовать длинные GOP (30–60 кадров) и B-кадры — это снижает нагрузку на хранение.
  • Видеосвязь (WebRTC, Zoom): короткий GOP (1–4 кадра), без B-кадров — для минимизации задержки.
  • Стриминг (OBS, YouTube): умеренная длина GOP (2–4 секунды), B-кадры допустимы, но не рекомендуются при низкой задержке.
  • Архивные записи: приоритет — сжатие, можно использовать сложные GOP и максимальную глубину B-кадров.

Заключение

Понимание структуры видеопотока — от макроблоков до GOP и типов кадров — является фундаментом для эффективного проектирования видеосистем. Выбор между I, P и B-кадрами, длиной GOP и глубиной предсказания определяет баланс между качеством, задержкой, устойчивостью и нагрузкой на сеть. Современные кодеки, такие как AV1, расширяют эти возможности, но базовые принципы остаются неизменными: сжатие достигается за счёт устранения избыточности — пространственной и временной.