Как на самом деле работают современные алгоритмы сжатия видео



Как на самом деле работают современные алгоритмы сжатия видео

Современные алгоритмы сжатия видео не совпадают с алгоритмами сжатия изображений, с которыми вы, возможно, знакомы. Дополнительное измерение и время означают, что к видеофайлу применяются различные математические и логические методы для уменьшения размера при сохранении качества видео. Как на самом деле работают современные алгоритмы сжатия видео — сейчас это не секрет.

Как на самом деле работают современные алгоритмы сжатия видео

В этом посте в качестве стандарта сжатия архетипов использовался кодек H.264. Хотя он больше не является новейшим форматом сжатия видео. Но он все же предоставляет достаточно подробный пример для объяснения общих концепций сжатия видео.

Видеокарты и их характеристики — базовые термины и понятия

Что такое сжатие видео?

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

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

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

I-кадры, P-кадры и B-кадры

I-кадры являются полностью кодированными изображениями. Каждый I-кадр содержит все данные, необходимые для представления изображения. P-кадры прогнозируются на основе того, как изображение изменяется с последнего I-кадра.

B-кадры прогнозируются в двух направлениях, используя данные как из последнего P-кадра, так и из следующего I-кадра. P-кадры должны хранить только визуальную информацию, которая является уникальной для P-кадра.

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

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

Внутрикадровое кодирование (I-кадры)

I-кадры сжимаются независимо, так же, как и неподвижные изображения. Поскольку I-кадры не используют прогнозирующие данные, сжатое изображение содержит все данные, используемые для отображения I-кадра. Они по-прежнему сжимаются с помощью алгоритма сжатия изображений, такого как JPEG.

Это кодирование часто происходит в цветовом пространстве YCbCr, которое отделяет данные яркости от цветовых данных, позволяя кодировать движения и изменения цвета по отдельности.

Для кодов без предсказания, таких как DV и Motion JPEG, на этом мы и останавливаемся , Поскольку нет прогнозирующих кадров, единственное сжатие, которое может быть достигнуто, — это сжатие изображения в пределах одного кадра. Он менее эффективен, но создает файл необработанного изображения более высокого качества.

В кодеках, использующих прогнозирующие кадры, такие как H.264, I-кадры периодически показаны, чтобы обновить поток данных путем установки нового опорного кадра. Чем дальше разнесены I-кадры, тем меньше может быть видеофайл.

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

Для потребителей частота I-кадров часто определяется косвенно настройкой качества в программном обеспечении кодирования. Профессиональное программное обеспечение для сжатия видео, такое как ffmpeg, позволяет явно контролировать.

Что нужно знать о кодировании видео

Межкадровое прогнозирование (P-кадры и B-кадры)

Видеокодеры пытаются предсказать изменение от одного кадра к следующему. Чем ближе их прогнозы, тем эффективнее алгоритм сжатия. Это то, что создает P-кадры и B-кадры.

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

Давайте рассмотрим, как H 0,264 работает, как обобщенный пример. Кадр разделен на секции, называемые макроблоками, обычно состоящие из 16 х 16 выборок. Алгоритм не кодирует необработанные значения пикселей для каждого блока.

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

Когда видео воспроизводится, видеопроигрыватель будет правильно интерпретировать эти векторы движения для повторного перевода видео. Если блок вообще не изменяется, вектор не нужен.

Заключение: сжатие данных

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

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

Алгоритм не меняет данные: оно просто организует их в максимально компактной форме. Затем видео сжимается, и оно меньше, чем раньше, и готово для просмотра.

Как на самом деле работают современные алгоритмы сжатия видео

Метки:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *