Видеокодек

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Видеокодек — программа / алгоритм сжатия (то есть уменьшения размера) видеоданных (видеофайла, видеопотока) и восстановления сжатых данных. Кодек — файл-формула, которая определяет, каким образом можно «упаковать» видеоконтент и, соответственно, воспроизвести видео. Также возможно кодирование видео- и аудиоинформации, добавление субтитров, векторных эффектов и т. п.

Принцип работы простейшего кодека

[править | править код]

Сперва рассмотрим кодирование статического изображения (или, одиночного кадра). Каждый кодируемый кадр видеопотока состоит из точек (пикселей), образующих матрицу (растр). Кодек может отслеживать похожие массивы точек с одинаковыми атрибутами (например, синий цвет фона на изображении неба) и, вместо того, чтобы запоминать информацию о каждой точке (яркость и цвет) в следующих кадрах отдельно, записать лишь первую (ключевую) точку и счётчик с количеством повторений этой точки до момента изменения цвета данной точки. То есть вместо описания, например, 1000 точек, может оказаться достаточно описать всего 1 точку + счётчик повторения. Качеством здесь можно управлять, задавая величину, такую, что если отличие между точками меньше, то они считаются одинаковыми. Это самый простой из методов сжатия.

В JPEG для кадра производится поблочное дискретное косинусное преобразование с последующим кодированием с использованием алгоритма Хаффмана или арифметического кодирования.

Для построения динамического изображения (видеоряда) используются различные типы кадров — кроме I-кадров (которые также называются ключевыми (англ. keyframes) или «опорными») которые могут содержать только независимо сжатые макроблоки, добавленные P-кадры («разностные» кадры) могут содержать как независимо сжатые макроблоки, так и макроблоки со ссылкой на другой кадр.

Более продвинутые форматы сжатия учитывают, кроме вышеупомянутой технологии, ещё и принципы движения массивов точек в изображении, сегментирование картинки на «квадратики» с различным качеством сжатия, применение последовательности кадров, кодированных по-разному и показанных в определённой последовательности. Самые новые кодеки учитывают психофизические свойства восприятия видео человеческим глазом и мозгом, что позволяет ещё сильнее уменьшать размер данных без «видимой потери качества».

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

Известные кодеки

[править | править код]
  • H.264 (AVC) — проприетарный кодек.
  • H.265 (HEVC) — проприетарный кодек.
  • H.266 (VVC) — проприетарный кодек.
  • VP8 — свободный видеокодек, разработанный Google
  • VP9 — свободный видеокодек, разработанный Google
  • AV1
  • Theora — свободный видеокодек, разработанный Фондом Xiph.Org.
  • Daala — свободный формат сжатия видео и референсный видеокодек, разрабатываемые в Xiph.Org
  • DivX — проприетарный кодек.
  • Xvid — свободная альтернатива DivX.