Сравнение кодеков av1 vp9

Обновлено: 07.07.2024

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

Кухня Youtube

Самое важное, что следует понимать, что после того, как вы загружаете видео на ютуб или запускаете трансляцию, происходит следующее:
1. Благодаря инфраструктуре по доставке медиаконтента CDN (Content Delivery Network) сервера получают видеоданные для их обработки, хранения и доставки.

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

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

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

Кодеки на Youtube

Чаще всего YouTube использует три кодека для сжатия видео.

Да, это жестко.

Предположим, вы запустили трансляцию на YouTube в Full HD разрешении 1920x1080 c рекомендуемым битрейтом 9000 кб/с, указанным в справке для трансляций на YouTube.
Для сжатия видео серверами будет применен кодек H.264/AVC, и качество картинки оставит желать лучшего, в особенности, если это динамичное видео.

Откройте видео в разрешении 1080p, кликните правой кнопкой мыши в проигрывателе браузера, и в Статистике сис.админа можно будет увидеть используемый кодек. Откройте видео в разрешении 1080p, кликните правой кнопкой мыши в проигрывателе браузера, и в Статистике сис.админа можно будет увидеть используемый кодек.

Не смотря на то, что H.264/AVC самый распространённый и весьма эффективный кодек, главная проблема заключается даже не в нем, а в высокой степени сжатия , с которой видео будет перекодировано серверами.
Так что, если скачать трансляцию и взглянуть на битрейт видео с помощью MediaInfo, то можно заметить, что, по факту, никаких 9000 кб/с при воспроизведении не будет, а битрейт трансляции в среднем составит 3500 кб/с.
То есть, видеоданные подвержены высокой степени компрессии.

Битрейт скаченной трансляции с youtube. Исходный 25 мб/с. Битрейт скаченной трансляции с youtube. Исходный 25 мб/с.

Более того, если это трансляция динамичной игры, то качество исходных видеоданных может быть низкого качества, т.к битрейта 9000 кб/c при кодировании видео могло оказаться слишком мало.

Как получить более качественную картинку

Для этого необходимо, чтобы стрим или загруженное видео сжимались серверами с помощью кодека VP9.
Степень компрессии видеоданных по-прежнему будет очень высокой, но для сжатия будет использован более эффективный кодек VP9, которому требуется до 50% меньше битрейта для достижения такого же качества визуализации как AVC.
VP9 можно получить, если стримить или загрузить видео в 2K разрешении и выше.
Таким образом, битрейт можно выставить еще более высокий, исходя из справки для прямой трансляции, а серверами стрим будет обрабатываться с помощью кодека VP9 во всех разрешениях.

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

Транскодирование видео

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

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

Более того, при использовании разрешения 2560x1440 и выше, трансляция или видео будут перекодированы не только в разных разрешениях, но еще и с помощью 2 кодеков одновременно , VP9 и H.264/AVC (для видео еще может быть использован AV1).
Всё это по-прежнему нужно для того, чтобы сделать вашу трансляцию или видео максимально доступными для воспроизведения у пользователей, устройства которых не поддерживают кодек VP9 при декодировании.

Рецепт высокого качества!

C техническими сложностями мы разобрались, теперь важно выбрать оптимальный битрейт для записи исходного видео или трансляции.
Всегда следует учитывать очень важное правило, которое работает не только для ютуба, но и вообще в принципе при записи видео.
Чем более качественные исходные видео или аудио данные будут получены, тем меньше потерь качества при их дальнейшей обработке.
О чем это говорит? Чтобы уменьшить потери качества при загрузке видео или проведении трансляции на YouTube, нужно использовать максимально возможные настройки кодировщика, а также задать более высокий битрейт для видео и аудио в том числе.
С кодировщиком всё крайне индивидуально, и всё зависит от того, какой вы будете использовать, но однозначно на данный момент фаворитом можно назвать аппаратный кодировщик Nvidia NVENC за счёт его высокой ресурсоэффективности.
Что касается битрейта, то на YouTube нет жестких ограничений для трансляций и нет ограничений вообще для загружаемого видео.
Если выставить битрейт 25 ил 50 мб/с для трансляции в 2K разрешении, то даже после сжатия видеоданных серверами, картинка будет выглядеть гораздо лучше, чем при использовании битрейта 8000 кб/с.

В этом руководстве мы научимся использовать видео в Вебе, как это принято в 2019. Chrome и Firefox начали поддерживать новый кодек AV1 — для них видео можно сделать в два раза меньше.

Отдельно поговорим, как заменить GIF на видео в AV1 и H.264 — тогда его размер упадёт в 20-40 раз.

AV1 в браузере

YouTube уже использует его в TestTube. Netflix заявил, что AV1 будет «их основным кодеком следующего поколения».

Мы в Злых Марсианах уже используем его на нашем сайте и на Ампллифере. В этой статье я поделюсь опытом внедрения AV1 и шаг-за-шагом расскажу, как вставить видео, чтобы оно работало во всех браузерах.

Кодеки и контейнеры

С картинками всё просто: или JPEG с PNG для всех браузеров, или делать более компактные файлы в WebP для современных браузеров. Мы всегда можем быть уверены, что в файлах .jpg будет PNG-формат (за редким исключением PNG-бомб, от которых может защитить imgproxy).

