Vp9 или avc что лучше
Битва кодеков 2016. AVC vs. HEVC vs.VP9
Какой кодек стоит выбрать для видео-трансляций? По мнению руководителя отдела цифровых медиа консалтинговой компании Frost & Sullivan, Анви Рамбиа нет смысла выбирать кодек в отрыве от всей экосистемы. На конференции Streamingmedia East она анализировала сегодняшние ниши применения кодеков и перспективы изменения их рыночных позиций на ближайшие годы. Предлагаемый материалы по существу является изложением ее доклада, а пояснения и дополнения Медиа-Спутника выделены курсивом и цветом.
Анви Рамбиа
В то же время, если стоит задача доставки видео с разрешением HD или ниже, резонов думать об использовании HEVC пока нет.
И еще — кодеры HEVC пока медленные. Транскодирование в HEVC в реальном времени сегодня если и выполняется, то с неэффективной тратой компьютерных ресурсов.
А в сетях профессиональной доставки живого вещания в 4К до сих пор используются связки из четырех синхронизированных AVC кодеров, каждый из которых кодирует свой квадрант. Некоторые производители, такие как Ericsson и Imagine, уже подготовили HEVC кодеры с реально низкой задержкой. Их применение в точках формирование сигнала будет большим шагом в упрощении инфраструктуру доставки HEVC сигналов. Одновременно отрабатываются и транскодеры реального времени для формата 4K.
HEVC Оборудование
С другой стороны, надо иметь в виду, что аппаратные кодеры на ASIC сегодня сохраняют актуальность только для вещательных сетей, для ОТТ это устаревшая концепция. Поэтому большинство продаваемых последнее время кодеров реализованы программно, хотя часто с аппаратными акселераторами. В будущем они могут быть перепрограммированы не только по разрешению, но и по системе компрессии. В условиях сегодняшней неопределенности это дает необходимую гибкость выбора кодека в будущем.
VP9?
Напомним, что VP9 безлицензионный кодек c открытым кодом, разработанный Google. Его последняя версия была представлена в 2013 году и включена в браузеры Google Chrome и Chromium.
По оценке Анви Рамбиа VP9 для стриминга более эффективен, чем AVC, но его основная проблема в том, что он не интегрирован с DRM и соответственно не подходит для доставки премиального контента.
Приведем здесь основные выводы:
— Кодеки следующего поколения ( HEVC и VP9) обеспечивают 50% снижение битрейта по сравнению с AVC. В то же время такой результат требует в 10-20 раз больше процессорного времени
— Декодер ffvp9 по производительности намного превосходит остальные протестированные декодеры.
По словам Анви Рамбиа VP9 сейчас активно используется в корпоративных сетях и в системе видеоконференций от Google ( видимо имеются в виду Google Hangouts и платная платформа Chromebox for meeting). Недавно Google усовершенствовал возможности масштабирования ( Scalible Video Coding) VP 9, что делает прямым конкурентом AVC в сфере видео- конференций Microsoft включил VP 9 декодер в свой Edge браузер и скоро добавит в свою систему видеоконференций. В тестовом режиме его также поддерживают Mozilla Firefox и VLC.
VP9 уже два года поддерживается YouTube, а этой осенью для сжатия контента загружаемого для off-line просмотра этот кодек начал использовать Netflix. Это в определенной мере гарантирует жизнеспособность формата и снижает риски внедрения в корпоративном секторе.
Что касается приемных устройств, то кроме ПК с упомянутыми браузерами, VP9 на уровне ОS поддерживаетcя платформой Android, начиная с версии 4.4 «KitKat». В то же время платформа IOS этот кодек не поддерживает и не очень понятно будет ли, так как в Apple пока не собираются отказываться от связки HLS + AVC.
Но, несмотря на распространение VP 9 в Интернете и корпоративных сетях, Анви Рамбиа пока не видит оснований рассматривать этот кодек как конкурента HEVC в вещательных сетях. В первую очередь, из-за отсутствия декодеров, защищенных на аппаратном уровне, отсутствия метаданных, необходимых для защиты и реализации других функции платного ТВ. Кроме того, VP9 еще более медленный, чем HEVC и активных работ для повышения его быстродействия не наблюдается.
Vp9 или avc что лучше
Если ваша задача — получить лучшее качество при наименьшем битрейте, то тут кодек VP9 и приходит на помощь. С помощью него можно кодировать, например, 1080p видео с битрейтом 2500k (2,5 мегабита) и иметь вполне приличное качество. Если видео очень динамичное, битрейт следует поднять до 3000-4000k. Если же с таким битрейтом мы будем кодировать в кодек h264 — получим пиксельную кашу, примерно как на Ютубе. Ютуб далеко не всё видео кодирует в VP9 (webm), многие видео хранятся в кодеке h264/avc — смотреть на них больно.
Однако, кодек VP9 не идеален и есть у него небольшой изъян, связанный с цветовым пространством. Условно, два основных цветовых пространства — это TV (bt601) и PC (bt709). Чем они отличаются? Уровнями черного и белого. Цветовое пространство TV имеет более узкий диапазон цветов 16-235, где 16 — белый, а 235 — черный. Если просматривать такое видео на мониторе ПК, то оно будет блеклое, тусклое, с низким контрастом. Потому что правильное цветовое пространство для PC — 00-255, где 00 — абсолютный белый, а 255 — абсолютный черный. Простыми словами, телевизионное цветовое пространство имеет ограниченный диапазон RGB. А компьютерное — полный.
Проблема кодека VP9 состоит в том, что он умеет работать только с TV пространством, обозначаемое так же, как yuv420. Для многих современных фото и видеокамер — это не проблема, они снимают точно в таком же цветовом поле с поправкой на контраст, картинка с них вполне хорошо смотрится. Но есть старые модели фото-видео камер, которые снимают в цветовом пространстве yuvj420 (pc, bt709) и с них необработанное видео смотрится отлично, сочно, контрастно. Но вот при кодировании в VP9 подобных видео со старых камер, кодек обрезает диапазон цвета с 00-255 до 16-235 и мы получаем тусклую, неконтрастную картинку. Абсолютно черный 255 превращается в тёмно-серый 235.
Как решать эту проблему?
Облазив огромное количество интернет-сайтов, как российских, так и зарубежных, я не нашел практически никакой полезной информации. И вывод напрашивается сам собой: раз кодек не поддерживает yuvj420 (pc, bt709), то и бороться с потерей цвета никак нельзя. Тем не менее, я нашел небольшую уловку, которая работает в актуальных версиях ffmpeg (4.2) и позволяет с помощью фильтра подкрутить контраст на 10%. Вероятно, Ютуб пользуется подобными методами, так как конвертировать PC-стандарт (yuvj420) в TV (yuv420) и не потерять часть цвета — невозможно. Делюсь командой для ffmpeg под Linux, чтобы закодировать видео yuvj420 и не лишиться контраста. Конечно, это лишь уловка, но закодированное видео в yuv420 практически не будет визуально отличаться от исходника и большинство вообще не заметит никакой разницы.
Решение:
-i — входной файл
MVI_9360.MOV — название входного файла, включая расширение
-c:v vp9 — кодек видео VP9
-vf «eq=contrast=1.1:brightness=0:saturation=1» — видеофильтр, контраст, яркость, насыщенность. Единица — это 100%.
-b:v 2000k — примерный битрейт видео установлен в 2000 килобит/c
-c:a libopus — кодек аудиодорожки, кроме libopus может использоваться libvorbis
-b:a 256k — битрейт аудиодорожки установлен в 256 килобит/c
-y — означает yes, полезно в случае перезаписи существующего в каталоге файла с тем же названием.
По поводу кодирования различных видеофайлов с помощью ffmpeg я как-нибудь напишу отдельный пост. А пока, на этом всё. Спасибо за внимание 🙂
На правах автора хочу напомнить, что у нас есть группа вк и телеграм-чат, где можно пообщаться на компьютерную и сетевую тематику.
AV1 на практике качественно превосходит H264 и VP9 по уровню сжатия
Следующим за H.264, H.265 (HEVC) и VP9 форматом сжатия видео должен стать AV1, который базируется на наработках Mozilla Daala, Cisco Thor Project, Google VP9 и VP10. Разработкой стандарта занимается ассоциация Alliance for Open Media (AOMedia), в которую входят такие гиганты, как Amazon, Google, Facebook, Microsoft, Netflix, Hulu, а с января — и Apple. AOMedia также присматривается к созданию собственного стандарта для фотографий на замену JPEG, GIF и PNG, который может оформиться во что-то реальное в отдалённой перспективе.
Тем не менее, пока главная и единственная задача ассоциации — продвижение видеокодека AV1 (вначале для онлайн-служб, а впоследствии — и для других задач). В рамках этой деятельности 28 марта AOMedia опубликовала первую полную версию спецификации потокового вещания и декодирования открытого и бесплатного формата AV1. Можно сказать, начало экспансии видеоформата положено: стабильность кодирования находится на хорошем уровне, а дальнейшие усилия по разработке AV1 будут направлены на оптимизацию скорости, чтобы кодек стал более практичным для реального использования.
Но как же AV1 показывает себя по сравнению x264 и VP9 в деле? Перспективно, если судить по первым всесторонним тестам Facebook, которая постаралась проверить как формат ведёт себя в самых разных и наиболее приближенных распространённых условиях. В целом, тестирование Facebook показывает, что AV1 превосходит поставленную изначально цель обойти VP9 на 30 % по эффективности сжатия.
Тесты Facebook проводила на 400 самых популярных в крупнейшей социальной сети роликах. В подавляющем большинстве речь идёт о предварительно сжатых клиентом файлах стандартной (SD) и высокой чёткости (HD), снятых, как правило, на смартфон. В реальности удалось достичь при сходном итоговом качестве уровня компрессии на 50,3 %, 46,2 % и 34 % выше по сравнению с x264 main profile, x264 high profile и libvpx-vp9, соответственно.
Но, поскольку эффективность AV1 увеличивается по мере роста разрешения видео, Facebook пришла к выводу, что новый кодек, скорее всего, принесёт ещё больший выигрыш в случае сжатия UHD/4K или 8K-материалов. Действительно, если в режиме CRF (постоянное значение оценки) AV1 на 27,4–36 % обходит VP9 по уровню сжатия для файлов с вертикальным разрешением 360p, то для роликов 1080p превосходство возрастает уже до более весомых 37,9–44,8 %:
Но, разумеется, достигается такое преимущество небесплатно: новый кодек требует более длительного времени кодирования по сравнению с существующими альтернативами из-за повышенной сложности. Разумеется, пока речь идёт о первой неоптимизированной версии, но всё же вычислительные ресурсы требуются не в разы, а в сотни и даже тысячи раз большие. AV1 по времени кодирования уступает x264 main, x264 high и libvpx-vp9 в среднем соответственно в 5721,5, 5869,9 и 658,5 раз:
В аналогичных тестах для режима кодирования ABR (усреднённый битрейт) AV1 демонстрирует уровень сжатия против libvpx-vp9 уже 27–29,5 % для 360p и 33,1–35,9% для 1080p:
При этом сложность сжатия дополнительно возрастает и AV1 по сравнению x264 main, x264 high и libvpx-vp9 требует в среднем в 9226,4, 8139,2 и 667,1 раза больше времени, соответственно:
Эти результаты в целом обнадёживают специалистов Facebook: степень сжатия при сопоставимом со старыми кодеками качестве превосходит целевую, а производительность ещё будет оптимизироваться. Facebook обещает продолжить продвижение AV1 в своих платформах. Видео в формате AV1 постепенно начнёт появляться в Интернете для популярных роликов в Facebook, как только поддержка AV1 появится в популярных браузерах вроде Chrome и Firefox.
Как работают видеокодеки? Разбор
К примеру вы купили новенький 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.
Кому интересно, вот такая математика за этим стоит.
Преобразование ITU-R BT.709
А дальше, так как у нас теперь цвета и яркость — это отдельные сущности, мы уменьшаем каналы цвета по разрешению в два раза и натягиваем на канал яркости. Готово! Разница почти не видна, а количество информации почти в два раза уменьшили.
Такой вариант субдискретизации обозначается тремя цифрами 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. Поэтому можно не тратиться на дополнительные саундбары.
Особенное удовольствие доставляет безрамочный дизайн, который впишется в любой интерьер и не будет отвлекать на себя внимание от контента (в любом кодеке).
Теперь мы представляем, как примерно работают работают кодеки, а значит сможем их сравнить.
Самый популярный и устаревший на текущий момент кодек — это всеми любимый H.264 или AVC (Advanced Video Coding), или MPEG-4 Part 10. Это всё одно и тоже.
Кодек существует с 2003 года и он по-прежнему популярен. В первую очередь, потому что он поддерживается всеми браузерами, операционными системами и процессорами.
Но при этом кодек безбожно устарел. И вот почему:
Поэтому на смену H.264 пришел его старший брат H.265 или High Efficiency Video Coding, то есть HEVC. Тот самый кодек, на который перешли в Apple в 2017 году. Поэтому все видео и даже фоточки на iPhone кодируются при помощи кодека HEVC.
Скажу сразу, кодек хорош. На текущий момент это такая золотая середина между скоростью кодирования, декодирования и эффективностью сжатия. Смотрите сами:
Кодек сам по себе великолепный. Но есть у него проблема — неадекватная политика лицензионных отчислений. Он настолько дорогой, что он просто не прижился в интернете.
Из всех браузеров его поддерживает только Safari, несмотря на то что кодеку уже 9 лет.
Тем не менее, кодек очень приглянулся всем любителям торрентов, поэтому для телевизоров поддержка H.265 обязательна. Поэтому прежде чем купить телевизор внимательно посмотрите в инструкции, есть ли цифровой декодер H.265. В телевизоре Haier поддержка есть, мы специально проверили.
В интернете господствуют кодеки от Google — VP8 и VP9.
По эффективности VP8 примерно равен H.264, а VP9 примерно равен H.265, но все же немного ему уступает. Эффективность — не главное их преимущество, главное, что они бесплатные. Поэтому кодеки быстро получили подержку всех браузеров, а в прошлом году даже появилась поддержка на девайсах Apple.
Помните то, что на iOS девайсах наконец-то в YouTube появилось разрешение 4K — это как раз заслуга VP9. Потому как YouTube рендерит 4К именно в этом кодеке.
Но это всё не так важно, потому как VP9 уже устарел. А на смену ему приходит новый бесплатный кодек AV1, про который мы уже как-то рассказывали.
В AV1 уже стримит YouTube и Netflix, его уже поддерживают почти все браузеры кроме Safari, конечно. И постепенно появляются процессоры с аппаратным декодированием.
Короче, в светлом будущем AV1 сомневаться не приходится. Но чем он так хорош, помимо бесплатности?
Но если вы думаете, что война кодеков закончена. Это не так!
В прошлом году был представлен наследник H.265, новый кодек H.266, который получил название VVC или Versatile Video Coding. Этот кодек эффективнее вообще всего что было раньше.
Он на 50% эффективнее и без того прекрасного HEVC и где-то на 20% эффективнее AV1. Какие у него есть фишки?
Во-первых, в названии кодека указано, что он универсальный и это действительно так.
Он одинаково хорошо работает с любым типом контента: кино, 360° видео, неподвижный контент, игры.
Он поддерживает переменную частоту кадров от нуля до 120 Гц! Это просто подарок для стримеров и тестировщиков видеокарт!
А также поддерживает переменное разрешение!
Кодек ещё лучше подходит для 8К, потому как блок тут увеличен до 256×256 пикселей.
А механизмы предсказаний в этом кодеке тренировали нейросети.
С лицензионными платежами тоже обещали разобраться, поэтому вполне возможно, что наследник HEVC станет супер популярным.
По крайней мере Apple скорее всего будет использовать именно этот кодек. Но подождать придется минимум года три.