Как работает H.264: сжатие видео без математики

ВИДЕОКОДЕКИ • H.264 / AVC • ОБЪЯСНЕНИЕ

Камере не нужно сохранять 60 полностью новых изображений каждую секунду. Большая часть одного кадра очень похожа на предыдущий. H.264 стал одним из важнейших видеокодеков в мире благодаря тому, что научился описывать изменения, а не сохранять всё изображение снова и снова.

Если вы понимаете игру «найди отличия», вы понимаете базовую идею H.264.

Что такое H.264 на самом деле

H.264 — это стандарт сжатия видео. Его также называют AVC, сокращение от Advanced Video Coding. Стандарт разработан совместно экспертами ITU-T и ISO/IEC MPEG. Его создатели стремились получить лучшее сжатие и формат представления видео, пригодный для хранения, вещания, потоковой передачи и сетей связи.

Ключевое слово здесь — стандарт. H.264 не диктует каждой программе-энкодеру, как принимать каждое решение. Он определяет формат корректного сжатого битового потока и правила, которым должен следовать декодер для восстановления видео. Поэтому разработчики энкодеров могут делать свои реализации быстрее, умнее или эффективнее.

Представьте язык.

Стандарт H.264 задаёт грамматику. Разные энкодеры могут писать «предложения» лучше или хуже, но совместимый декодер всё равно должен их понимать.

H.264 — это не MP4

На этом сначала путаются почти все.

  • H.264 описывает, как сжимаются видеокадры.
  • MP4 — это обычно контейнер, который может содержать сжатое видео, звук, субтитры и метаданные.

Поэтому файл .mp4 может содержать видео H.264, но MP4 и H.264 — не одно и то же.

Главный приём: видео содержит огромное количество повторяющейся информации

Представьте, что вы снимаете скейтбордиста одну секунду при 60 кадр/с. Получается 60 кадров, но небо, дорога, деревья и большинство объектов почти не меняются от кадра к кадру.

Расточительный формат сохранял бы каждый пиксель заново. Видеокодек задаёт гораздо более умный вопрос:

«Что можно предсказать по уже известной информации и что действительно новое?»

Современное видеосжатие объединяет пространственное предсказание внутри кадра, предсказание движения между кадрами, преобразование оставшейся ошибки и энтропийное кодирование оставшихся символов.

Почему H.264 работает с блоками

H.264 обрабатывает изображение областями, традиционно организованными вокруг макроблока яркости 16×16. Для компенсации движения эти области могут делиться на более мелкие части — вплоть до блоков яркости 4×4.

Это важно, потому что всё изображение редко движется в одном направлении. Человек может двигаться вправо, пока фон остаётся неподвижным. Небольшое колесо может вращаться, пока велосипед в целом движется вперёд.

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

Упрощённые разделы макроблока H.264 для движения: от 16×16 до блоков меньшего размера
H.264 может делить макроблок на более мелкие области компенсации движения. Источник: рис. 12 в Wiegand et al.

Внутрикадровое предсказание: угадываем блок по уже восстановленным соседним пикселям

Иногда кодеку вообще не нужен другой кадр. Он может предсказать область по уже восстановленным пикселям в том же изображении. Это называется внутрикадровым предсказанием.

Для блока яркости 4×4 H.264 определяет девять режимов предсказания: режим DC плюс восемь направленных режимов. Кодек может предположить, что граница продолжается вертикально, горизонтально или по диагонали.

Версия для подростка: представьте, что нужно дорисовать следующий квадрат узора. Если все линии вокруг него идут по диагонали вверх, «продолжить диагональ» намного разумнее, чем «заполнить квадрат случайными пикселями».

Направления внутрикадрового предсказания H.264 для небольшого блока изображения
Направленное внутрикадровое предсказание позволяет H.264 продолжать структуры вроде границ. Источник: рис. 10–11 в Wiegand et al.

Межкадровое предсказание: заимствуем из другого кадра

Здесь видеосжатие становится особенно мощным.

Допустим, шлем между двумя кадрами сдвинулся на 12 пикселей вправо. Вместо повторного сохранения шлема энкодер может указать на похожую область в опорном кадре и передать вектор движения , который по сути говорит:

«Возьми эту область из предыдущего кадра и перемести сюда».

H.264 поддерживает компенсацию движения блоками переменного размера и субпиксельную точность движения, что даёт энкодеру точный контроль над предсказанием областей.

Предсказание почти никогда не идеально. Меняется освещение. Двигаются волосы. Гнутся листья. Меняется шум. Отсюда следующий этап.

Остаток: сохраняем ошибку, а не всё изображение

Кодек сравнивает предсказанный блок с реальным.

Оригинал − Предсказание = Остаток.

Остаток — это ошибка предсказания. Если предсказание хорошее, остаток содержит намного меньше информации, чем исходный блок.

Исходный блокто, что сняла камера
Предсказанный блокто, что предположил кодек
=
Остатоктолько разница

Подход «сначала предсказать, затем закодировать разницу» — центральная идея гибридного видеосжатия.

Преобразование и квантование: решаем, насколько точно сохранить остаток

Остаток всё ещё содержит значения пикселей, поэтому H.264 преобразует его в коэффициенты, которые проще сжимать. H.264 ввёл компактные целочисленные преобразования; классический вариант использует целочисленное преобразование 4×4, которое можно точно вычислять целочисленной арифметикой.

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

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