С видео-файлами всё сложнее. Расширение файла ( .mp4 , .wmv , .webm или .mov ) говорит только о контейнере. В то время, как видео-файлы состоят из трёх различных компонентов:

  1. Видео-кодек определяет как сильно вы сможете сжать видео, и чем придётся пожертвовать. Основные видео-кодеки Веба: H.264, HEVC, VP9 и, теперь, AV1.
  2. Аудио-кодек сжимает звук. Само собой, он не нужен, если в видео нет звука. Популярные варианты: MP3, Opus и AAC.
  3. Контейнер хранит оба видео- (сжатого каким-то видео-кодеком) и аудио-потока (сжатого каким-то аудио-кодеком). А также дополнительные данные, типа субтитров и мета-информации. Популярные контейнеры: MP4, MOV, WebM.

Узрите AV1

AV1 — видео-кодек, который был выпущен год назад, в марте 2018. Его создавали, чтобы превзойти кодеки предыдущего поколения — HEVC, VP9, H.264 и VP8.

Диаграмма поколений видео-кодеков


Диаграмма поколений кодеков от Цахи Левент-Леви

Если вам стало интересно, как именно AV1 удалось превзойти остальные кодеки в сжатии, почитайте технические подробности в переводах на Хабре:
«Видео следующего поколения: представляем AV1»
«Кодек нового поколения AV1: корректирующий направленный фильтр CDEF»

За счёт новых оптимизаций, AV1 сжимает видео на 30—50% лучше, чем H.264 или VP8, и до 30% лучше, чем HEVC. Но кодек был выпущен недавно и пока имеет несколько детских болезней:

  • Текущий кодер не оптимизирован. AV1 сжимает видео очень медленно (новый быстрый кодер на Rust уже в разработке). Кодек не подойдёт для потокового вещания. Если мы говорим о статичных видео на лэндингах — эта проблема нам не актуальна.
  • Пока кодек поддерживается только десктопным Chrome и Firefox под Windows. Поддержки Safari и Edge пока нет (хотя Microsoft уже тестирует её). Надо будет, как минимум, 2 файла: AV1 для Chrome и Firefox и H.264 для остальных браузеров.

Сравнение качества картинки у разных кодеков на разном битрейте


Сравнение качества картинки у разных кодеков на разном битрейте — AV1 выигрывает

Готовим AV1 правильно

Давайте, наконец-то, перейдём к практике. Вначале определимся с контейнером. В теории, AV1 можно поместить в разные контейнеры, но MP4 компактнее и рекомендуется в спецификации. Для звука в AV1 мы возьмём Opus, потому что отлично сжимает звук.

Чтобы видео работало во всех браузерах, мы будем генерировать 3 файла:

  1. Для десктопного Chrome и Firefox на Windows (31% рынка на март 2019): контейнер MP4 с AV1 для видео и Opus для звука.
  2. Для Safari и Edge (16% рынка) — MP4 с HEVC и AAC.
  3. Для остальных: большой MP4-файл с H.264 и AAC.

Для сжатия я рекомендую взять консольный FFmpeg. Есть много графических утилит, но в консоли легче сохранить опции и потом запускать конвертацию автоматически. Убедитесь, что используете именно последнюю версию FFmpeg. Версии до 4.1 не поддерживают AV1 в MP4.

Переходим к конвертации файла H.264, который нужен нам для старых браузеров. Поскольку все наши файлы используют контейнер MP4, я буду использовать .av1.mp4 , .hevc.mp4 и .h264.mp4 постфиксы. Не пугайтесь длинной команды, мы потом её всю разберём:


Теперь откройте video.h264.mp4 . Если качество хорошее, а размер большой — попробуйте увеличить -crf ( -crf 26 потом -crf 28 ). Эта опция уменьшит размер файла ценой уменьшения качества. Подбор баланса качества и размера — искусство.

Если исходного видео-файла нет, то можно сконвертировать старый H.264 файл в AV1.

Теперь пришло время для конвертации AV1 — напоминаю, будет дольше H.264. Кодек пока не использует всю мощь процессора (имеет смысл запустить конвертацию нескольких файлов параллельно).


Снова поиграйте с -crf для подбора идеального баланса качества и размера.

Теперь то же самое для HEVC.


Скопируйте video.h264.mp4 , video.hevc.mp4 и video.av1.mp4 в корень вашего сайта.

Разбираемся с опциями FFmpeg

Команды выше выглядят как заклинание вызова демона? Не волнуйтесь, это не PostCSS. Давайте разберём опции.

-i SOURCE.mov указывает входящий файл, откуда FFmpeg возьмёт потоки видео и аудио, пережмёт их и запакует в новый контейнер.

-map_metadata -1 удалит мета-информацию из видео (например, программу, в которой видео было создано). В Вебе такая информация редко бывает полезной.

-c:a libopus или -c:a libfdk_aac выставляют аудио-кодеки. Если вам не нужен звук, замените их на -an .

-c:v libaom-av1 выбирает видео-кодек — библиотеку, которая сожмёт кадры видео-потока.

-crf 34 — Constant Rate Factor, баланс качества и размера. Это как слайдер качества JPEG, только он идёт в другом направлении (0 — лучшее качество и самый большой файл). Шкала CRF разная у H.264 и AV1 — у H.264 идёт до 51, у AV1 до 61. CRF для AV1 и H.264 будет разный.

