К примеру вы купили новенький 4K-телевизор. Приготовились смотреть блокбастер в 4K HDR, а там сплошные блоки, артефакты и так далее. А выставляешь качество получше, видео начинает тормозить и долго подгружаться! Почему так?
Ответ простой — виноваты кодеки.
Поэтому сегодня поговорим от том какие бывают кодеки при видеостриминге. Узнаем, чем отличается h.264 от h.265? Узнаем, почему современные видеокодеки — самые лучшие предсказатели. Поговорим от том, что придет на смену AV1? И выясним как не ошибиться с выбором ТВ!
Если бы не было современных видеокодеков, то не было бы ни YouTube, ни стриминговых сервисов, ни zoom-конференций. А всё потому, что цифровое видео очень много весит. К примеру несжатый полуторачасовой фильм в формате 4K Ultra HD весил бы. Как думает сколько? Немногим больше, чем 3,22 терабайта! Это примерно по 36 гигабайт на 1 минуту видео.
3840 x 2160 точек x 8 (бит) x 3 (канала цвета) x 24 (кадра) x 5400 (сек) / 8 000 000 000 000 (биты в терабайты) = 3,22 TБ
Современные кодеки позволяют без заметной потери качества уменьшить размер файла до 5 гигабайт на всё видео. Это в почти в 645 раз меньше! Но как они это делают, и что значит без заметной потери качества?
Принцип работы
Все это основано на принципах работы архивов. Кстати, напишите, если хотите материал про основы сжатия информации.
Но сейчас сосредоточимся на вдиео. Грубо говоря, есть два типа сжатия которые применяются в видеокодеках. Что это всё такое?
Первое — это внутрикадровое сжатие. А второе — межкадровое сжатие.
Внутрикадровое сжатие позволяет оптимизировать размер каждого конкретного кадра. Для чего применяются различные методы борьбы с излишней информацией. По принципу — удаляем всё подряд, кожаные мешки всё равно не заметят! А мы действительно много чего не замечаем.
Цветовая субдискретизация
Например, человеческое зрение отлично различает перепады яркости, но так себе различает цвета. Это такая странная эволюционная фишка. Поэтому в кодеках активно используется метод цветовой субдискретизации. Это абсолютно гениальная штука.
Берём видео с тремя каналами цвета — RGB, и конвертируем его в видеоформат, в котором есть отдельный канал яркости — Y и два канала цвета Cb и Cr. И получаем формат YCbCr.
Кому интересно, вот такая математика за этим стоит.
А дальше, так как у нас теперь цвета и яркость — это отдельные сущности, мы уменьшаем каналы цвета по разрешению в два раза и натягиваем на канал яркости. Готово! Разница почти не видна, а количество информации почти в два раза уменьшили.
Такой вариант субдискретизации обозначается тремя цифрами 4:2:0, что расшифровывается так: на 4 пикселя яркости приходится всего 1 цветной пиксель, в каждом канале цвета.
Именно в формате 4:2:0 стримят всё видео в интернете. Включая этот видос. Хотя в настройках камеры я поставил 4 4 2 — чтобы хотя бы цветокоррекцию можно было сделать.
Косинусы
Если вам это кажется сложным, то как насчет — второго варианта сжатия или например использования дискретного косинусного преобразования. Это вообще интересная штука.
Вот посмотрите на такую табличку с градиентами.
Оказывается, накладывая вот такие квадратики друг на друга с разной степенью прозрачности можно получить в принципе любое изображение.
Вот посмотрите как потихоньку вырисовывается буква А.
Поэтому если разбить кадр на мелкие блоки. Всё изображение можно представить в виде наложения косинусов друг на друга.
Всё это внутрикадровые методы сжатия, их довольно много и они ничем не отличаются от методов сжатия изображений, например также сжимается JPEG.
Все эти методы позволяют неплохо сжать изображение, оптимизировав размер в десятки раз. Что неплохо, но не идет ни в какое сравнение с видеокодеками, которые сжимают данные в сотни раз. И делают они это благодоря межкадровому сжатию. Что это такое?
Межкадровое сжатие
Как правило соседние кадры в видео мало чем отличаются друг от друга. Тогда зачем нам тогда кодировать каждый кадр отдельно?
Мы можем взять первый кадр, назовём его «ключевым». А второй, промежуточный, кадр можно сделать на основе первого. Что в нем закодировано? Только та информацию, которая изменилась.
А с учетом того, что мы и так уже разбили информацию на блоки, кодировать нам придется не весь кадр, а только изменившиеся блоки.
Всякие глитчи, когда изображение становится зеленым или фиолетовым, а поверх частично рисуется новый кадр, это как раз следствие межкадрового сжатия. Просто ключевой кадр во время стриминга был потерян.
Предсказания
И если вы уже сейчас думаете: WOW! Как круто люди придумали, то вы рано удивляетесь.
Больше всего сэкономить места кодекам помогают механизмы предсказаний.
Например, если человеку показать два кадра: в одном кадре объект находится слева, а в другом справа, и попросить его предположить, где бы находился объект в промежуточном состоянии. Человек легко это сможет сделать интуитивно.
Точно также в каждый кодек вшиты алгоритмы предсказаний. Просчитывая вектора движений, они предполагают каким могут быть промежуточные кадры. Но какой в этом смысл?
Если их предположение оказывается верным, то есть совпадает с реальным кадром который нужно сжать, то в этом случае можно вообще не использовать никакие данные из реально кадра, а использовать предположение.
А если что-то не совпало, то можно хранить просто разницу между реальным кадром и предполагаемым, в этом случае всё равно получится сохранить очень много байт. Более того при помощи предиктивных моделей, можно предугадывать не только соседние кадры, но и соседние блоки внутри кадра.
Например, если внутри блока у нас одни синие пиксели, мы можем предположить, что и соседний блок будет состоять из синих пикселей.
Естественно, чем лучше модель предсказания, тем эффективнее работает кодек. Поэтому именно в моделях анализа изображения и предсказания соревнуются современные кодеки.
А если вы также хороши как современные кодеки, вы должны были предсказать, что сейчас мы будем говорить о телевизоре от спонсора, сегодняшнего ролика — Haier.
У нас сегодня недорогой телевизор HAIER 43 SMART TV MX с диагональю 43 дюйма и разрешением Ultra HD. В телевизоре есть все базовые функции.
Он работает на Android TV 9-й версии со всеми преимуществами системы: можно обмазаться всеми стриминговыми сервисами и смотреть сериальчики в 4K HDR.
Благо Wi-Fi модуль поддерживает частоту 5 ГГц, поэтому стримится контент без задержек. Также можно истыкать телевизор флешками и жесткими дисками, для любителей надежного старого способа.
Здесь удобный пульт с голосовым управлением, который работает по Bluetooth 5.0, а также можно подружить другие аксессуары: наушники, клавиатуры, геймпады. В общем, раздолье. Да и вы сами знаете, что позволяет Android TV.
Но самое главное в этом телике — качество картинки. Тут установлена очень хорошая VA-матрица и Direct LED подсветка. Картинка выглядит отлично: глубокий черный, сочные цвета. Есть поддержка HDR10.
Плюс есть 4K-апскейлинг, поэтому Full HD-контент на этом телевизоре выглядит замечательно.
В общем, за дисплей пятёрка. Даже больше скажу, у Haier есть подобная модель с Full HD-разрешением по цене ниже. Так вот тут, картинка гораздо лучше, есть за что доплатить.
Звук тоже очень неплохой — колонки мощностью 16 Ватт, а также поддерживается фирменная технология объемного звука Simulated Surround Sound. Поэтому можно не тратиться на дополнительные саундбары.
Особенное удовольствие доставляет безрамочный дизайн, который впишется в любой интерьер и не будет отвлекать на себя внимание от контента (в любом кодеке).
В общем, HAIER 43 SMART TV MX -отличная покупка если вам нужен небольшой ТВ с хорошим изображением. Для онлайн контента здесь все есть, топ модель в своем сегменте!
H.264
Теперь мы представляем, как примерно работают работают кодеки, а значит сможем их сравнить.
Самый популярный и устаревший на текущий момент кодек — это всеми любимый H.264 или AVC (Advanced Video Coding), или MPEG-4 Part 10. Это всё одно и тоже.
Кодек существует с 2003 года и он по-прежнему популярен. В первую очередь, потому что он поддерживается всеми браузерами, операционными системами и процессорами.
Но при этом кодек безбожно устарел. И вот почему:
- Максимальный размер блока только 16×16 пикселей. А это очень мало для 4K и 8K видео. Допустим, что у нас в кадре большое синее небо, которое можно бы было разбить на огромные блоки. Но AVC так не умеет, поэтому он тупо не эффективен для UHD-контента. Кино в 4K в этом кодеке будет весить 20 и больше гигов.
- Нет поддержки HDR, а значит не сможет раскрыть потенциал современных дисплеев.
- Кодек не умеет восстанавливать изображение из промежуточных кадров, поэтому видео часто распадается на блоки и плохо подходит для стриминга видеозвонков.
- Кодек платный.
H.265
Поэтому на смену H.264 пришел его старший брат H.265 или High Efficiency Video Coding, то есть HEVC. Тот самый кодек, на который перешли в Apple в 2017 году. Поэтому все видео и даже фоточки на iPhone кодируются при помощи кодека HEVC.
Скажу сразу, кодек хорош. На текущий момент это такая золотая середина между скоростью кодирования, декодирования и эффективностью сжатия. Смотрите сами:
- H.265 в 2 раза эффективнее сжимает видео, чем его предшественник. То есть файлы в том же качестве будут весить в 2 раза меньше.
- Максимальный размер блока тут увеличен в 4 раза: 64×64 пикселя. При этом уровень анализа изображения сильно прокачали. Поэтому кодек очень эффективно сжимает 4K-видео.
- Появилась функция произвольного доступа к изображению. В этом кодеке нет ключевых кадров и промежуточных, тут все кадры равны и каждый кадр может быть декодирован самостоятельно. Поэтому HEVC не распадается на блоки и отлично себя ведет во время стриминга. FeceTime обязан своей хорошей картинкой именно кодеку HEVC.
- Тут сильно прокачали внутрикадровое прогнозирование. Теперь учитывается 33 направления движения вместо 9, в прошлом кодеки.
- Ну и конечно, кодек поддерживается всеми современными процессорами.
Кодек сам по себе великолепный. Но есть у него проблема — неадекватная политика лицензионных отчислений. Он настолько дорогой, что он просто не прижился в интернете.
Из всех браузеров его поддерживает только Safari, несмотря на то что кодеку уже 9 лет.
Тем не менее, кодек очень приглянулся всем любителям торрентов, поэтому для телевизоров поддержка H.265 обязательна. Поэтому прежде чем купить телевизор внимательно посмотрите в инструкции, есть ли цифровой декодер H.265. В телевизоре Haier поддержка есть, мы специально проверили.
В интернете господствуют кодеки от Google — VP8 и VP9.
По эффективности VP8 примерно равен H.264, а VP9 примерно равен H.265, но все же немного ему уступает. Эффективность — не главное их преимущество, главное, что они бесплатные. Поэтому кодеки быстро получили подержку всех браузеров, а в прошлом году даже появилась поддержка на девайсах Apple.
Помните то, что на iOS девайсах наконец-то в YouTube появилось разрешение 4K — это как раз заслуга VP9. Потому как YouTube рендерит 4К именно в этом кодеке.
AV1
Но это всё не так важно, потому как VP9 уже устарел. А на смену ему приходит новый бесплатный кодек AV1, про который мы уже как-то рассказывали.
В AV1 уже стримит YouTube и Netflix, его уже поддерживают почти все браузеры кроме Safari, конечно. И постепенно появляются процессоры с аппаратным декодированием.
Короче, в светлом будущем AV1 сомневаться не приходится. Но чем он так хорош, помимо бесплатности?
Смотрите:
- Он примерно на 30% эффективнее HEVC, особенно он хорош на низких битрейтах.
- Размер блока тут еще больше 128×128 пикселей, что делает кодек выбором номер один для 8K-видео.
- В кодеке очень сильно прокачали предсказания. Например, кодек умеет предсказывать цвет по каналу яркости! Вы представляете? Кодек фактически умеет превращать ч/б кадры в цветные!
- Ну и моё любимое. Умеет накладывать на видео кинематографичный, пленочный шум. Это вообще красота…
VVC
Но если вы думаете, что война кодеков закончена. Это не так!
В прошлом году был представлен наследник H.265, новый кодек H.266, который получил название VVC или Versatile Video Coding. Этот кодек эффективнее вообще всего что было раньше.
Он на 50% эффективнее и без того прекрасного HEVC и где-то на 20% эффективнее AV1. Какие у него есть фишки?
Во-первых, в названии кодека указано, что он универсальный и это действительно так.
Он одинаково хорошо работает с любым типом контента: кино, 360° видео, неподвижный контент, игры.
Он поддерживает переменную частоту кадров от нуля до 120 Гц! Это просто подарок для стримеров и тестировщиков видеокарт!
А также поддерживает переменное разрешение!
Кодек ещё лучше подходит для 8К, потому как блок тут увеличен до 256×256 пикселей.
А механизмы предсказаний в этом кодеке тренировали нейросети.
С лицензионными платежами тоже обещали разобраться, поэтому вполне возможно, что наследник HEVC станет супер популярным.
По крайней мере Apple скорее всего будет использовать именно этот кодек. Но подождать придется минимум года три.