Как работает видео? — обложка

Начинаем цикл статей о видео, в котором наш СЕО Николай просто и понятно объясняет, что такое цифровое видео и как оно устроено.

Аналоговое и цифровое видео

Видео может быть аналоговым и цифровым.

Вся информация из реального мира вокруг нас — аналоговая. Волны в океане, звуки, облака, плывущие по небу. Это непрерывный поток данных, который не разбит на части и может быть изображён в виде волн. Люди воспринимают именно такую аналоговую информацию из окружающего мира.

Старые видеокамеры, записывавшие на магнитные кассеты, использовали аналоговый способ хранения информации. Бобинные магнитофоны и кассеты работали по тому же принципу: магнитная лента проходила через магнитные головки устройства, что позволяло воспроизводить звук и видео. Виниловые пластинки — тоже аналоговые носители.

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

С повсеместным распространением компьютеров практически всё видео хранится в цифровом формате — в виде нулей и единиц. Когда вы снимаете видео на телефон, оно преобразуется из аналогового сигнала в цифровой и сохраняется в памяти устройства. При воспроизведении происходит обратное преобразование — из цифрового сигнала в аналоговый. Благодаря этому видео можно передавать по сети, хранить на жёстком диске, редактировать и сжимать.

Из чего состоит цифровое видео

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

Пример того, как делают видео.

Частота кадров (framerate)

Кадры на экране сменяются с определённой скоростью. Количество таких смен в секунду называют частотой кадров или фреймрейтом. Отсюда и появился знакомый геймерам термин FPS. Стандарт для телевидения — 24 кадра в секунду, а в кинотеатрах IMAX — 50 кадров в секунду.

Чем выше количество кадров в секунду, тем больше деталей видно при быстром движении объектов на видео.

Разница между 15, 30 и 60 кадрами в секунду.

Пиксель (pixel)

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

Для того, чтобы отобразить изображение на дисплее, каждый пиксель на экране должен светиться определённым цветом.

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

Как устроен экран (схематично)

Количество таких точек по горизонтали и вертикали называют разрешением изображения. Записывают разрешение в формате 1024×768. Первая цифра — количество пикселей по горизонтали, вторая — по вертикали.

Разрешение всех кадров в видео одинаковое — это и называется разрешением видео.

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

Цветовые пространства

Существуют разные способы представления цвета точки в цифровом формате, и эти способы называются цветовыми пространствами или color spaces.

Цветовое пространство устроено так, что любой цвет можно представить точкой с определёнными координатами в этом пространстве.

К примеру, цветовое пространство RGB (Red Green Blue) — это трёхмерное пространство, в котором каждый цвет задаётся тремя координатами: одна отвечает за красный, другая — за зелёный, третья — за синий.

Классическая цветовая схема RGB

Любой цвет в этом пространстве задаётся комбинацией красного, зелёного и синего цветов.

Вот пример изображения, разбитого на составляющие цвета по каналам RGB:

Как в цифровом изображении смешиваются RGB-цвета

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

Самые популярные цветовые пространства — это RGB (используется в компьютерной графике), YCbCr (используется в видео) и CMYK (используется в полиграфии)

CMYK работает примерно так же, как RGB, только базовых цветов уже четыре: голубой, пурпурный, жёлтый и чёрный (Cyan, Magenta, Yellow, Key или Black).

RGB и CMYK пространства не очень эффективны, так как хранят избыточную информацию.

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

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

Как человеческий глаз воспринимает контраст

В левой части изображения цвета квадратов A и B на самом деле одинаковы. Нам кажется, что они разные. Мозг заставляет нас больше обращать внимание на яркость, чем на цвет. С правой стороны между обозначенными квадратами есть перемычка того же цвета — поэтому мы (то есть наш мозг) легко понимаем, что там действительно один и тот же цвет.

Используя эту особенность зрения, можно разделить изображение на яркость и цвет. При сжатии можно убрать половину или даже четверть цветовой информации (например, оставить яркость с высоким разрешением, а цвет — с низким). Человек разницы не заметит, а объём данных сильно сократится.

О том, как именно работает сжатие цвета, поговорим в следующей статье).

Наиболее известным пространством, которое работает таким образом, является YCbCr и его варианты: YUV и YIQ.

Вот пример изображения, разложенного на составляющие в YCbCr. Где Y' — компонента яркости, а CB и CR — синие и красные цветоразностные компоненты.

Схема цветов YCbCr

Именно YCbCr используется при кодировании цветов в видео. Во-первых, это цветовое пространство позволяет эффективно сжимать цветовую информацию, а во-вторых, оно отлично подходит для чёрно-белых видео — например, с камер видеонаблюдения, — потому что данные о цвете (CB и CR) можно просто игнорировать.

Глубина цвета (Bit Depth)

Глубина цвета показывает, сколько бит памяти выделяется на один пиксель — чем больше бит, тем больше цветов можно закодировать и тем больше места занимает каждый пиксель. Чем больше цветов, тем лучше качество изображения.

Долгое время для видео стандартной глубиной цвета была 8 бит (Standard Dynamic Range или SDR видео). Сейчас всё чаще применяют 10 или 12 бит (High Dynamic Range или HDR видео).

Таблица глубин цвета

При этом важно помнить, что в разных цветовых пространствах при одинаковом количестве бит на пиксель можно закодировать разное число цветов.

Битрейт (bitrate)

Битрейт — это количество бит, которое занимает одна секунда видео в памяти. Чтобы рассчитать битрейт несжатого видео, нужно умножить количество пикселей в кадре на глубину цвета и на частоту кадров в секунду:

1024 пикселей × 768 пикселей × 10 бит × 24 кадра в секунду = 188743680 бит в секунду

Это 23592960 байт, 23040 мегабайт или 22,5 гигабайта в секунду

Т. е. видео продолжительностью 5 минут займёт в памяти 6750 гигабайт или 6,59 терабайт.

Это подводит нас к тому, зачем нужны и почему появились способы сжатия видео. Без сжатия такие объёмы данных невозможно хранить и передавать по сети. Ролики на YouTube загружались бы очень долго.

  • Технологии