Facebook подобрал примерное соответствие между значениями CRF для H.264 и AV1:
19 → 27, 23 → 33, 27 → 39, 31 → 45, 35 → 51, 39 → 57.

-preset veryslow заставляет H.264 и HEVC кодеки сжимать файл сильнее даже ценой резкого роста времени конвертации.

-profile:v main используется у H.264, чтобы выбрать профиль кодека. Только «Main» будет работать в Safari.

-b:v 0 выставляет минимальный битрейт для AV1, чтобы в видео было постоянное качество.

-pix_fmt yuv420p (формат пикселя) — хитрый способ уменьшить размер файла. Он оставляет оригинальное разрешение для яркости, но уменьшает разрешение для цвета. Наши глаза хуже видят цвет, поэтому не замечают эту хитрость. Удалите эту опцию, если в вашем случае она будет мешать.

-movflags +faststart перемещает всё само важное в начало файла, чтобы браузер мог проигрывать видео до окончания загрузки.

-vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" изменит размер сторон видео к ближайшим чётным (некоторые кодеки могут работать с разрешением 300×200 и 302×200, но не будут работать с 301×200). Если вы уверены, что везде разрешение делится на 2 — можете убрать эту опцию.

-strict experimental нужна для AV1, его кодер ещё экспериментальный.

video.av1.mp4 выставляет имя итогово файла.

Запускаем видео в браузерах

Теперь нам нужно, чтобы каждый браузер загружал видео, которое он поддерживает. Для этого у <source> есть атрибут type . И советую почитать про опции у <video>.


<source> похожи на выражения if…else — браузер читает их сверху вниз, пока не найдёт тот, чей type он поддерживает.

В type можно указать весь формат файла: контейнер ( video/mp4 для MP4), видео-кодек ( av01.0.05M.08 для AV1, hevc для HEVC и avc1.4D401E для H.264) и аудио-кодек ( opus для Opus и mp4a.40.2 для AAC).

Бонус: как сконвертировать GIF в AV1 и H.264

В 2019 использовать GIF для коротких видео — большой грех. GIF весит в 20—40 раз больше, чем H.264 или AV1. GIF сильнее бьёт по CPU, заставляет аккумулятор утекать быстрее. Если вам нужно короткое зацикленное видео, берите видео-кодеки. И FFmpeg может конвертировать видео прямо из GIF.

Конвертируем GIF в H.264:


Генерируем ещё более маленький AV1:


Теперь вставим animation.h264.mp4 и animation.av1.mp4 в HTML.


Опции autoplay и loop делают из видео «гифку» — цикленное видео, которое сразу играет после загрузки страницы. playsinline блокирует Safari от открытия видео на весь экран при клике на видео.

В последнее время события в сфере разработки кодеков развивались достаточно динамично, и в 2018 году мы станем свидетелями их логического продолжения. Рассмотрим хронологию развития и внедрения новых кодеков.

Битва видеокодеков – 2018

Битва видеокодеков – 2018

Хотя разработка HEVC была закончена еще в 2012 году и тогда же стали появляться первые кодеры с поддержкой этого формата, к началу 2017 года на рынке по-прежнему доминировала компрессия H.264. Причин для медленного старта HEVC было достаточно много. Во-первых, для укрепления технологии на рынке требуется соответствующая инфраструктура. Для H.264 она хорошо отработана. Этот формат гарантированно совместим с любой экосистемой. С ним работают все плееры, CAS, DRM, middleware, системы вставки рекламы и видеоконтроля.

Кроме того, заявленную в рекламных буклетах 50-процентную экономию полосы пропускания HEVC демонстрирует при компрессии UHD-контента и статистическом мультиплексировании, а в остальных случаях показатели ниже. На первых этапах для HD-SPTS-потоков выигрыш составлял около 15%. Если говорить об ОТТ-распространении, то стоимость дополнительных 15—20% транспортной полосы можно было компенсировать выбором более дешевого СDN. Тем более что стоимость услуг CDN за последнее время заметно упала, а вилка между верхней и нижней ценой схожего набора сервисов увеличилась.

В вещательной среде новая система компрессии, как правило, вводится одновременно с другими технологиями, требующими замены приставок или телевизоров. Компрессия H.264 внедрялась вместе с HD-форматом и стандартами DVB второго поколения. HEVC же логично вводить вместе с UHDTV. Но и с этим были сложности. Первые кодеры HEVC были очень медленными. Транскодирование в реальном времени требовало огромной траты компьютерных ресурсов. Поэтому в сетях профессиональной доставки (contribution) живого вещания 4К сначала использовались связки из четырех синхронизированных AVC-кодеров, каждый из которых кодировал свой квадрант.

