Зачем компании Apple и Google придумывают новые форматы изображений! Ведь это усложняет жизнь — есть же всемогущий JPEG!

Все дело в том, что он жутко устарел, а тот же HEIC или WebP на голову его выше. Посмотрим как выглядит одна и таже фотография сжатая в формат JPEG, HEIC и WEBP. Превосходство новых форматов очевидно.

Но почему же тогда миром по-прежнему правит JPEG. Может потому что HEIC есть только в iPhone, а гугловский WebP — вообще не понятно где есть. Но что если я вам скажу что и эти кодеки устарели?

Восходит новый король, святой грааль Интернета. Кодек всех кодеков который совместно разрабатывали Apple, Google, Microsoft, Netflix и не только.

Немножко про форматы

1. JPEG

Начнем с того, почему JPEG устарел.
Формат был разработан в 1992 году Объединенной группой экспертов по фотографии (Joint Photographic Experts Group) отсюда и название JPEG. Сегодня вообще будет много классных аббревиатур.

В своё время это была революция. JPEG очень неплохо сжимал многоцветные изображения. И как видите до сих пор справляется с этим. Но у формата есть недостатки.

Все мы знаем как выглядит пережатый JPEG:

  • блочность,
  • тотальная потеря цвета,
  • контурные шумы.
  • А при пересохранении все эти проблемы приумножаются. В сети этот эффект известен как “шакализация”

Плюс ко всему JPEG поддерживает только 8-битный цвет, что вообще стыдно и не умеет в прозрачность, т.е. нет альфа канала (как например в PNG).

Поэтому чтобы JPEG нормально выглядел его надо сжимать где-то на 70-80% качества. А это охренеть как неэффективно. Интернет канал нагружается, серваки переполняются. Проблему надо решать.

Как следствие придумали целую массу вариантов Джепега. Но ни один формат не стал полноценной заменой оригинала.

2. WEBP

Зато больших успехов добился Google со своим форматом WebP. Его разработали в 2010 году на основе гугловского же видеокодека VP8.

Во-первых, при сжатии с потерями WebP на 30% эффективней JPEG и на 26% эффективнее PNG при сжатии без потерь. Во-вторых, WebP поддерживает прозрачность и даже анимацию.

Это же просто киллер-комбо. В одном формате собраны JPEG, PNG и GIF одновременно.

Но почему тогда все старые форматы остались, а WebP мы нигде не видим? На то есть причины. Формат получился не универсальный.

Формат поддерживает цветность только 8 бит, а его технический потолок качества, даже ниже чем JPEG.

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

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

Но самое главное, он не взлетел, потому что долгое время компании-владельцы браузеров просто не могли договориться. Каждый топил за свой формат. И если Mozilla и Microsoft в последние пару лет сломались и добавили поддержку WebP в Edge и Firefox, то Apple со своим Safari по-прежнему сопротивляется. Возможно у Apple какие-то другие планы? Давайте разберёмся.

3. HEIC

В 2017 году, с выходом iOS 11, Apple сделал ставку на High Efficiency Video Codec, он же HEVC. Все iPhone начиная с 7-го по умолчанию начали снимать видео в этом формате, с аппаратной поддержкой кодирования и декодирования.

Кстати, этот кодек Apple использовала и раньше — для видеозвонков по FaceTime. Это объясняет, почему в FaceTime такое классное качество связи. Проверено карантином!

Одновременно с видео изменился и формат фото, которые тоже стали кодироваться в HEVC. И вот тут всё немного путанно, поэтому остановимся поподробнее.

Со сменой кодека видеофайлы на iPhone как хранились в формате MOV, так и хранятся. Потому что MOV — это медиаконтейнер, т.е. упаковка внутри которой могут храниться разные форматы видео, аудио, всякие субтитры и прочее. А вот файлов с расширением HEVC не существует, потому что это не контейнер, а кодек.

А вот фотографии поменяли расширение с JPEG на HEIC (High Efficiency Image Coding). Потому что HEIC — это одновременно и формат и контейнер. В отличии от JPEG, который только формат.

Кстати, вообще-то этот формат везде называется HEIF (High Efficiency Image File Format), просто Apple по какой-то причине переименовали его в HEIC. Но разницы между HEIF и HEIC нет никакой.

Фух. Вернемся к рассказу.

Переход на новые форматы дал массу преимуществ:

  • Фото и видео стали весить в два раза меньше при сохранении того же качества по сравнению с H.264 и JPEG.
  • Так как HEIC это не просто формат, а еще и контейнер, это позволило внутри одного файла хранить несколько фото и даже видео. Например именно так реализованы Live Photo и серии в iPhone.
  • Также можно хранить альтернативный варианты снимка. Например в другом формате, в том же JPEG, в низком разрешении или даже со сжатием без потерь!
  • Появилась неразрушающее редактирование: то есть можно накладывать слои, обрезать, поворачивать фото, но исходник останется нетронутым!
  • А еще добавили поддержку 16 бит и альфаканал.

Всё это позволило не только сэкономить кучу места, но и нормально организовать структуру папок на iPhone.

Загляните в папку Фото на Pixel — вы ужаснетесь от обилия подпапок и дубликатов. Например, если делаешь портретное фото на пикселе, создаётся отдельная папка в которую сохраняются две фотографии с размытым фоном и без! Это жутко неудобно.

Но, если всё так классно, почему же тогда никто больше не перешел на HEIC для фото и H.265 для видео? И даже сам Apple не добавил поддержку HEIC в Safari?

