Сделай видео

Сжатие видео. I кадры, Р кадры, B кадры

Просмотров: 23048Комментарии: 0
Дополнительные полезности

В этом уроке:

I и P кадры

B-кадры

Последовательность I, P и B-кадров



I и P кадры

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

Последовательность кадров


Рисунок 1. Последовательность кадров.


На рисунке вы видите последовательность из 9 кадров. На видео, кадры из которого здесь представлены, все объекты находятся в движении. Если сравнить 1-ый и 2-ой кадры, то найти отличия между ними достаточно сложно. Боле-мене, различия видны, если сравнивать не соседние кадры, а например 1-ый и 4-ый.

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

Чтобы вы лучше поняли о чем идет речь, приведу пример.

Предположим имеется видео: черный квадрат, который снят на разноцветном фоне перемещается вправо (рис. 2).

Запись I и P-кадров


Рисунок 2. Запись I и P-кадров


Как видно на первом кадре черный квадрат находится в центре, а во втором кадре смещен вправо.

Если представить себе запись первого (I) кадра на «человеческом» языке, то она будет выглядеть так:

Блок «а1» - красный, блок «б1» - белый …. блок «з1» - синий.

Далее следует вторая строка: блок «а2» - синий, блок «б2» - голубой, .... и так до конца, пока не будет описаны все блоки (в нашем примере их 64) заканчивая «з8».



Теперь самое интересное. Для записи второго (Р) кадра, заново записывать характеристики всех 64 блоков не требуется.

Вместо этого запись выглядит так:

Второй кадр, копия первого, но в нем имеются такие изменения:

«г4» - красный, «е4» - черный, «г5» - синий, «е5» - черный.

Все! Для записи второго кадра нам потребовалось описать всего четыре блока, которые были изменены. Согласитесь, это гораздо меньше, чем делать полное описание всех 64-х блоков заново.

Данный пример довольно примитивен. Я его привел лишь для того, чтобы вы поняли общую суть. А суть такова: чем меньше второй кадр отличается от первого, тем меньшее количество информации требуется для его записи.

B-кадры

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

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

Приведу простой для понимания пример (рис. 3).

В-кадр


Рисунок 3. В-кадр.


На первом кадре черный блок находится в левом нижнем углу. На третьем кадре черный блок находится в правом верхнем углу. Между первым и третьим кадром, находится B-кадр. Кодек, обнаружив B-кадр, сравнивает первый и третий кадры, и высчитывает промежуточное между ними значение, получая таким образом второй кадр (рис. 4)

В-кадр


Рисунок 4. В-кадр.


Чем больше B-кадров содержит видео, тем меньше его размер. Но и вероятность появления артефактов связанных с ошибками во время вычислений — больше.

Последовательность I, P и B-кадров

Теперь, когда вы знаете что такое I, P и B-кадры, давайте рассмотрим в какой последовательности они записываются.

Классическая последовательность, которая обеспечивает отличное качество видео выглядит так:

Цикл I, P, B-кадров


Рисунок 5. Цикл I, P, B-кадров.


I-кадры — независимо сжатые (опорные кадры)

P-кадры — кадры ссылающиеся на один из предыдущих кадров

B-кадры — формирующиеся за счет двух кадров на которые они ссылаются

По окончанию последовательности, начинается новая последовательность, во главе которой снова находтся I-кадр.

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

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



Естественно, описанный метод сжатия видео далеко не единственный. Если вы решили подробнее изучить тему сжатия видео, очень рекомендую посетить сайт «Всё о сжатии данных, изображений и видео» https://www.compression.ru/ .

Я же надеюсь, что все тут понятно изложил, и вы сделали из всего этого главный вывод:

Чем более динамичное видео, тем больше информации требуется для его записи.



-->


Оставьте комментарий!

Комментарий будет опубликован после проверки

Вы можете войти под своим логином или зарегистрироваться на сайте.

(обязательно)