Более всего внедрению HEVC препятствовали (и продолжают препятствовать) жесткие, неоднократно менявшиеся условия лицензирования. Они диктовались сразу двумя патентными пулами — MPEG LA и HEVC Advance, а также компанией Technicolor, которая выделилась из HEVC Advance и выдвинула собственные лицензионные требования. В совокупности эти требования включают отчисления с каждого HEVC-устройства и компрессированного в HEVC наименования видео, без верхнего предела по выплатам, и дополнительно отчисления с доходов от платного видеоконтента, компрессированного в HEVC. Более того, начало 2017 года ознаменовалось появлением еще одного патентного пула для HEVC-технологий. Он был назван Velos media и призван защитить интеллектуальную собственность компаний Ericsson, Panasonic, Qualcomm, Sharp и Sony. Принципиально новых требований по лицензионным выплатам Velos media пока не выставил, но может сделать это в любой момент.

Несмотря на перечисленные сложности, HEVC все-таки утвердился на рынке, в первую очередь в вещательных сетях и для компрессии 4К- и/или HDR-видео. Опция HDR (High Dynamic Range) сама по себе является «убойной». Многие убеждены, что HD-формат, дополненный HDR, смотрится более эффектно, чем «чистый» 4К. На динамичных сюжетах хороший эффект также дает повышение частоты кадров — HFR (High Frame Rate). В принципе, можно было бы добавить опции HDR и HFR к чипсетам с H.264 и распространять HD-контент c такими дополнениями. Дополнительная полоса, требуемая для введения подобных улучшений, зависит от характера видео и типа компрессии, но даже для HD-видео, сжатого в H.264, она увеличится максимум в полтора раза. По некоторым данным, добавочная скорость будет еще меньше. Переход же к UHD-разрешению и компрессии HEVC без HDR и HFR потребует значительно большей полосы пропускания. Однако внедрению H.264 в связке с HDR и HFR противятся производители телевизоров, посчитав, что такой подход может затормозить продажи моделей с разрешением 4К.

Полоса, требуемая для передачи HD-контента Полоса, требуемая для передачи UHD-контента

Важным событием 2017 года, способствующим распространению HEVC в интернет-среде, стало решение Apple добавить этот формат компрессии в систему стриминга HLS, причем с поддержкой HDR. Напомним, что HLS — самая распространенная стриминговая платформа в мире. Это означает, что HEVC будет проигрываться на платформах iOS и Mac, через браузер Safari, а также на устройствах Apple TV. Тесты показали, что проигрывать HEVC можно даже на iPhone 6, а в более поздних моделях он съедает примерно столько же компьютерной памяти, сколько и H.264, и минимально сажает батарею. Готовность Apple включить HEVC в свои решения была с энтузиазмом встречена производителями кодеров. Однако само внедрение в HLS-среде проходит медленно. По мнению редактора издания Streaming Media Magazine Яна Озера (Jan Ozer), это связано с тяжелой и неясной лицензионной политикой. Кроме того, HEVC требует дополнительной памяти и не воспроизводится на более ранних устройствах, работающих с HLS.

Как и ожидалось, в 2017 году у всех ведущих производителей появились HEVC-кодеры и транскодеры, способные работать в реальном времени. Показатели продаж HEVC-кодеров противоречивы и отрывочны. По данным консалтинговой компании Frost & Sullivan, в 2016 году их доля не превышала 1% от общих покупок в пересчете на канал и далее прогнозировалось ежегодное удвоение продаж. В то же время сейчас, по данным IEEE/BTS (Institute of Electrical and Electronics Engineers/Broadcast Technology Society), доля HEVC-кодеров, используемых в IP-среде, составляет 3%. Можно думать, что в вещательных сетях их доля как минимум не меньше. К слову, доля кодеров H.264 в IP-среде составляет 79%, и она продолжает расти, в основном за счет отказа от компрессии MPEG-2. Однако при оценках стоит учитывать, что понятие кодера с поддержкой определенной компрессии сегодня размыто. Аппаратные кодеры на ASIC сохраняют актуальность только для вещательных сетей, и то частично, а для ОТТ это и вовсе устаревшая концепция. Большинство современных кодеров реализовано программно, на FPGA, связке CPU и GPU или даже на чистых CPU. Такие кодеры могут гибко программироваться не только в плане разрешения, но и по системе компрессии.

Что касается браузеров, то HEVC пока поддерживают только Safari и Edge, но возможно, это вынудит Google и Mozilla интегрировать его в будущие версии браузеров, тем более что за программную реализацию лицензионные отчисления не взимаются. Кроме того, HEVC интегрирован в медиапроигрыватель VLC (VideoLAN Client).

Основной альтернативой вещательным системам компрессии HEVC и H.264 в интернет-среде до недавнего времени считался кодек VP9 от Google. По факту он таковым остается до сих пор, хотя ему на смену уже приходит кодек AV1.

VP9 интегрирован во все основные браузеры, кроме Safari (Apple). Что касается платформ для мобильных устройств, то к началу 2017 года устройства на Android воспроизводили и VP9 (с версии 4.4), и HEVC (с версий 5.0+), а устройства Apple не поддерживали ни того, ни другого. VP9 активно используется YouTube, а с конца 2016 года его, наряду с H.264, взял на вооружение и Netflix. Кодек также нашел применение в корпоративных сетях и некоторых более мелких интернет-сервисах.

