В публикация в блога на „Engineering at Meta“ открихме, че Instagram вече поддържа Dolby Vision на iOS устройства. Това го прави първото Meta приложение с поддръжка на Dolby Vision, а авторите на блога вече обявиха, че поддръжката за динамичния HDR формат ще бъде разпространена и в други Meta приложения в бъдеще. В тази статия обобщихме цялата информация и техническия контекст на внедряването.
HDR видеоклипове на iPhone
Всяко HDR видео, записано с iPhone, съдържа два вида метаданни. Това гарантира, че качеството на изображението и визуалният му вид остават еднакви на различни дисплеи и при различни условия на околната среда.
Едно от тях е AMVE (Ambient viewing environment - околна среда за гледане). Използвайки тази информация, устройството, което възпроизвежда видеото, може да коригира дисплея, ако действителните условия на околната среда се различават от тези, приложени по време на кодирането.
Освен това, записите включват метаданни за Dolby Vision с информация за оптимизиране на цвета, яркостта и контраста спрямо дисплея, използван за възпроизвеждане, с цел оптимално адаптиране на дисплея към съответния екран.
Instagram и Facebook за iOS поддържат HDR видеоклипове от 2022 г., но първоначално без поддръжка на amve и Dolby Vision. Нито един от тях не се поддържа от FFmpeg, който е използван за кодиране. В резултат на това показаното изображение не съответства точно на предвиденото представяне на оригиналния запис. Според Engineering at Meta, това е било особено забележимо при ниска яркост на екрана.
Твърди се, че новата функция, която също е базирана на обратна връзка от потребителите, е подобрила значително HDR дисплея.
Как Meta обработва видеоклипове
Първо, трябва да разберете процеса, през който преминава едно видео в Meta. Обикновено следното се случва, когато създавате и качвате видеоклип с помощта на iPhone и приложението Meta:
В първата стъпка, след създаването на видеото, се генерира един файл, съдържащ цялата необходима информация за видео, аудио и метаданни. Видеото също се компресира в тази стъпка, за да се запази управляем размер на файла. За iOS устройства това означава кодиране с HEVC (Main 10 Profile). След това се създават метаданни за AMVE и Dolby Vision, добавят се към кодирания битстрийм и накрая всичко се качва на сървърите за метаданни.
Във втората стъпка обработката се извършва на сървърите на Meta. Там се създават различни версии на оригиналното видео. Тъй като Meta видеата се възпроизвеждат на голямо разнообразие от дисплеи, те трябва да бъдат във формати, които могат да се показват оптимално на възможно най-много устройства. За HDR качвания на този етап се създават както HDR, така и SDR версии на видеото. SDR се създава за всички дисплеи, които все още не поддържат HDR, както и VP9 версия и AV1 версия, предлагащи най-високо качество с най-малък размер на файла. Всяка от тези версии има различен битрейт и следователно различен размер на файла. Това гарантира, че всички потребители, независимо от скоростта на широколентовия им интернет, могат да гледат всички видеа без никакви проблеми. Всички тези версии са кодирани с помощта на гореспоменатия кодек FFmpeg, което означава, че метаданните от amve и Dolby Vision се пропускат на този етап.
В третата стъпка, когато потребителят възпроизведе видеофайла на собствения си дисплей, системата автоматично избира коя предварително създадена версия да се използва за възпроизвеждане. В iOS всяко HDR видео се възпроизвежда с помощта на AVSampleBufferDisplayLayer (AVSBDL) на Apple.
Поддръжка за amve
Поддръжката на amve датира от 2022 г. Инженерите успяха да проследят как метаданните на необработено видео на iPhone се държат между декодера и крайния дисплей на екрана, използвайки AVSBDL. Тъй като всеки отделен кадър съдържаше идентични метаданни, данните от amve бяха интегрирани директно в конвейера на плейъра като временно решение. Това обаче не беше перфектно, защото въпреки факта, че данните изглеждаха статични, те можеха да се променят поради актуализации на софтуера или пускането на нов iPhone. След такава промяна конвейерът на плейъра щеше да използва грешни метаданни и дисплеят вече нямаше да е правилен.
Освен това, Android не поддържа amve данни. Следователно, HDR видеоклип, качен чрез устройство с Android, няма да бъде възпроизведен вярно, тъй като мета приложенията погрешно биха приложили amve данните и към Android видеоклипове. През 2024 г. FFMPEG си сътрудничи с общността, за да разшири кодека, за да включи поддръжка на amve.
Долби Вижън
С Dolby Vision нещата бяха малко по-различни. Първият проблем беше, че съществуващата спецификация изисква предаването на метаданни в рамките на HEVC битов поток. В света на Meta обаче няма HEVC кодирани видеоклипове. Следователно метаданните на Dolby Vision трябва да бъдат транспортирани в кодек, който също се предоставя от Meta.
При запис на HDR видеоклипове с iPhone се използва Dolby Vision Profile 8.4. Числото 8 показва, че е профил с HEVC кодек, докато .4 показва кръстосана съвместимост с HLG.
За Meta беше полезно, че Dolby също разработи Profile 10. Този профил не използва HEVC; вместо това той комбинира метаданни на Dolby Vision с видео данни, кодирани чрез AV1. VP9 не позволява поддръжка на допълнителни метаданни, така че поддръжката на Dolby Vision не е възможна с този кодек.
Нито Dolby Vision Profile 8, нито Profile 10 бяха наистина поддържани от инструментите за видеообработка, налични по това време (предимно FFMPEG и Shaka, инструмент за пакетиране) от Meta. Въз основа на спецификациите на Dolby, те отново си сътрудничиха с FFMPEG и намериха решение. Това решение включваше транскодиране на битови потоци, кодирани с HEVC Profile 8.4, в AV1 Profile 10.4 потоци в рамките на FFMPEG (използвайки енкодери libaom и libsvtav1).
Второто препятствие беше AVSampleBufferDisplayLayer. Като напомняне, AVSampleBufferDisplayLayer е компонентът, отговорен за действителното възпроизвеждане на дисплея на iOS устройства. Когато се подава към AVSBDL кодиран HEVC битов поток, като например HDR видеоклип, записан с iPhone, метаданните на Dolby Vision се разпознават лесно и се използват за оптимизиране на възпроизвеждането. Meta приложенията обаче не могат да предоставят единствено този файлов формат, тъй като се качват и видеоклипове, създадени с други енкодери. Следователно, метаданните на Dolby Vision трябва да се извличат отделно, за да могат всички потребители да се възползват от тях. Затова, след като Dolby определи Profile 10 с AV1 битов поток, Meta разработи начин за извличане на метаданните на Dolby Vision и след това пакетирането им във формат, който се приема и разпознава от AVSBDL.
За да се провери дали системата действително работи, бяха създадени различни публикации в Instagram с видеоклипове за тестване, някои с, а други без метаданни Dolby Vision. След това експертите на Dolby прецизно измериха и анализираха резултатите (яркост, цветове и др. при различни нива на яркост на дисплея) и потвърдиха, че системата функционира правилно. Наред с други открития, те откриха, че яркостта на изображението на файлове с метаданни Dolby Vision съответства много по-точно на действителния потенциал на яркостта на използвания дисплей. Резултатът: Изображението е по-близко до оригиналния запис, изглежда по-триизмерно и като цяло е по-динамично.
Meta естествено използва свои собствени методи за тестване, за да потвърди правилното функциониране на своята собствена разработка. Създадена е серия от идентични видеоклипове, всеки веднъж със и веднъж без метаданни Dolby Vision, и е разпространена до тестова аудитория. След това е събрана статистика за различните видеоклипове, включително продължителност на гледане, скорост на интернет връзката и евентуални проблеми с възпроизвеждането. Впоследствие разликите са сравнени.
Разбира се, очакването беше, че видеоклиповете с метаданни Dolby Vision ще се гледат по-дълго от тези без тях. Това обаче не се осъществи, което повдигна някои въпроси, тъй като Dolby Vision по принцип трябваше да подобри качеството на изображението.
Тестовата аудитория гледаше Dolby Vision видеата по-рядко, защото времето за зареждане и буфериране беше по-дълго, което ги караше просто да превъртат по-нататък във фийда. Въпреки че метаданните са доста компактни по отношение на обема на данните, към всяко видео бяха добавени средно 100 kbps. Въпреки че това може да звучи като малко количество, то е значително, като се има предвид широкият диапазон от потребители, устройства и интернет скорости, до които Meta доставя своите видеа. Всеки бит е от значение и допълнителните 100 kbps бяха достатъчни, за да повлияят негативно на времето за възпроизвеждане.
В крайна сметка това беше решено с компресиран формат на метаданни. Екипът на Dolby успя да намали натоварването на метаданните от 100 на 25 kbps с допълнителна спецификация. След това инженерите по метаданни трябваше да внедрят поддръжка за компресиране на метаданни Dolby Vision във FFmpeg, което беше усложнено от факта, че декодирането трябваше да се извършва и от приложения за метаданни (от страна на потребителя), тъй като Apple не поддържа компресирания формат на метаданни.
След това беше проведен допълнителен A/B тест, използвайки същата процедура като при първото пускане, и резултатът беше ясен: потребителите действително гледаха видеоклиповете с Dolby Vision по-дълго от тези без съответните метаданни. Това е логично, тъй като значителна част от потребителите с метаданни гледат видеоклипове вечер в среда със слаба светлина, където яркостта на екрана автоматично намалява. HDR видеоклиповете с правилни метаданни на Dolby Vision все още изглеждат ясни и динамични, но въпреки това са по-малко натоварващи за очите.
Бъдещето на Dolby Vision в Meta
А какво ще кажете за Dolby Vision в по-широката екосистема на Meta? Instagram за iOS е само началото. Meta има за цел да разшири поддръжката на Dolby Vision и към други Meta приложения в сътрудничество с Dolby. Това обаче не е лесно, защото Dolby Vision просто не се поддържа напълно в уеб средата – с многобройните си браузъри, операционни системи и типове дисплеи.
От друга страна, пътят до тази точка не беше лесен и основната процедура не е необходимо да се преоткрива. Ключът беше и все още е възможността за запазване на метаданните на Dolby Vision в комбинация с FFmpeg, дори когато видеото се разпространява в широк спектър от устройства за възпроизвеждане. Поддръжката за Dolby Vision и amve вече е част от веригата за кодиране на Meta и може, с някои корекции, да се използва и на други платформи. В момента например те работят върху поддръжката на Facebook Reels.