Содержание статьи +
- TL;DR
- Зачем это нужно
- Три идеи в одной картинке
- Пласт первый – Теория информации: математический фундамент (1948–1959)
- Пласт второй – Prediction: не отправляй то, что декодер может угадать (1969–1981)
- Пласт третий – Transform: перепакуй пиксели так, чтобы большую часть можно было выбросить (1947–1974)
- Как это работает: гибридная блоковая конвейерная обработка
- Частая ошибка: путаница между тремя уровнями
- Современный фронт: нейронные кодеки – это четвёртый пласт?
- Где здесь Фора Софт
- Главное
- Что читать дальше
- Источники
TL;DR
Каждый современный видеокодек – H.264, HEVC, AV1, VVC, а также готовящийся к выходу в 2026 году AV2 – основан на трёх научных прорывах, совершённых между 1948 и 1981 годами. Теория информации Клода Шеннона показала инженерам, что существует жёсткий математический предел сжатия данных, и предложила энтропию и rate–distortion как два ключевых критерия прогресса. Prediction – сначала conditional replenishment в 1969 году, а затем block-based motion compensation в 1981-м – позволило описывать новый кадр как небольшую правку к тому, что уже видел декодер. Discrete cosine transform, разработанный Ahmed, Natarajan и Rao в 1974 году, преобразует блок пикселей в список частотных коэффициентов, из которых человеческий глаз не замечает потерю большинства значений. Более сорока лет эволюции кодеков – это история того, как эти три идеи становились всё точнее, глубже и гибче. И именно те же три идеи нейронные кодеки 2026 года будут учиться извлекать из данных, а не проектировать вручную.
Зачем это нужно
Если вы финансируете, ведёте или продаёте что-либо, связанное с видео – стриминговый сервис, видеоконференцсвязь, surveillance, OTT-приложение – вы каждый день платите за битрейт. Каждый сэкономленный мегабит в потоке возвращается экономией на CDN, хранении, мобильном трафике и заряде батареи устройства пользователя. Уровень сжатия зависит от трёх научных идей, которые отрасль оттачивает с 1940-х годов, и инженеры будут ссылаться на них на любой встрече о кодеках, в которой вы окажетесь. После этой статьи вы поймёте, что измеряет энтропия, почему «предсказание» – это одно слово, за которым скрыты десятилетия исследований, почему DCT встречается почти в каждом видео и фото, которые вы видели, и почему нейросети – это сейчас следующая глава той же истории. Никаких предварительных знаний не нужно. Мы объясняем каждый термин простым языком до его использования и проговариваем математику вслух при первом появлении.
Три идеи в одной картинке
Перед историей – карта. Каждый современный видеокодек объединяет три ключевые идеи в одном и том же порядке.
Первый пласт – теория информации – это свод правил, который указывает энкодеру, насколько малым в принципе можно сделать файл при заданном уровне допустимых потерь в изображении. Без теории информации инженер не может определить, действительно ли новый кодек эффективнее или просто сэкономил битрейт за счёт чего-то другого. С её помощью любая метрика – бит на пиксель, BD-rate, VMAF при фиксированном битрейте – приобретает смысл.
Второй пласт, prediction, – это приём, при котором фрагмент видео описывается как небольшая правка по отношению к тому, что декодер уже знает. Фраза «уже знает» – ключевая. Декодер может опираться на соседний пиксель слева (intra-frame prediction), на тот же блок из предыдущего кадра (inter-frame prediction) или на взвешенное среднее блока из двух соседних кадров (B-frame prediction). Каждый успешный видеокодек, начиная с H.261 в 1988 году, использует prediction в первую очередь, потому что кадры реального видео почти никогда не бывают независимыми.
Третий этап, transform, – это преобразование, при котором блок пикселей (точнее, блок ошибок prediction) представляется в виде списка частотных коэффициентов. Большинство этих значений оказываются малыми или нулевыми, а к небольшим ошибкам в оставшихся глазах нечувствителен. Отбрасываем малые значения с помощью quantization, сжимаем оставшиеся – entropy coding, и у вас готова задняя часть рабочего видеокодека.
Остаток статьи рассказывает, как был открыт каждый пласт, что он на самом деле делает и куда движется это направление дальше.
Пласт первый – Теория информации: математический фундамент (1948–1959)
В октябре 1948 года инженер из Bell Labs по имени Клод Элвуд Шеннон опубликовал в двух частях статью A Mathematical Theory of Communication в журнале Bell System Technical Journal. 1 Эта работа заложила основы новой научной дисциплины – теории информации – и предоставила всем последующим исследователям язык, на котором до сих пор обсуждаются вопросы сжатия данных. Два её результата имеют особое значение для видео:
- Теорема о кодировании источника. У любого источника сообщений – будь то текст, аудио или пиксели – существует жёсткий нижний предел количества бит, необходимых для безпотерьного кодирования. Этот предел называется энтропией источника, обозначается H и измеряется в битах на символ. Шеннон доказал, что к значению H можно приблизиться сколь угодно близко, но опуститься ниже него невозможно.
- Теория скорости-искажений. Если вы готовы допустить D единиц искажений исходного сигнала, можно достичь степени сжатия, превосходящей предел безпотерьного кодирования. Конкретно: существует функция R(D) – функция скорости-искажений – определяющая минимально возможный битрейт при заданном уровне искажений. Шеннон впервые предложил её в 1948 году и строго формализовал в 1959-м. 2
Разберём оба пункта простым языком – на них держится остальная часть статьи.
Entropy в одном абзаце (и математика вслух)
Entropy – это мера удивления. Если символ всегда имеет одно и то же значение (например, монета, которая всегда падает орлом), он не несёт информации, и его энтропия равна 0 бит. Если у него много равновероятных значений (например, честный 256-гранный кубик), он несёт больше информации, и энтропия высока. Формула Шеннона для источника, выдающего символ i с вероятностью pᵢ:
«H = − Σᵢ pᵢ × log₂(pᵢ) бит на символ.»
Честная монета: H = −(0.5 × log₂ 0.5 + 0.5 × log₂ 0.5) = −(−0.5 − 0.5) = 1 бит на бросок. Монета, при падении которой орёл выпадает в 99 % случаев: H = −(0.99 × log₂ 0.99 + 0.01 × log₂ 0.01) ≈ 0.081 бит на бросок. Смещённая монета сжимается примерно в двенадцать раз эффективнее честной, поскольку она в двенадцать раз менее предсказуема.
Значения пикселей в реальном видео – не случайные величины, как честные монеты. Пиксель рядом с этим почти наверняка имеет близкое значение. Блок, на который вы сейчас смотрите, с большой вероятностью похож на тот же блок в предыдущем кадре. Эти два факта делают энтропию видео заметно ниже, чем можно было бы ожидать по количеству пикселей, – и именно в этом зазоре и работает любой компрессор.
Rate–distortion в одном абзаце
Теория rate–distortion описывает компромисс между количеством информации (битрейтом), необходимым для представления сигнала, и уровнем искажений, возникающих при его сжатии. Она устанавливает нижнюю границу битрейта, при которой можно закодировать сигнал с заданной точностью, измеряемой функцией искажения, такой как среднеквадратичная ошибка. Эта теория играет ключевую роль в проектировании эффективных алгоритмов сжатия, особенно в аудио- и видеотехнологиях, где важно минимизировать объём данных без чрезмерного ухудшения качества.
Для lossy-сжатия – а именно так работает любой видеокодек – второй вклад Шеннона называется rate–distortion theory. Зафиксируем метрику искажений (классический пример – mean squared error, современные – SSIM и VMAF) и допустимый уровень D. Тогда функция R(Д) – минимальный битрейт, при котором средние искажения не превышают D. Кривая R(Д) монотонно убывает: чем больше допустимые искажения – тем меньше требуется бит. Любой реальный кодек работает где-то выше своей теоретической rate–distortion-кривой; разрыв между «где мы сейчас» и «где позволяет Шеннон» – это запас для следующего поколения.
Почему это изменило кодирование видео
Теория информации принесла отрасли три новых элемента, которых не существовало до 1948 года:
- Способ определить приз: минимальный возможный размер файла. Без энтропии любое утверждение «мы сжали лучше» оставалось лишь мнением.
- Способ оценивать работу: и бит на пиксель, и BD-rate (delta-rate по Bjøntegaard – площадь между двумя rate-distortion-кривыми) напрямую вытекают из теории rate–distortion.
- Способ выбирать, что делать дальше: чем выше текущий кодек отстаёт от своего теоретического предела, тем больше пространства для следующего поколения. Как мы обсудим ниже, этот разрыв сильно сократился, и вопрос «насколько близко мы уже к пределу» – центральный для кодеков в 2026 году.
Связь от Шеннона к битстриму проходит через служебный слой под названием entropy coding – Huffman (1952), arithmetic coding (1976–1981) и Context-Adaptive Binary Arithmetic Coding или CABAC (2003). Этот слой мы подробно разбираем в статье Entropy coding: краткое введение (Huffman, arithmetic, CABAC). Главное здесь: entropy coding – это последний этап, на котором поток чисел действительно преобразуется в минимально возможную строку битов. Всё остальное в кодеке – подготовка к этому шагу.
Пласт второй – Prediction: не отправляй то, что декодер может угадать (1969–1981)
Второй прорыв проще всего описать, но труднее всего реализовать хорошо. Prediction – это приём, при котором новый фрагмент видео описывается как небольшая правка к тому, что уже есть у декодера. Чем хуже предсказание, тем больше битов требуется для передачи этой правки. Суть в том, чтобы предсказывать максимально точно, чтобы правка – она же residual – была как можно ближе к нулю.
От отправки пикселей к передаче разностей (1952–1969)
До предсказания каждый пиксель кодировался как число от 0 до 255. Классический приём 1952 года – differential pulse-code modulation (DPCM): вместо самого пикселя передаётся разность между ним и значением предсказания, вычисленным по соседним пикселям сверху и слева. В гладких областях изображения такие разности малы и сосредоточены около нуля, поэтому сжимаются эффективнее. DPCM стал первым коммерчески успешным предиктивным кодером и десятилетиями использовался в ранних форматах статичных изображений.
Первый по-настоящему интересный прогноз в видео появился в 1969 году, когда F. W. Mounts в Bell Labs предложил conditional replenishment. 3 Идея проста: в типичном кадре большинство пикселей не изменилось по сравнению с предыдущим – значит, их можно не передавать. Энкодер для каждого блока принимает бинарное решение – «изменился» или «не изменился». Неизменённые блоки полностью пропускаются; декодер просто сохраняет их предыдущее значение. Изменённые блоки передаются. Это было первое явное использование временной избыточности в видео, и экономия битов при обычной съёмке с говорящим человеком оказалась значительной.
Слабость conditional replenishment очевидна: если камера или объект хоть немного двигаются, почти каждый блок становится «изменившимся», и сжатие теряет эффективность. Чтобы учитывать движение, нужна более продвинутая технология.
Компенсация движения (1969–1981)
Что-то поумнее пришло в три волны.
Волна один – pel-recursive motion estimation. В 1970-х годах A. N. Netravali и J. D. Robbins из Bell Labs научились оценивать смещение каждого пикселя между кадрами и использовать смещённый пиксель из предыдущего кадра в качестве прогноза для текущего. 4 Их статья 1979 года «Motion-Compensated Television Coding» показала, что компенсация движения позволяет примерно вдвое снизить битрейт по сравнению с чистым условным восстановлением, и закрепила за методом название motion-compensated prediction, которым мы пользуемся до сих пор.
Волна два – block matching. В 1981 году J. R. Jain и A. K. Jain опубликовали статью «Displacement Measurement and Its Application in Interframe Image Coding» в журнале IEEE Transactions on Communications 5. Вместо оценки смещения для каждого пикселя по отдельности они разделили кадр на небольшие прямоугольные блоки (обычно размером 16 × 16 пикселей) и для каждого блока искали оптимальное смещение в пределах окна поиска на предыдущем кадре. Это смещение называют motion vector. «Лучшим совпадением» считается тот кандидат в окне поиска, у которого минимальна сумма абсолютных разностей (sum of absolute differences) с текущим блоком. В том же году Т. Кога и его коллеги независимо предложили по сути тот же алгоритм. Block-matching motion estimation – архитектура, используемая во всех стандартных кодеках, начиная с H.261 (1988).
Причина победы block matching – не математика, а инженерия. Pel-recursive-оценщик в принципе способен дать более точное поле смещений, но его пришлось бы запускать и на декодере, что слишком дорого. В случае block matching энкодер выполняет всю работу по поиску, отправляет найденные небольшие motion vectors, а декодер делает дешёвую операцию – копирует блок 16×16 из предыдущего кадра по указанному смещению. Асимметрия «пусть энкодер работает, лишь бы декодеру было легко» – именно так эту идею и называют в отрасли – была заложена тогда и с тех пор остаётся неизменной.
Волна три – sub-pixel-точность и B-frames. Быстро появились два важных уточнения. Sub-pixel motion vectors (half-pel в H.261, quarter-pel в MPEG-4 ASP и H.264, до 1/8-pel в некоторых режимах VVC) позволяют энкодеру описывать движение, не попадающее в целочисленную пиксельную сетку, с помощью интерполяции между соседними пикселями reference-кадра. Bidirectional prediction (буква B в B-кадрах) позволяет предсказывать блок как взвешенную комбинацию одного прошлого и одного будущего кадра – это особенно эффективно при кратковременных перекрытиях и плавных переходах. Подробно о B-кадрах мы рассказываем в статье GOP-структура: I, P, B-кадры, open vs closed GOP; здесь важно: удачный B-кадр требует примерно на 30–40% меньше бит, чем эквивалентный P-кадр.
Intra prediction: предсказание внутри кадра, а не из предыдущего
Поздним, но важным дополнением стал intra-frame prediction. У первого кадра видео или первого кадра новой сцены нет предыдущего кадра, на основе которого можно было бы делать предсказания. Первое поколение кодеков просто кодировало каждый такой блок «как есть». В 2003 году H.264 добавил важную идею: даже внутри одного кадра блок, который вы собираетесь закодировать, почти наверняка похож на пиксели вдоль его верхнего и левого краёв – ведь они уже декодированы и доступны. Значит, можно предсказать текущий блок 4 × 4 или 8 × 8 как направленную копию этих соседей – вниз, по диагонали, по горизонтали и так далее – и кодировать только residual.
H.264 предлагал 9 режимов intra-кодирования на блок 4×4. HEVC увеличил их до 35 направлений на блок, у AV1 – 56 направленных режимов плюс несколько ненаправленных, а в развивающемся драфте AV2 – около 80. Каждое новое поколение тратит кремний и время энкодера на улучшение предсказания, потому что каждый дополнительный режим позволяет сократить объём residual-бит.
Почему прогнозирование так важно
Для среднего видео residual – разность между кадром и наилучшим предсказанием энкодера – имеет энтропию примерно на порядок ниже, чем энтропия исходных пикселей. Это означает, что остальная часть кодека (преобразование, квантование, энтропийное кодирование) работает уже с сигналом, информационное содержание которого в 10 раз меньше, чем у исходного кадра. Всё остальное в энкодере лишь усиливает то, что уже сделал блок предсказания.
Поэтому каждое поколение кодеков тратит большую часть новых транзисторов и страниц стандарта на предсказание. Intra-предсказание в H.264 стало значительным шагом вперёд по сравнению с MPEG-4 ASP. Расширенные направленные intra-режимы и более крупные inter-блоки в HEVC обеспечили большую часть той самой 50%-ной экономии. Compound prediction в AV1 (смесь двух motion-compensated reference-блоков с масками и wedge-границами) – один из главных источников его эффективности. Нейронные видеокодеки 2026 года – такие как семейство DCVC от ByteDance и NVRC от Disney – явно строят свою архитектуру по принципу «сначала обучаем предсказание, потом – сжатие остатка», поскольку та же логика продолжает работать.
Пласт третий – Transform: перепакуй пиксели так, чтобы большую часть можно было выбросить (1947–1974)
Третий пласт – transform. Идея в следующем: взять небольшой блок чисел (после prediction – это residual, то есть ошибка предсказания) и преобразовать его в другой набор чисел так, чтобы большинство новых значений были близки к нулю, а несколько крупных несли почти всю «энергию» исходного блока. Затем квантуем малые значения – и тем самым экономим биты, не теряя при этом видимого качества.
KLT: теоретически оптимален, практически непригоден (1947)
Математическая основа этой идеи восходит к статистике 1940-х годов – это Karhunen–Loève transform (KLT), иногда называемый преобразованием Хотеллинга или просто анализом главных компонент. Для заданного источника – например, блока пикселей 4 × 4 – KLT является единственным преобразованием, которое полностью устраняет корреляцию в блоке и сосредоточивает максимум энергии в минимальном числе коэффициентов. С точки зрения теории информации KLT – оптимальное преобразование для любого гауссовского источника. 6
Звучит как конец истории. Но это не так. У KLT три проблемы, из-за которых он остаётся вне любого реального кодека уже восемьдесят лет:
- Он зависит от данных. Базисные векторы KLT – это собственные векторы ковариационной матрицы источника. Как только меняется статистика источника, нужен новый KLT. Либо базис приходится передавать с каждым блоком (что создаёт большой оверхед), либо кодек заранее договаривается о фиксированном базисе – и тогда преобразование перестаёт быть оптимальным для конкретного блока.
- Нет эффективного быстрого алгоритма. Вычисление KLT на блоке размером N×N требует O(N³) операций и не использует никакой полезной структуры. В отличие от этого, DCT на блоке N×N выполняется за O(N² log N) благодаря быстрому алгоритму, похожему по структуре на FFT.
- Даже на своей «родной» области – марковских источниках первого порядка – асимптотическое преимущество над DCT минимально. Для изображений, похожих на реальные, DCT отстаёт от KLT всего на доли децибела, а при добавлении шума квантования этот разрыв ещё больше сокращается. 7
За всю историю стандартного видеокодирования KLT был эталоном для сравнения, а не реально используемым преобразованием. На практике в продакшен пошёл куда более удобный его близкий родственник.
DCT (1974): рабочая лошадка, которая покорила мир
В январе 1974 года в журнале IEEE Transactions on Computers была опубликована трёхстраничная статья Насира Ахмед, Таральда Натараджана и К. Рамамохана Рао под названием Discrete Cosine Transform. 8 Ахмед размышлял над этой задачей с 1972 года; практический алгоритм был разработан совместно с Натараджаном и Рао в Техасском университете в Арлингтоне. В статье были представлены то, что сегодня известно как DCT-II, обратный DCT-III, а также целочисленный быстрый алгоритм, позволивший реализовать всё семейство преобразований в реальном времени на вычислительной технике того времени.
DCT делает с блоками изображения то же, что преобразование Фурье – со временными сигналами: переписывает блок как взвешенную сумму косинусоид различных пространственных частот. Первый коэффициент (DC-коэффициент, по аналогии с электротехникой) – это средняя яркость блока. Остальные 63 коэффициента в блоке 8 × 8 описывают волны более высоких частот – сначала линейные градиенты, затем мелкую фактуру, а в правом нижнем углу – очень мелкую.
Для натуральных изображений сразу полезны три вещи:
- Энергетическая компактность. Реальные фотоблоки в среднем гладкие, поэтому почти вся энергия сосредоточена в верхнем левом углу коэффициентов. Нижние правые – как правило, очень малы.
- Декорреляция. DCT-коэффициенты блока естественного изображения почти статистически независимы. Это означает, что шум квантизации распределяется равномерно и не коррелирует с исходным сигналом, вызывая неприятные артефакты.
- Перцептуальное соответствие. Человеческое зрение гораздо чувствительнее к низким частотам (плавным изменениям яркости на больших участках), чем к высоким (мелкой фактуре). Поэтому коэффициенты высоких частот можно квантуем гораздо жёстче, чем низких – и глаз большую часть потерь не заметит. Именно эту перцептуальную асимметрию и отражают знаменитые таблицы квантизации JPEG.
DCT впервые применяется в кодировании неподвижных изображений (JPEG, утверждён в 1992 году 9), а затем – во всех видеокодеках, начиная с H.261 (1988). Это, без сомнения, самый широко распространённый преобразовательный метод обработки сигналов в истории.
Дети DCT: integer-трансформы, ADST, семейство AV2
Современные кодеки не используют точный DCT из статьи 1974 года. Вместо этого они применяют integer-аппроксимации, адаптированные под размерную сетку coding unit конкретного кодека. Три причины:
- Integer-трансформы строго обратимы. Оригинальный DCT использует иррациональные значения косинусов, а округление при вычислениях с плавающей точкой может вызывать небольшие расхождения между энкодером и декодером. Integer-аппроксимации устраняют эту проблему, что особенно важно, когда множество декодеров должно битово точно воспроизводить один и тот же поток.
- Они быстрее на любом CPU. Умножение целых чисел выполняется быстро, особенно на SIMD- и матричных блоках, которые лежат в основе аппаратной реализации кодеков.
- Их можно согласовывать с другими инструментами кодека – например, выравнивать базисные векторы трансформации по направлениям режимов intra-предсказания.
H.264 ввёл первый integer DCT – 4 × 4. HEVC добавил integer DCT и DST (Discrete Sine Transform) в размерах 4, 8, 16 и 32. AV1 ввёл целое семейство преобразований: помимо DCT, кодер может использовать ADST (Asymmetric DST), FLIPADST (перевёрнутый вариант для остатков, у которых энергия сосредоточена в нижней части блока) и IDTX (identity transform – полезен, когда остаток уже разреженный). Кодировщик выбирает оптимальное преобразование для каждого блока с помощью rate–distortion оптимизации. VVC и разрабатываемый AV2 добавляют ещё больше вариантов преобразований и поддерживают более крупные размеры блоков.
KLT по-прежнему остаётся асимптотическим потолком, с которым всё сравнивают. Через 46 лет после статьи Ahmed–Natarajan–Rao DCT и его близкие родственники по-прежнему находятся в пределах долей децибела от этого предела, при этом требуя лишь ничтожной доли вычислительных затрат. Именно поэтому DCT – в фольклоре кодирования – считается самой долговечной инженерной находкой в обработке сигналов.
Как это работает: гибридная блоковая конвейерная обработка
Сложите три прорыва друг на друга в правильном порядке – и получится hybrid block-based architecture, которой пользуются все стандартные кодеки, начиная с H.261. Энкодер выполняет шаги в одном порядке, а декодер – в обратном, чтобы восстановить изображение.
Энкодер обрабатывает блок пикселей, предсказывая его на основе соседних пикселей или предыдущего кадра, вычисляет residual (ошибку предсказания), трансформирует residual в частотные коэффициенты, квантует их (единственный этап, при котором теряется информация) и энтропийно кодирует результат в максимально короткую битовую строку. Параллельно энкодер локально выполняет обратные три шага, чтобы восстановить ту же картинку, которую увидит декодер, и использовать её в качестве опорного изображения для предсказания следующего блока. In-loop filter (deblocking, SAO, ALF, CDEF – названия зависят от кодека) очищает реконструкцию перед тем, как она попадёт в буфер опорных кадров. Подробно архитектуру мы разбираем в Архитектура гибридного видеокодека.
Hybrid-архитектура с 1988 года не претерпела изменений. Стрелки остались на месте. В каждом новом поколении менялись содержимое блоков: всё более крупные и адаптивные блоки, всё большее число prediction-режимов, всё больше вариантов трансформаций, всё более умные квантователи и entropy-кодеры. Каждое изменение приносило несколько процентов экономии битрейта. За сорок лет таких улучшений накопилась порядковая разница между MPEG-1 и AV1.
Четвёртая опора, на которой всё держится: оптимизация соотношения скорости и искажений
Есть ещё одна идея, которая сама по себе не является настоящим «прорывом», но заслуживает отдельного абзаца, потому что именно она позволяет трём остальным действительно приносить выигрыш в живом энкодере.
Типичный 4K-блок в кодеке 2026 года допускает сотни возможных комбинаций режимов кодирования: выбор prediction-режима, трансформации, шага квантования, разбиения и опорного кадра. Энкодер не может выбирать случайно – он подбирает комбинацию, минимизирующую лагранжеву стоимость вида:
«J = D + λ × R»
где D – искажение (обычно сумма квадратов разностей между оригиналом и реконструкцией), R – количество бит, которое потребуется для кодирования кандидата, а λ (лямбда) – параметр настройки, определяющий баланс между качеством и битрейтом. Этот механизм rate–distortion optimization был формализован для видео Гэри Салливаном и Томасом Вигандом в конце 1990-х годов и стал центральной архитектурной идеей энкодера H.264. 10 Он по-прежнему используется во всех современных эталонных энкодерах – таких как libaom AV1 encoder, VVC test model VTM и семейства x264 / x265 / SVT-AV1. Подробнее с нуля – в статье Mode decision и rate-distortion optimization (RDO).
Связь с Шенноном – прямая. J = D + λR – это лагранжева двойственность к шенноновской кривой R(D). RDO – это практический алгоритм, заставляющий реальный энкодер работать как можно ближе к границе rate–distortion в рамках доступных режимов кодирования.
Частая ошибка: путаница между тремя уровнями
Паттерн, который мы часто видим в обзорах и презентациях вендоров, – приписывать одному компоненту успех, достигнутый за счёт другого. На несколько примеров, на которые стоит обратить внимание:
- «AV1 эффективнее за счёт новых трансформов». Меню трансформов у AV1 действительно шире, чем у H.264, но основная часть его 30%-ной экономии битрейта по сравнению с H.264 достигается за счёт более развитой системы предсказания (большего числа intra-режимов, compound inter prediction, более крупных блоков) и RDO-оптимизированного партиционирования. На сами трансформы приходится лишь однозначный процент выигрыша.
- «HEVC экономит биты благодаря лучшему entropy coding». CABAC в HEVC лишь незначительно улучшен по сравнению с H.264, однако основная часть 50%-ной экономии битрейта в HEVC достигается за счёт более крупных Coding Tree Units (до 64 × 64), увеличения числа направленных intra-режимов и улучшенной передачи motion-векторов. На энтропийное кодирование приходится 5–10% от заявленной экономии.
- «Нейронные кодеки выигрывают за счёт ML в entropy coding». Некоторые – да: варианты DCVC от ByteDance действительно используют обученную hyperprior-модель для предсказания распределения латентных переменных. Однако куда больший выигрыш в нейронных кодеках 2025–2026 годов достигается за счёт обученного предсказания, фактически заменяющего и motion estimation, и трансформы единой learned encoder-decoder сетью. При этом информационно-теоретическая основа остаётся прежней.
Когда читаете анонс кодека, мысленно определите, к какому из трёх пластов приписывается выигрыш, и спросите себя, насколько такое приписывание правдоподобно. Вендор, который не разделяет пласты, скорее всего, не измерял их по отдельности.
Современный фронт: нейронные кодеки – это четвёртый пласт?
Три описанных слоя спроектированы вручную. Базисные векторы DCT определены разработчиками. Набор intra-режимов утверждён комитетом. Форма модели энтропии зафиксирована в стандарте. У энкодера есть свобода выбирать из предложенного стандартом набора, но сам этот набор остаётся неизменным.
С 2018 года публикуются end-to-end нейронные видеокодеки, призванные отказаться от жёсткой фиксации архитектуры. Энкодер – это свёрточная или основанная на трансформерах нейросеть, которая на вход получает сырые кадры и выдаёт небольшой набор латентов – обученных сжатых представлений. Декодер – другая нейросеть, обратная энкодеру, восстанавливающая кадр по латентам. Пара обучается минимизировать rate–distortion-ошибку в лагранжевой форме J = D + λR – то есть Шенноновскую кривую, при этом все три слоя (энкодер, латентное пространство и декодер) обучаются на данных, а не проектируются вручную. 11
К концу 2024 года семейство DCVC (Deep Contextual Video Compression, изначально разработанное в Microsoft Research Asia) стало первым learned-кодеком, сумевшим превзойти H.266 / VVC по PSNR на стандартных тестовых последовательностях. 12 К 2025 году generative-нейронные кодеки на основе diffusion-моделей, такие как GNVC-VD от ByteDance, демонстрировали значительные перцептуальные преимущества при крайне низких битрейтах (ниже 0,01 бита на пиксель), хотя сложность декодирования оставалась на несколько порядков выше, чем у VVC. NVRC (Neural Video Representation Compression) – подход на основе INR, представленный в 2024 году, – показал выигрыш в BD-rate на 23% по сравнению с эталонным энкодером VVC на датасете UVG. 13
Станет ли end-to-end neural codec по-настоящему четвёртым уровнем – зависит от ответа на один инженерный вопрос: сможет ли декодер уложиться в энергобюджет и объём памяти смартфона или smart-TV? Сегодня ответ – нет: даже самые компактные нейронные декодеры требуют миллиардов FLOPs на кадр, тогда как аппаратный декодер AV1 обходится сотнями миллионов. Гибридный подход с нейросетью – то есть использование нейросети только на одном этапе классического кодека (например, эксперименты AOMedia с CNN-основанным in-loop фильтром для AV2) – выглядит более вероятным первым коммерческим путём. Отслеживаем эту гонку в Будущее: AV2, neural codecs, end-to-end learned compression.
Безопасное операционное предположение на ближайшие три года для всех, кто планирует инфраструктуру: три классических слоя никуда не исчезнут, hardware-декодеры под AV1 и AV2 останутся вашими основными кодеками доставки, а нейронное сжатие будет применяться как quality enhancement layer (суперразрешение, шумоподавление, интерполяция кадров) поверх гибридного потока – не вместо него. Cheat sheet внизу статьи поможет отслеживать ключевые вехи.
Где здесь Фора Софт
Фора Софт с 2005 года поставила 239 систем видеопроизводства для видеоконференций, OTT и IPTV, видеостриминга, видеонаблюдения, e-learning, телемедицины и AR/VR. В каждом таком проекте выбор кодека – а значит, и приоритет в использовании научных прорывов – определяет архитектуру решения. На low-latency WebRTC мы жертвуем эффективностью сжатия ради низкой сложности декодера и коротких GOP. В high-volume OTT – наоборот, делаем ставку на лучшее предсказание в HEVC и AV1, несмотря на необходимость более мощных encoder farms. В системах видеонаблюдения тот же механизм предсказания, который отлично сжимает спортивные съёмки, позволяет реализовывать motion-triggered хранение данных при битрейте, составляющем долю от непрерывной записи. Эти три направления – не абстракция. Это рычаги, которые мы настраиваем каждый раз, когда проектируем стриминговое или видеорешение под конкретного клиента.
Главное
- Современные видеокодеки строятся на трёх прорывах: теория информации Шеннона (1948), motion-compensated prediction (1969–1981) и discrete cosine transform (1974).
- Теория информации – это набор правил, определяющих минимально возможный размер файла и кривую R(D), которой стремится следовать любой кодек.
- Предсказание – главный источник сжатия: обычно оно даёт выигрыш в 10 раз ещё до применения преобразования и квантования.
- DCT и её целочисленные аналоги находятся всего в долях децибела от теоретически оптимального KLT, при этом обходятся в крошечную долю его вычислительной стоимости.
- Оптимизация по скорости и искажению (J = D + λR) – это алгоритм энкодера, объединяющий все три компонента в реальный битовый поток.
- Нейронные кодеки в 2026 году обучаются тем же трём принципам на данных, но дефицит энергобюджета пока не позволяет им занять место в массовом распространении.
Что читать дальше
- Архитектура гибридного видеокодека – подробный разбор четырёхэтапного конвейера (предсказание, преобразование, квантование, кодирование).
- Entropy coding: краткое введение (Huffman, arithmetic, CABAC) – безпотерное «дожатие» после квантования.
- Сколько можно сжать: предел Шеннона и где мы сейчас – кривая R(D) в цифрах и насколько каждый кодек приближается к теоретическому пределу.
Источники
- Shannon, C. E. (1948). A Mathematical Theory of Communication. Bell System Technical Journal, 27(3), 379–423 и 27(4), 623–656. Основополагающая статья теории информации; вводит entropy, source coding theorem и channel capacity.
- Shannon, C. E. (1959). Coding theorems for a discrete source with a fidelity criterion. IRE National Convention Record, Part 4, 142–163. Формальное введение rate-distortion theory.
- Mounts, F. W. (1969). A Video Encoding System Using Conditional Picture-Element Replenishment. Bell System Technical Journal, 48(7), 2545–2554. Первое явное использование temporal redundancy в видео.
- Netravali, A. N., & Robbins, J. D. (1979). Motion-Compensated Television Coding: Part I. Bell System Technical Journal, 58(3), 631–670. Определяет motion-compensated prediction; вводит сам термин.
- Jain, J. R., & Jain, A. K. (1981). Displacement Measurement and Its Application in Interframe Image Coding. IEEE Transactions on Communications, COM-29(12), 1799–1808. Block-matching motion estimation, full search и 2-D logarithmic search.
- Akansu, A. N., & Torun, M. U. (2015). A Primer for Financial Engineering: Financial Signal Processing and Electronic Trading. Academic Press. Глава об оптимальности KLT и формальное доказательство, что KLT максимизирует coding gain для гауссовских источников.
- Effros, M., Feng, H., & Zeger, K. (2004). Suboptimality of the Karhunen–Loève Transform for Transform Coding. IEEE Transactions on Information Theory, 50(8), 1605–1619. Доказательство того, что KLT не оптимален в связке с uniform scalar quantization.
- Ahmed, N., Natarajan, T., & Rao, K. R. (1974). Discrete Cosine Transform. IEEE Transactions on Computers, C-23(1), 90–93. Вводит DCT-II и его быстрый алгоритм; фундамент JPEG, MPEG, H.26x.
- Wallace, G. K. (1992). The JPEG Still Picture Compression Standard. IEEE Transactions on Consumer Electronics, 38(1), xviii–xxxiv. Reference-папир, определивший, как именно DCT используется в JPEG.
- Sullivan, G. J., & Wiegand, T. (1998). Rate-Distortion Optimization for Video Compression. IEEE Signal Processing Magazine, 15(6), 74–90. Каноническая практическая ссылка по Lagrangian RDO в видео-энкодерах.
- Lu, G., Ouyang, W., Xu, D., Zhang, X., Cai, C., & Gao, Z. (2019). DVC: An End-to-end Deep Video Compression Framework. CVPR 2019. Первый полностью end-to-end learned видеокодек, превзошедший H.264.
- Li, J., Li, B., & Lu, Y. (2023). Neural Video Compression with Diverse Contexts. CVPR 2023. Статья DCVC-DC; первый learned-кодек, обогнавший reference-энкодер VVC по PSNR на нескольких test-set-ах.
- Kim, T., Oh, T., Hauptmann, A., & Park, T. (2024). NVRC: Neural Video Representation Compression. NeurIPS 2024. INR-based learned codec с 23% BD-rate выигрыша над VTM-RA на UVG.