Тем не менее его общая доля в сегменте интернет-видео невелика — по данным IEEE/BTS, она составляет 11%. Таким образом, сказать, что он вытеснил H.264 из интернет-пространства, никак нельзя, несмотря на то, что он примерно на треть более эффективен. Его преимущество перед HEVC — в открытости и бесплатности. Тем не менее как конкурент HEVC для вещательных сетей он никогда не воспринимался. В первую очередь, из-за отсутствия декодеров, защищенных на аппаратном уровне интеграции с метаданными, необходимых для защиты и реализации других функций платного ТВ. Кроме того, VP9 с самого начала был еще более медленным, чем HEVC, и со временем отставание только увеличилось.

Занять монопольное положение HEVC, по всей видимости, не суждено. В перспективе его альтернативой, как минимум в интернет-сфере, обещает стать новый кодек AV1. Более того, некоторые эксперты рассматривают его как кодек, который может заменить HEVC и в вещательных сетях. Это первая разработка некоммерческого альянса AOM (Alliance for open Media). Он был создан в августе 2015 года для разработки безлицензионных решений с открытым кодом в области доставки мультимедиа. И его первой разработкой как раз стал кодек AV1. К его созданию участников подтолкнули проблемы лицензирования HEVC, в частности появление в тот момент второго лицензионного пула. Состав AOM весьма представительный, в него входит более 20 компаний, среди которых Google, Microsoft, Mozilla, Cisco, Intel, Netflix, Adobe Amazon, ARM, Facebook, Google, IBM, Nvidia. В начале 2018 года к альянсу присо­единился и Apple, правда без громких заявлений и явных обещаний интегрировать кодек в свои продукты.

Чтобы избежать патентных претензий, разработчики AV1 использовали собственные инструменты компрессии. За основу нового формата был взят VP10 от Google, и к нему были добавлены алгоритмы, позаимствованные в кодеках Thor (Cisco) и Daala (Mozila / Xiph). Таким образом прежние соперники объединились для создания альтернативы основному конкуренту.

Что касается транспортных контейнеров, раз для HEVC в интернет- среде применяются варианты MP4, то AV1, по всей видимости, будет использовать формат WEBM разработки Google, Microsoft, Mosilla и Opera, с такой же бесплатной лицензией, как и сам кодек.

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

Проблема пока в том, что не очень понятно, в какой мере разработку AV1 можно считать законченной. После нескольких переносов срока заморозки кодека в конце марта было объявлено, что разработка наконец закончена и компании могут интегрировать его в свои продукты. Однако позже выяснилось, что и это версия тестовая, которая по-прежнему дорабатывается.

По информации Яна Озера, в течение нескольких месяцев ожидается интеграция кодека в несколько браузеров, и появление контента, компрессированного в AV1 от членов AOM. Чипсеты с аппаратным декодированием, по его оценке, появятся в 2019 году, а устройства на их базе — в середине 2020 года.

Технические различия между HEVC и AV1

AV1 — значительно более новый кодек, для которого пока нет специализированных кодеров и, главное, — аппаратных декодеров. Поэтому когда требуется кодирование в реальном времени, альтернативы HEVC пока нет. Основные браузеры выпустили первые программные декодеры AV1, но они гораздо медленнее и энергозатратнее. В AV1 используются более продвинутые алгоритмы, соответственно на процессоры ложится большая нагрузка.

Разработчики AV1 заявляли, что по сравнению с HEVC новый кодек должен вдвое сократить требуемую полосу пропускания при сохранении качества картинки. Однако весной при компрессии UHD 4К выигрыш относительно VP9 и HEVC составлял 30—40%. Кроме того, пока новый кодек очень медленный. По данным Яна Озера, весной 2018 года кодирование в AV1 было примерно в 100 раз медленнее, чем в VP9, при схожих компьютерных мощностях, а декодирование на процессорах x86 в пять раз медленнее. К концу года планируется сократить разницу во времени кодирования до пяти раз, а декодирования — до двух. Сравнивать AV1 по быстродействию с HEVC некорректно, особенно в плане декодирования, учитывая наличие специализированных чипсетов. Такие решения есть у AMD, Nvidia, Intel, Apple, Qualcomm и других. Очевидно, что разница в быстродействии AV1 и HEVC будет еще больше.

Повторим, что кодеры и декодеры с аппаратными схемами ускорения — это только одна часть общей инфраструктуры. Необходима также интеграция кодека со стриминговыми технологиями, CDN, DRM, системами биллинга и мониторинга. Участники AOM могут обеспечить все компоненты инфраструктуры, необходимые для ОТТ-распространения. Что касается операторов вещательных сетей, то их, возможно, пока не удовлетворит уровень защиты DRM-систем от участников альянса. Однако скорее всего, это временная проблема.

Заметим, что различия в подходах к разработке HEVC и AV1 очень показательны для двух вовлеченных в процесс индустрий — вещательной и ИТ. Для первой характерна разработка и применение закрытых лицензионных технологий, а во второй делают ставку на открытые бесплатные технологии, рассчитывая на получение доходов от продажи эффективных решений на их базе. Вещательные консорциумы понимают, что их позиция становится все менее конкурентной, но перестроить свой бизнес пока не могут.

Альтернативы

С большой долей вероятности в ближайшие годы HEVC и AV1 будут занимать доминантные позиции. Остальным кодекам, чтобы претендовать на место под солнцем, нужно будет предложить существенное улучшение скорости кодирования/декодирования в сочетании с конкурентным уровнем компрессии, хотя бы в определенной нише. А если разработчики захотят использовать запатентованные технологии, то чтобы предложить реалистичные цены, им понадобятся еще и хорошие маркетологи.

