Добавить в корзинуПозвонить
Найти в Дзене

Сжатие видео, почему это вовсе не так просто, как кажется

Ох,
вечно приходят и ноют: "Мастер, почему у меня видео такое тяжёлое?
Можно его как-нибудь сжать, чтобы на телефон влезло?" И думают, что это
так просто, нажал кнопку, и всё. Никто не задумывается, что за этим
процессом стоит целая наука. Сейчас я вам объясню, что такое Video
Compression и почему это вообще возможно.
Если в двух словах,
Video Compression, или сжатие видео,, это процесс уменьшения размера
видеофайла. Ну, это и так понятно. Но как это делается? Тут-то и
начинается самое интересное. Видео, это, по сути, последовательность
кадров. Один кадр, это статичная картинка, состоящая из пикселей. И вот
представьте себе, что каждая секунда видео, это 24, 30 или даже 60 таких
картинок. Если бы мы хранили каждый пиксель каждого кадра, файл был бы
просто колоссальных размеров. В нём были бы гигабайты и гигабайты
ненужной информации.
И вот для этого придумали две основные
стратегии сжатия. Первая, это внутрикадровое сжатие. Оно работает с
каждым кадром по отдельности.


Сжатие видео, почему это вовсе не так просто, как кажется
Сжатие видео, почему это вовсе не так просто, как кажется

Ох,
вечно приходят и ноют: "Мастер, почему у меня видео такое тяжёлое?
Можно его как-нибудь сжать, чтобы на телефон влезло?" И думают, что это
так просто, нажал кнопку, и всё. Никто не задумывается, что за этим
процессом стоит целая наука. Сейчас я вам объясню, что такое Video
Compression и почему это вообще возможно.

Если в двух словах,
Video Compression, или сжатие видео,, это процесс уменьшения размера
видеофайла. Ну, это и так понятно. Но как это делается? Тут-то и
начинается самое интересное. Видео, это, по сути, последовательность
кадров. Один кадр, это статичная картинка, состоящая из пикселей. И вот
представьте себе, что каждая секунда видео, это 24, 30 или даже 60 таких
картинок. Если бы мы хранили каждый пиксель каждого кадра, файл был бы
просто колоссальных размеров. В нём были бы гигабайты и гигабайты
ненужной информации.

И вот для этого придумали две основные
стратегии сжатия. Первая, это внутрикадровое сжатие. Оно работает с
каждым кадром по отдельности. Например, в одном кадре есть большое
однотонное поле, скажем, голубое небо. Вместо того чтобы описывать
каждый пиксель этого неба по отдельности, кодек (программа, которая
занимается сжатием) просто говорит: "Отсюда и досюда всё голубое". Это
очень сильно экономит место. Похоже на то, как если бы вы вместо
длинного списка покупок просто написали: "10 кг картошки".

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

Но и это ещё не всё. Есть два типа кадров: опорные и
разностные. Опорные, или I-кадры (от Intra),, это полные, полноценные
картинки, которые хранятся как есть, без привязки к другим кадрам.
Разностные бывают двух типов: P-кадры (от Predictive) и B-кадры (от
Bi-directional). P-кадры предсказывают своё содержимое на основе
предыдущего кадра, а B-кадры, на основе как предыдущего, так и
следующего. Это позволяет ещё больше сократить размер файла. Получается,
что в видеопотоке есть только несколько полных кадров, а между ними,
куча инструкций о том, как "передвинуть" или "изменить" части
предыдущего кадра, чтобы получить следующий. Это всё и называется
кодеком, который управляет процессом сжатия и распаковки.

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