И сейчас мы переходим к самому интересному! Должен ведь быть какой-то сюжетный твист в этом видео! Ни формат HEIC, ни высокоэффективный видеокодек, Apple не разрабатывала.

Второе название кодека HEVC — H.265. Он был создан еще в 2013 году двумя экспертными группами Video Coding Experts Group — VCEG, и моей любимой экспертной группой по движущимся изображением MPEG (Moving Picture Experts Group).

В своё время эксперты MPEG сделали и MPEG-2, в который кодировались DVD диски и H.263 в который мы сжимали фильмы с DVD дисков, и H.264 вышедший 2003 году.

Все эти кодеки были платными, но альтернатив не было, поэтому все охотно за них платили.

Но в 2013-м году, когда вышел H.265 ситуация поменялась. Миром начали править стриминговые сервисы принадлежащие IT-компаниям, которые сами привыкли писать софт, а не платить кому-то.

Поэтому ребята из Кремниевой Долины взялись за руки и сказали экспертам по движущимся изображениям:

— Эй, эксперты! Вот вам изображение! Идите-ка вы на ***! Мы сделаем свой кодек, с блекджеком и шлюхами. И бесплатный!

И они это сделали! Дав кодеку гордое имя — AV1. А чтобы ни у кого не возникло сомнений, что кодек бесплатный, они создали фонд правовой защиты для любых судебных разбирательств, связанных с патентами. С лучшими юристами и безграничным бюджетом. Шах и мат, MPEG!

AV1

Была организована компания: Alliance for Open Media, в которую вошли более 40 крупнейших IT компаний. Среди них Apple, Google, Microsoft, Amazon, Netflix, Mozilla, Intel, AMD, Nvidia, ARM, Adobe, короче все!

Вы только посмотрите! Документацию совместно, плечом к плечу писали ребята из Netflix, Google, Microsoft. Это же потрясающе!

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

За основу взяли три кодека VP9 от Google, Thor от Cisco и Daala от Mozilla/Xiph.Org. И сделали супер эффективного монстра.

Во-первых, прокачали систему дробления изображения на блоки.
В VP9 было 4 варианта разбиения на блоки, а стало 10. Плюс максимальный размер блока увеличили с 64 пикселей до 128, что важно для 4K-разрешения.

Также прокачали систему предсказаний. Например, этот кодек аки ясный оракул научился предсказывать цвет по каналу яркости.

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

Умеет этот кодек и более хитрые вещи.

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

Так что же делать? Удалишь шум — получится некрасиво. Оставишь шум — файл будет весить тонну. Поэтому кодек AV1 научился сначала удалять весь шум, а потом генерировать такой же отдельным слоем поверх видео! Шум отдельным слоем, Карл!

В итоге получается видео с низким битрейтом, но визуально выглядящее как исходник с Blu-ray диска! Про эту штуку мы, кстати узнали из лекции нашего соотечественника Андрея Норкина, отвечающего за кодеки в Netflix.

В итоге получился крутой кодек, с кучей функций, поддержкой HDR, который примерно на 30% эффективнее VP9 и HEVC.

Например, если закодировать в этот кодек Full HD-фильм в отличном качестве вместе с аудиодорожкой, длительностью 90 минут, мы получим файл в примерно 500 мегабайт! Это ж кайф!

Еще пример, мы выкачали с YouTube клип инди-группы half•alive в двух форматах VP9 и AV1. Длительность клипа 4 минуты 15 сек. в разрешение 4K.

Так вот, в формате VP9 он весит 313 МБ, а в AV1 всего 123 Мб! При таком же визуальном качестве. Разица более чем в два раза и это по сравнению с эффективным кодеком VP9.

Но главное AV1 просто уничтожает своих конкурентов на низких битрейтах. На минимальном качестве AV1 сопоставим со средним качеством H.264.

Кодировщик

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

Нагрузка на декодирование видео, то есть проигрывание, повысилась на 20%. А вот сложность кодирования выросла в 50 раз по сравнению с VP9. То есть где раньше кодировалось 50 кадров, тут будет кодироваться только 1. Вот тебе и ламповое плёночное зерно Netflix.

Поддержка

Тем не менее, компании активно работают над решением проблемы. Netflix разрабатывают нейросети для ускорения кодирования. А Intel уже обучил свои Xeon’ы параллельно выполнять разные этапы кодирования на разных ядрах.

Кодек вообще развивается рекордными темпами. Он появился только в марте 2018 года, но уже в октябре того же года YouTube генерил 1 ТБ AV1 видео в секунду.

А с 2020-го вы можете принудительно включить воспроизведение в формате AV1 в настройках YouTube.

В свою очередь Netflix уже стримит AV1 видео на Android-девайсы.

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

Кстати, формат этого кодека для изображений называется AVIF. Так вот этот формат специально разрабатывается для контейнера HEIF, ну или HEIC. Apple тоже участник альянса.

Поэтому кто его знает. Возможно, мы даже не заметим как Apple сменит один платный эффективный кодек на другой бесплатный, внутри наших медиафайлов.

Как ни странно, распространению кодека может помочь коронавирус. Даже в былые времена видеостриминг занимал 82% интернет-трафика. А в эпоху самоизоляции ширина интернет-канала стала особо дефицитным ресурсом. 4K видео уже стало практически вне закона. И только AV1 сможет нас спасти.