Сегодня к возможным альтернативам относят две разработки. Во-первых, кодек XVC (Extreme video codec), оптимизированный для работы на низких скоростях, характерных для доступа через сотовые сети. Это разработка шведской компании Divideon, появившейся в начале 2017 года. На сайте Divideon уже выложены демонстрационные ролики и графики, иллюстрирующие преимущество нового кодека относительно прочих в нише мобильного приема (рис. 4). Кодек платный, но система его лицензирования проще, чем у HEVC.

Сравнения PSNR

Сравнения PSNR

Второй претендент — это JEM (Joint Exploration Model), кодек, разрабатываемый на смену HEVC.

Для его разработки в конце 2015 года была создана команда JVET (Joint Video Exploration Team), объединившая MPEG и VCEG. Полтора года ушло на сборы требований к кодеку, и в апреле 2018 года началась собственно разработка. По этому случаю команда была переименована в Joint Video Experts Team. Судя по информации о ходе работы над кодеком, которую участники JVET озвучивают на отраслевых мероприятиях, никаких принципиально новых подходов к компрессии вводить не планируется. Предполагается дальше усложнять и оптимизировать алгоритмы обработки, то есть эксплуатировать постоянно растущие процессорные мощности. Хотя все еще может поменяться, да и сам кодек, разрабатываемый «по старинке», на базе закрытых лицензионных технологий, может оказаться неконкурентным в новых рыночных условиях.

Кодек AV1 - 3 вещи, которые вы должны знать об этом

Кодек Aomedia Video 1, или AV1, начинает оказываться в руках потребителя. Ранее в этом году Netflix попал в заголовки газет, заявив, что начал потоковую передачу AV1 некоторым зрителям Android. Совсем недавно Google объявил, что добавит кодек AV1 в свое приложение для видеочата Duo, а MediaTek объявил о том, что он будет поддерживать видеопотоки YouTube AV1 на своей Dimensity 1000 5G SoC. Так в чем суета? Что такое кодек AV1? Почему это важно? Вот краткий обзор AV1 и его значения для потоковой передачи видео за 5 лет.

AV1 бесплатна и имеет открытый исходный код

Изобретать технологии, разрабатывать компоненты и проводить исследования дорого. Инженеры, материалы, здания – все это стоит денег. Для «традиционной» компании возврат инвестиций происходит от продаж. Если вы разрабатываете новый гаджет, и он продается миллионами, вы получаете деньги, которые были потрачены изначально. Это верно для физических продуктов, таких как смартфоны, но это также верно и для разработки программного обеспечения.

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

Netflix попал в заголовки, когда заявил, что начал потоковую передачу AV1 некоторым зрителям Android.

Если изобретатель алгоритма может продать технику третьим сторонам, то один из бизнес-вариантов – взимать небольшую плату – изменение роялти за каждое устройство, поставляемое с алгоритмом. Все это кажется справедливым и справедливым. Однако система открыта для злоупотреблений. От недружественных переговоров о пошлинах, до патентных троллей, до судебных исков на миллион долларов история предприятий, основанных на роялти, длинна и полна неожиданных побед и потерь как для «плохих парней», так и для «хороших парней».

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

Кодек AV1 - 3 вещи, которые вы должны знать об этом

Реакция против этого состоит в том, чтобы искать и развивать технологию, которая свободна от лицензионных платежей и свободна от кандалов патентов. Это цель кодека AV1.

Многие из современных и распространенных технологий потокового видео не являются бесплатными. Видео MPEG-2 (используется на DVD, спутниковом телевидении, цифровом телевещании и т.д. ), H.264 / AVC (используется на дисках Blu-ray и во многих службах потоковой передачи в Интернете) и H.265 / HEVC (рекомендуемый кодек для 8K) ТВ) все нагружены претензиями роялти и патентами. Иногда сборы отменяются, иногда нет. Например, у Panasonic более 1000 патентов, связанных с H.264, а у Samsung более 4000 патентов, связанных с H.265!

Кодек AV1 разработан, чтобы быть лицензионным платежом. У него много громких имен, поддерживающих его, а это значит, что юридический вызов против объединенного пула патентов и финансовой мощи Google, Adobe, Microsoft, Facebook, Netflix, Amazon и Cisco будет бесполезным. Однако это не помешало некоторым патентным троллям, таким как Сисвел, греметь своими цепями. На сегодняшний день на самом деле ничего не дошло до суда, но патентные тролли не легко сдаются.

AV1 на 30% лучше, чем H.265

Помимо того, что AV1 не требует лицензионных отчислений и является открытым исходным кодом, он должен действительно предлагать преимущества по сравнению с уже установленными технологиями. Aomedia (хранители кодека AV1) утверждают, что предлагает сжатие на 30% лучше, чем H.265. Это означает, что он использует меньше данных, предлагая то же качество для видео 4K UHD.

Есть два важных показателя для любого видеокодека. Битрейт (то есть размер) и качество. Чем выше битрейт, тем больше закодированные файлы. Чем больше закодированные файлы, тем больше объем данных, которые необходимо передать в поток. С изменением битрейта меняется и качество. Проще говоря, если данных будет меньше, то точность и точность исходного материала снизится. Чем больше данных, тем больше шансов представить оригинал.

