adblock check

Как работает сжатие видео

В новом материале я расскажу вам о свойствах и базовых принципах, которые применяются при кодировании и сжатии видеофайлов

Любой видеоролик представляет собой набор статичных кадров поочередно сменяющих друг друга с разной скоростью. Одни из таких значений, утвердившихся в видеоиндустрии – 23.976, 24, 25 и 29.97 кадров в секунду.

Как работает сжатие видео

Например – со скоростью 24 кадра в секунду снимают фильмы на кинопленку, а 25 кадров и 29,97 являются стандартом телевещания в странах Европы и США. В последующем мы будем называть это видеопотоком. Кроме частоты смены кадров, любой видеофайл имеет следующие характеристики:

  • Формат пикселя – любое изображение, не важно статическое или динамическое, состоит из пикселей, каждый из которых несет в себе лишь информацию об определенном цвете. Однако восприятие цвета, как в цифровом, так и реальном мире, штука очень субъективная. Посему инженерами киноиндустрии были приложены огромные усилия к тому, чтобы приблизить внешний вид фото и видео, снятых на цифровые либо пленочные камеры, к реальному. Было решено использовать схему RGB24 (Red, Blue, Green), так как изменением значений каждого из этих каналов можно максимально тонко и подробно работать с цветовой тонировкой изображений, либо видео. Ну и чтобы во время съемки можно было захватить практически весь спектр оттенков цветов. Посчитать эту цифру не так уж и сложно, каждый из цветов кодируется восемью битами, соответственно всего камера может принять и передать 256 градаций цвета, ну либо 16,7 млн всех возможных оттенков.
  • Формат кадра – это следующая характеристика, которой обладает любой видеофайл. Обозначается он обычно числом строк (высотой кадра) и первой буквой из названия типа развертки. Всего их два: прогрессивный («p» progressive) и чересстрочный («i» Interlaced). Так, к примеру, расшифровка формата кадра видео 1080p уже не кажется такой загадочной, ведь 1080 это высота кадра, а «p» – прогрессивный тип развертки.
  • Размер кадра – вам наверняка покажутся знакомыми эти цифры (640x480, 720x480, 720x576, 1280x720, 1920x1080). Почему? Потому что каждые из них фигурируют в разных стандартах видео. Например 720x576 используется на относительно позабытых многими DVD–дисках, а 1280x720 и 1920x1080 часто фигурируют как цифровые веб–форматы. Первое число обозначает ширину кадра, а второе – его высоту, и само собой видео обладающее меньшим разрешением (размером кадра) несет в себе гораздо меньше информации и данных.

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

Как работает сжатие видео

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

Как работает сжатие видео

Все же, почему видео нужно сжимать? Банально, для экономии свободного места на хранилище. Давайте примерно представим, сколько будет весить фильм длительностью в 90 минут, с размером кадра 1920х1080 и скоростью 24 кадра в секунду. Кого-то это цифра может и не удивит, но объем такого файла будет составлять аж 750 Гб. Если вы владелец онлайн-кинотеатра, то вам вряд ли хватит каких-либо денег на то, чтобы обеспечить хранение огромной библиотеки, состоящей из тысяч бестселлеров на хостинге в несжатом формате, а скорость доступа к таким файлам явно не обрадует зрителей.

Как работает сжатие видео

При этом, видео на формате Blu–Ray будет аналогичного качества, имея при этом размер в каких–то жалких 20 Гб. Да даже более сильное сжатие, позволяющее уменьшить размер хоть в сто раз, вряд ли оставит зрителя без восторга от увиденного. Ладно, хватит лирики, перейдем к сути. На чем же конкретно экономят в процессе сжатия видео?

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

Оказывается, любая картинка в цифровом, либо аналоговом сигнале кодируются форматом YUV, который состоит из двух компонентов – карты яркости и цветовой маски. Переменная Y обозначает яркость, а U и V это цветовые компоненты, которые рассчитываются по этим формулам:

U = -0.14713 * R — 0.28886 * G + 0.436 * B
V = 0.615 * R — 0.51499 * G — 0.10001 * B

Таким образом, разделив изображение на три условных слоя, один из которых (Y) будет яркостным, а два остальных (U и V) цветовыми масками, кодирование сокращает видео в два раза, по ширине и высоте, при этом визуально сохраняя большую часть общей информации, потому что оказывается наше зрение не так притязательно к восприятию цвета, а вот к яркости особо чувствительно.

Следовательно, объем каждого пикселя сокращается в два раза, с условных 24 до 12 единиц. Ведь, как правило, цвета на объектах от кадра к кадру не так уж и часто меняются, поэтому такое цветовое прореживание не несет в себе потенциальную опасность в плане возникновения серьезных артефактов. Подобным образом работает и JPEG.

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

Как работает сжатие видео

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

Как работает сжатие видео

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

На картинках можно четко увидеть межкадровую разницу, а вот отличия между исходным кадром и скомпенсированным не так заметны. Если учесть объемы информации, то при сжатии изображений у нас есть возможность, практически без каких-либо проблем, сохранить вектора движения. Сделать можно это и потом, когда алгоритм уже сжал изображение методом межкадровой разности. Но как вы можете заметить, на второй картинке возник откровенно сильный эффект блочности. Это возникает в том случае, если алгоритм слишком сильно сжимает изображение. Из реальных ситуаций могу привести пример, когда алгоритмы кодеков ТВ–вещания не отрабатывают резкие изменения в яркости от вспышек фотокамер с вещаемых мероприятий.

Как работает сжатие видео

И вот, после всех процедур сжатия файла, коэффициенты все равно имеют избыточность. Для её устранения и уравнивания, например в кодеке H.264, используются две математические модели CABAC и CAVLC, занимающиеся арифметическим сжатием без потерь, при помощи вероятностной модели Хаффмана.

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

Спасибо за внимание!

podogreykin podogreykin
Пользователь
6 комментариев по лайкам по дате
Оставьте комментарий...
Оставьте комментарий...
Pavell62 5 лет

Очень хорошая познавательная статья
Alex2733 5 лет
Ну в общем-то как и все остальные статьи Василия.
cool_max 5 лет
Подогрейкин подогревает интерес к своим статьям!
amigo120 5 лет
Все вышеперечисленное относится к локальным (постоянным) свойствам видеофалов, но также есть и динамические свойства.
podogreykin 5 лет
Автор
Фиксед)
djigstar 5 лет

у меня еще такой вопрос остался CBR / VBR 1 именно в видео. Что быстрее и лучше кодирует в Premiere в теории?