Если квантование слишком агрессивное, появляются знакомые артефакты:

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

Поэтому два файла H.264 с одинаковым разрешением могут выглядеть совершенно по-разному: разрешение говорит, сколько пикселей существует, а не насколько точно они были сжаты.

CABAC и CAVLC: сжимаем оставшиеся символы

После предсказания, преобразования и квантования H.264 всё ещё должен сохранить числа и флаги. Энтропийное кодирование упаковывает эти символы эффективнее.

  • CAVLC — проще и легче;
  • CABAC — сложнее и обычно эффективнее, но требует больше вычислений.

Этот этап сам по себе не «размывает картинку». Основные визуальные потери произошли раньше, при квантовании. Энтропийное кодирование скорее ищет более эффективный способ записать ту же оставшуюся информацию.

Что такое I-, P- и B-кадры?

Тип кадра Простое значение Зачем он нужен
I-кадр Может декодироваться без другого кадра Случайный доступ, смены сцен, точки восстановления
P-кадр Может использовать более ранние опорные кадры Экономит данные за счёт предсказания движения/изменений
B-кадр Может гибко использовать опорные кадры в разных направлениях Обычно повышает эффективность сжатия

Чем сильнее кадр зависит от других кадров, тем меньше он независим. Поэтому сильно сжатое видео может легко воспроизводиться , но требовать больше работы при монтаже.

Почему H.264 может быть тяжелее монтировать, чем смотреть

Видеоплеер обычно декодирует кадры последовательно. Монтажная программа постоянно задаёт неудобные вопросы:

  • «Покажи мне прямо сейчас кадр 18 431».
  • «Теперь прыгни назад на 73 кадра».
  • «Теперь покажи пять клипов одновременно».
  • «Теперь декодируй, пока я добавляю цветокоррекцию и эффекты».

При межкадровом сжатии нужный кадр может зависеть от опорных кадров, которые сначала необходимо декодировать. Это создаёт дополнительную нагрузку при прокрутке и переходах по таймлайну.

Поэтому прокси и аппаратное декодирование могут давать огромный практический эффект, хотя творческое содержимое проекта они не меняют.

Что это означает при монтаже H.264 в VSDC

Обычный материал H.264 вполне может комфортно монтироваться напрямую из оригиналов. Когда проект становится тяжелее, VSDC предлагает аппаратный декодер и прокси; в новых версиях также появилось аппаратно ускоренное транскодирование прокси через Vulkan.

Разумный процесс:

  1. Сначала попробуйте исходный H.264.
  2. Если прокрутка плавная, продолжайте монтаж оригиналов.
  3. Если высокое разрешение, много слоёв или эффекты перегружают таймлайн, включите аппаратное декодирование там, где это уместно.
  4. Если и этого недостаточно, создайте прокси. Монтируйте лёгкие копии, сохраняя оригиналы для финального рендера.
Кодек — не ваш враг.

H.264 отлично подходит для доставки. Важно понимать, когда его структура сжатия полезно экономит место, а когда редактору временно нужен более лёгкий вариант представления для отзывчивой работы.

H.264 за одну минуту

Этап Объяснение простыми словами
Предсказание Угадать блок по соседним пикселям или другим кадрам.
Остаток Сохранить разницу между предположением и реальностью.
Преобразование Перестроить эту разницу в коэффициенты, которые хорошо сжимаются.
Квантование Уменьшить точность, чтобы управлять битрейтом и размером файла.
Энтропийное кодирование Эффективно упаковать оставшиеся символы.
Восстановление Построить тот же опорный кадр, который будет использовать декодер.

FAQ по H.264

H.264 — это то же самое, что AVC?

Да. H.264 и AVC обычно обозначают один и тот же стандарт видеокодирования: ITU-T H.264 / MPEG-4 AVC.

H.264 — это то же самое, что MP4?

Нет. H.264 — видеокодек. MP4 — контейнер, который может содержать H.264-видео, звук и метаданные.

H.264 всё ещё актуален в 2026 году?

Да. Он по-прежнему широко поддерживается оборудованием, программами, камерами, браузерами и системами доставки. Новые кодеки могут быть эффективнее, но H.264 остаётся одним из самых безопасных вариантов, когда важна совместимость.

Почему видео H.264 тормозит в редакторе?

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

Нужно ли конвертировать каждый H.264-файл перед монтажом?

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

Научные источники

  1. Wiegand, T.; Sullivan, G. J.; Bjøntegaard, G.; Luthra, A. “Overview of the H.264/AVC Video Coding Standard.” IEEE TCSVT, 13(7), 560–576, 2003. DOI: 10.1109/TCSVT.2003.815165.
  2. Sullivan, G. J.; Wiegand, T. “Video Compression—From Concepts to the H.264/AVC Standard.” Proceedings of the IEEE, 93(1), 18–31, 2005. DOI: 10.1109/JPROC.2004.839617.
  3. Malvar, H. S.; Hallapuro, A.; Karczewicz, M.; Kerofsky, L. “Low-Complexity Transform and Quantization in H.264/AVC.” IEEE, 2003.
  4. Документация VSDC Video Editor — параметр аппаратного декодера.
  5. Документация к выпуску VSDC 11.2 — аппаратное транскодирование через Vulkan при создании прокси.

Продолжить чтение

Join the technical discussion