Видеокодеки, такие как AV1 (и H.264 / H.265), используют сжатие с потерями. Это означает, что закодированная версия не совпадает (пиксель за пикселем) с оригинальной. Хитрость заключается в том, чтобы закодировать видео таким образом, чтобы потери были незаметны для человеческого глаза. Есть много методов, чтобы сделать это, и это сложный предмет. Три из основных методов должны использовать постепенные изменения кадра, квантование и векторы движения.

AV1 разработан, чтобы быть без лицензионных платежей.

Когда вы делаете фотографию на своем смартфоне, есть вероятность, что она будет сохранена в формате JPEG (файл .jpg). JPEG – это формат сжатия изображений с потерями. Он работает с использованием техники, называемой квантованием. Основная идея заключается в том, что данный сегмент фотографии (8 × 8 пикселей) может быть представлен фиксированной последовательностью затененных рисунков (по одному для каждого цветового канала), наложенных друг на друга. Эти шаблоны генерируются с использованием дискретного косинусного преобразования (DCT). Используя 64 из этих шаблонов, можно представить блок 8 × 8, решив, сколько из каждого шаблона необходимо для получения аппроксимации исходного блока. Оказывается, может быть, только 20% шаблонов необходимы для убедительной имитации исходного блока. Это означает, что вместо сохранения 64 чисел (по одному на пиксель) изображению со сжатием с потерями может потребоваться только 12 чисел. 64 до 12,

Кодек AV1 - 3 вещи, которые вы должны знать об этом

Пример дискретных косинусных паттернов, используемых для сжатия с потерями

Количество затененных рисунков, преобразования, необходимые для их генерации, вес, заданный для каждого рисунка, количество выполненных округлений, являются переменными и изменяют качество и размер изображения. JPEG имеет один набор правил, H.264 другой набор, AV1 другой набор и так далее. Но основная идея та же самая. В результате каждый кадр в видео представляет собой представление с потерями исходного кадра. Сжатый и меньше, чем оригинал.

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

Это все о битах

Наивысшая битва за видеокодер – поддерживать низкий битрейт и высокое качество. Поскольку кодирование видео прогрессировало на протяжении многих лет, целью каждого последующего поколения было снижение битрейта и поддержание того же уровня качества. В то же время наблюдается увеличение разрешающей способности дисплея для потребителей. DVD (NTSC) был 480p, Blu-ray был 1080p, и сегодня у нас есть 4K потоковых видео сервисов, и мы замедляем скорость до 8K. Высокое разрешение экрана также означает большее количество пикселей для представления, что означает, что для каждого кадра требуется больше данных.

«Битрейт» – это число единиц и нулей, используемых в секунду видеокодеком. В качестве отправной точки, практическое правило: чем выше битрейт, тем лучше качество. Какой битрейт вам нужен для хорошего качества, зависит от кодека. Но если вы используете низкий битрейт, качество изображения может быстро ухудшиться.

Кодек AV1 - 3 вещи, которые вы должны знать об этом

Когда файлы хранятся (на диске DVD, диске Blu-ray или на жестком диске), битрейт определяет размер файла. Для простоты мы будем игнорировать любые аудиодорожки и любую встроенную информацию внутри видеопотока. Если объем DVD составляет приблизительно 4,7 ГБ, а вы хотите сохранить фильм продолжительностью 2 часа (120 минут или 7200 секунд), то максимально возможная скорость передачи данных составит 5200 килобит в секунду или 5,2 Мбит / с.

Если вам нужно освежить в мегабитах против мегабайт, то у меня есть видео об этом: мегабит в секунду (Мбит / с) против мегабайт в секунду (МБ / с).

Для сравнения, видеоклип 4K прямо с моего смартфона Android (в H.264) использовал скорость 42 Мбит / с, примерно в 8 раз выше, но при записи с разрешением примерно в 25 раз больше пикселей на кадр. Глядя на эти очень грубые цифры, мы видим, что H.264 предлагает сжатие, по крайней мере, в 3 раза лучше, чем MPEG-2 Video. Один и тот же файл, закодированный в H.265 или AV1, будет использовать примерно 20 Мбит / с, что означает, что и кодек H.265, и кодек AV1 обеспечивают сжатие в два раза больше, чем H.264.

Наивысшая битва за видеокодер – поддерживать низкий битрейт и высокое качество.

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

Существуют различные способы измерения качества. Вы можете посмотреть пиковое соотношение сигнал / шум, а также другую статистику. Плюс вы можете посмотреть на качество восприятия. Если у 20 человек одинаковые видеоклипы с разных кодеров, то какие из них будут оцениваться выше по качеству.

Вот откуда берутся на 30% лучшие требования к сжатию. Согласно различным исследованиям, видеопоток, закодированный в AV1, может использовать более низкую скорость передачи битов (на 30%) при достижении того же уровня качества. С личной, субъективной точки зрения это трудно проверить и одинаково трудно оспорить.

Кодек AV1 - 3 вещи, которые вы должны знать об этом

Выше приведен монтаж одного кадра из одного и того же видео, закодированного тремя различными способами. Вверху слева оригинальное видео. Рядом справа находится кодек AV1 с H.264 под ним и H.265 под оригинальным источником. Первоначальный источник был 4K. Это не идеальный метод для визуализации различий, но он должен помочь проиллюстрировать это.

Из-за уменьшения общего разрешения (это 1920 x 1080) изображения мне трудно заметить большую разницу между четырьмя изображениями, особенно без просмотра пикселов. Вот тот же тип монтажа, но с увеличенным изображением, поэтому мы можем немного разглядеть пиксель.

Кодек AV1 - 3 вещи, которые вы должны знать об этом

Ниже приведено сравнение кадра HEVC / H.265 с кадром AV1.

Кодек AV1 - 3 вещи, которые вы должны знать об этом

Пример HEVC H.265 при 22 Мбит / с Пример AV1 на 22 Мбит / с

Кодек AV1 - 3 вещи, которые вы должны знать об этом

Здесь я вижу, что исходное видео, вероятно, имеет лучшее качество, а H.264 – худшее (относительно) по сравнению с оригиналом. Я бы изо всех сил пытался объявить победителя между H.265 и AV1. В случае необходимости я бы сказал, что кодек AV1 лучше воспроизводит цвета на лепестках.

Кодек AV1 - 3 вещи, которые вы должны знать об этом

Одно из утверждений Google об использовании AVI в приложении Duo заключалось в том, что оно «улучшит качество и надежность видеовызова даже при подключениях с очень низкой пропускной способностью». Возвращаясь к нашему монтажу, на этот раз каждый кодировщик был настроен на 10 Мбит / с. Это совершенно несправедливо для H.264, поскольку он не претендует на то же качество на тех же битрейтах, что и H.265 / Av1, но это поможет нам увидеть. Кроме того, оригинал остается неизменным.

H.264 на скорости 10 Мбит / с явно худший из 3. Быстрый взгляд на H.265 и AV1 оставляет у меня ощущение, что они очень похожи. Если я смотрю пиксель, я вижу, что AV1 работает лучше с травой в верхнем левом углу кадра. Таким образом, AV1 – чемпион, но только по очкам, это не был нокаут.

Кодек AV1 - 3 вещи, которые вы должны знать об этом

Пример HEVC H.265 при 10 Мбит / с Пример AV1 на 10 Мбит / с

Кодек AV1 - 3 вещи, которые вы должны знать об этом

AV1 не готов для масс (пока)

Без роялти и на 30% лучше. Где я могу зарегистрироваться? Но есть проблема, на самом деле огромная проблема. Кодирование файлов AV1 идет медленно. Мой оригинальный 4K клип с моего смартфона длится 15 секунд. Для кодирования этого с использованием только программного обеспечения в H.264 на моем ПК требуется около 1 минуты, что в четыре раза больше длины клипа. Если я использую аппаратное ускорение, доступное на моей видеокарте NVIDIA, тогда это займет 20 секунд. Просто немного дольше, чем оригинальный клип.

Для H.265 все немного медленнее. Только программное кодирование занимает около 5 минут, что немного дольше, чем оригинал. К счастью, аппаратное кодирование в H.265 также занимает всего 20 секунд. Поэтому аппаратное кодирование H.264 и H.265 похоже на мою настройку.

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

Мое оборудование не поддерживает кодирование AV1, поэтому мой единственный вариант – программный. Тот же 15-секундный клип, который занял 5 минут для программного обеспечения H.265, занимает 10 минут для Av1. Но это было не так, как было, это было изменено, чтобы получить лучшую производительность. Я протестировал несколько разных вариантов настроек качества и пресетов, 10 минут было лучшим временем. Один вариант, который я пробежал, занял 44 минуты. 44 минуты на 15 секунд видео. Это использует кодировщик SVT-AV1, которым увлекается Netflix. Существуют альтернативы, но они намного медленнее, например часы и часы, гораздо медленнее.

Кодирование клипа 4K 15 сек.SW или HWВремя
H.264Программное обеспечение1 мин
H.264аппаратные средства20 сек
H.265Программное обеспечение5 минут
H.265аппаратные средства20 сек
AV1Программное обеспечение10 минут

Это означает, что если у меня есть 1-часовой фильм, который я отредактировал со своего отпуска в экзотическое место, то для преобразования его в H.265 с использованием аппаратного ускорения на моем компьютере потребуется 80 минут. Один и тот же файл с использованием современных программных кодеров AV1 займет 40 часов!

Вот почему он не готов для масс (пока). Улучшения придут к кодировщикам. Программное обеспечение станет лучше, и аппаратная поддержка начнет появляться. Декодеры уже становятся экономными и эффективными, поэтому Netflix может начать потоковую передачу некоторого контента в AV1 на устройства Android. Но с точки зрения повсеместной замены H.264 нет, пока нет.

Одна интересная вещь в заявлениях Google относительно AV1 для Duo заключается в том, что она подразумевает кодирование AV1 на клиентских устройствах и декодирование AV1. Я написал по электронной почте Google об этом, и были обнадеживающие признаки того, что он собирался рассказать мне некоторые детали, но его планы относительно кодека AV1 и Duo, но затем все в списке рассылки загадочным образом затихли. Если кто-нибудь из Google вернется ко мне, я дам вам знать!

Читайте также: