Видео — это сложно. Мы перевели все конференции в онлайн ещё полтора года назад. И все эти полтора года мы мучаемся с плеерами, кодеками, раздачей видео, WebRTC-звонками, транскодингом и ворохом других проблем. Конца и края этому не видно. Поскольку разбираться в видео нам надо, а фантазия у нас давно закончилась, мы нашли единомышленников и сделали конференцию VideoTech по видео и стримингу. Она пройдёт в онлайне уже совсем скоро — с 1 по 3 декабря. В числе основных тем VideoTech 2021 — WebRTC, кодеки, качество видео, его раздача, ML/AI и не только. Полный список тем и докладов — в тексте ниже. WebRTC Кодеки аудио и видео Качество видео Раздача видео Внутренняя инфраструктура Машинное обучение Плееры Сложно не заметить, как возросло количество видеозвонков в мире за последние два года. А где видеозвонки — там и WebRTC. Так что неудивительно, что в пандемийном мире этот блок программы оказался самым большим, из целых 10 докладов. А ещё внутри него возник «подблок». В этом году VK проделали большую работу над своими видеозвонками: сделали возможными звонки на тысячи участников, выпустили десктопные приложения, поддержали шаринг экрана в 4K и так далее. Поскольку такая масштабная история затрагивает самые разные сферы разработки (бэкенд, фронтенд, десктоп, смартфоны), у нас сразу несколько специалистов из VK поделятся опытом «с разных ракурсов»: Видеоконференции — звонок на 10К участников во ВКонтакте VK Иван расскажет, как вообще устроены звонки на WebRTC, какие сложности возникают при реализации и как они решались в платформе VK Звонки. Часть доклада будет посвящена масштабированию на тысячи пользователей: почему такой звонок не заводится «из коробки», как в VK при таких нагрузках устроен бэкенд звонков, где возникают узкие места и как их преодолевать.  Также Иван погрузится в протоколы и кодеки, чтобы разобраться, как добиться высокой чёткости при демонстрации экрана в разрешении 4К. VK Звонки: выходя за лимиты браузера VK Здесь будет разговор о браузерной части. Пытаясь уместить в браузер звонки на тысячи участников, сталкиваешься с необходимостью идти на ухищрения по целому ряду причин, которые будут озвучены в докладе. Вводная часть доклада будет посвящена основам (что такое WebRTC, сигналинг, кадры в видео, способы передачи стримов на клиента). Основная часть — тем сложностям, с которыми команда за год столкнулась в VK Звонках, и как их решили. VK Звонки: соединяем тысячи людей с Android и iOS по WebRTC VK VK Это взгляд со стороны Android- и iOS-клиентов, так что будет много мобильной специфики. В числе того, о чём пойдёт речь — UI-оптимизации, шумоподавление и виртуальные фоны; Android- и iOS-специфичные API звонков. VK Звонки: десктопный клиент для видеозвонков без лимита на число участников — с нуля за 365 дней VK И, наконец, четвёртый доклад о VK Звонках — про десктопное приложение. Его разработка стала настоящим челленджем: требовалось и поддержать фичи (4K, отсутствие ограничения на число участников), и предоставить нативные сборки под все основные платформы (Windows, Mac, Linux), и всё это в кратчайшие сроки. Павел расскажет, как команда VK Звонков добилась поставленных целей с помощью нативной сборки WebRTC, кроссплатформенного фреймворка Qt с поддержкой OpenGL, танцев с бубнами и чистейшего кода на С++. Как подружиться со статистикой WebRTC и сэкономить тысячи часов на отладке Voximplant Voximplant Разберем форматы статистики WebRTC и узнаем, почему опираться на предложенный W3C вариант практически бесполезно, а использование adapter.js для унификации — не самый лучший вариант. Обсудим популярные сервисы типа callstats.io и testRTC. Рассмотрим опыт написания собственного сервиса сбора статистики и того, как это помогло повысить качество звонков.  И, конечно, самое главное: в докладе пойдет речь о том, как использовать статистику для улучшения качества звонков и конференций. Как и зачем определять пороговые уровни качества медиа потоков, анализировать использование кодеков и контролировать качество видео с их помощью. Peer-to-Peer доставка видео на базе WebRTC IVI Сейчас тема CDN (content delivery network) как никогда актуальна из-за возросшего трафика. Но что делать, если трафик возрастает вообще в разы? Какой для этого нужен CDN? Руслан знает, как можно решать эту проблему — он делал не классический CDN, а P2P и с радостью расскажет, в чём особенности. В докладе пойдет речь о работе технологии Mesh delivery (peer-to-peer на базе WebRTC), которая была разработана при непосредственном участии спикера. It's time to WHIP WebRTC into shape Millicast, Inc. Многие люди, работающие со стримингом, считают WebRTC «неполноценным» — ему не хватает стандартного протокола передачи сигналов, чтобы он работал, как протоколы реального времени RTMP или RTSP. WHIP (WebRTC HTTP Ingest Protocol) был разработан для решения самой большой проблемы, связанной с принятием WebRTC в качестве надёжного протокола передачи данных: media ingest. При этом WHIP позволяет WebRTC сохранить свои преимущества перед более старыми протоколами вроде RTMP — надёжность при плохом соединении, E2E-шифрование, поддержка новых кодеков (привет, AV1 SVC). О том, в чём именно улучшения от WHIP и как ими пользоваться, расскажет Райан Йесперсон из Millicast, который имеет более чем 20-летний опыт работы в сфере цифрового видео и стриминга. Масштабировать видеосвязь, повышая качество: маленькой командой и с кучей ограничений на старте Skyeng С 2019 года в Skyeng нагрузка выросла в три раза, а вот количество негативных отзывов на видеосвязь, наоборот, удалось снизить в три раза. Антон расскажет, как были реализованы различные видеорешения, как начали измерять видеосвязь, от субъективных оценок перешли к объективным на базе ML, попробовали Pion вместо Janus и принудительную деградацию видеосвязи вместо встроенного механизма в WebRTC, и как маленькие компании могут внедрить собственное WebRTC решение. Делаем SFU-сервер из libwebrtc своими руками IVA Technologies Чтобы сделать свой SFU-сервер, нужно разобраться в спецификации WebRTC и архитектуре её стандартной реализации libwebrtc. Начнём с внутренностей libwebrtc и установки простого P2P-соединения. Разберём путь сырых данных от микрофона и камеры до отправки в сокет, а также встречное направление — чтение данных из сокета, прохождение через движок и воспроизведение на устройствах вывода. Рассмотрим ключевые компоненты библиотеки WebRTC, выступающие «строительными блоками» при создании SFU-сервера. Затем расскажем о проблемах при использовании этих компонентов «из коробки» и причинах, заставляющих заменить их на что-то своё. Расскажем о том, как слепить из libwebrtc свой сервер и равним получившееся решение с Janus. Большое внимание уделим критериям оценки качества и производительности, а также методикам тестирования.  ICE-cold connection DINS Антон расскажет о технологии ICE (Internet Communications Engine), которая позволяет установить peer-to-peer соединение между участниками видеоконференции. Вы узнаете о STUN и TURN, заглянете внутрь протоколов, использующихся внутри WebRTC. Доклад рассчитан на аудиторию, которая имеет представление о базовых транспортных сетевых протоколах TCP и UDP, однако ничего не знает о NAT-traversal.  Система параллельного кодирования видео Кинопоиска: как мы к этому пришли и что будет дальше Кинопоиск (Яндекс) Михаил расскажет про систему параллельного кодирования видео в Кинопоиске, позволяющую готовить HLS/DASH/MSS-форматы из терабайтных четырехчасовых исходников за минуты. Что и зачем было сделано, почему именно так, а не иначе, и как система будет развиваться дальше — обо всем этом в докладе. Сам Михаил увлечен всеми областями интернет-видео (от многокамерной съемки до доставки прямых трансляций по всему миру), и помимо работы в Яндексе, причастен к проекту Olympic Video Player в Олимпийской вещательной службе. Транскодер на Nvidia Jetson Эрливидео В компании Максима разрабатывают и продают транскодирующие сервера на базе мобильных процессоров Nvidia Jetson. В докладе спикер поделится, зачем они это делают, какие проблемы возникли и какие получились результаты. Взлом VMAF и VMAF NEG, или Почему сравнивать кодеки в ближайшие годы станет заметно сложнее МГУ Если для вас значим вопрос выбора кодека — вполне вероятно, вам известны ежегодные сравнения кодеков от МГУ, которые проводятся уже 18 лет. Дмитрий Ватолин, возглавляющий этот проект, знает многое о хитростях подобных сравнений  — и расскажет на VideoTech про «взлом» современных метрик, по которым оценивают качество кодеков. Метрики развиваются, и все шире используется VMAF от Netflix. Но, как показали исследования, возможно «взломать систему», улучшив результат по этой метрике за счет препроцессинга без улучшения самого кодека. И в 2019-м Дмитрий и его коллеги опубликовали методику подобного взлома. В 2020-м Netflix исправили эту проблему в VMAF NEG. Но в 2021-м в новой публикации Дмитрий с коллегами показал, что завысить можно и результаты NEG. Об этой «борьбе снаряда и брони» и более глубоком анализе кодеков пойдет речь в докладе.  Как работает MPEG-5 Part 2 LCEVC и почему это важно V-Nova  MPEG-5 Part 2 LCEVC (Low Complexity Enhancement Video Coding) — это новый стандарт сжатия видео от MPEG. В стандарте даётся определение «улучшающего слоя», который, применяясь к базовому видео, закодированным другим кодеком, образует видеопоток улучшенного качества. Макс расскажет про разные стадии процесса кодирования и декодирования LCEVC, какие преимущества можно получить от его использования с разными базовыми кодеками и за счёт чего LCEVC их достигает.  The Building Blocks of the Netflix Streaming Experience Netflix Когда о своем опыте рассказывает такой видеогигант, как Netflix, это всегда ценно. Тэ-Юйань Хуан, работающая в компании уже семь лет, возглавляет там работу по улучшению качества воспроизведения с помощью адаптивного стриминга и различных оптимизаций. И докладе она рассмотрит четыре важных составляющих этого стриминга, напрямую влияющих на качество: технология кодирования;  доставка контента; адаптивный стриминг;  A/B тестирование.  Алгоритмы АBR на пальцах Яндекс Ольга, участвовавшая в разработке плеера Яндекса, объяснит простыми словами: что такое «качество видео»; существующие стратегии выбора качества в ABR на примере популярных библиотек для проигрывания видео; дополнительные факторы, которые учитываются в алгоритмах ABR. Доклад предназначен для разработчиков, которые задумываются, что находится под капотом библиотек dash.js/hls.js/shaka, или собираются сами влиять на выбор качества видео.  Раздача видео: эволюция от работы с одним CDN до постройки своего Netflix Александр на основе опыта работы в Hulu и Netflix в своем докладе расскажет об эволюционном пути доставки видео по мере роста трафика: от использования одного CDN до постройки своего. Во второй части он осветит оптимизацию работы Netflix Open Connect и расскажет, как с её помощью сервис может доставлять до 400Gbps трафика с одного сервера. Уменьшаем задержку в live-трансляциях Яндекс Яндекс Понятно, что чем меньше задержка в живой трансляции, тем лучше. Но как именно подходить к этому? Алексей и Дмитрий расскажут, откуда берутся задержки в трансляции и как их измерять. Затронут технологии low latency streaming, которые позволяют с ними бороться, и о подходе к этим технологиям в Яндексе. Также речь зайдёт про CMAF (Common Media Application Format) — следующий шаг в развитии удобных DASH-трансляций. Дрессированный медийный трафик Яндекса Яндекс Алексей развивает платформу видеотрансляций для сервисов Яндекса, включая онлайн-кинотеатр Кинопоиск. И в докладе рассмотрит соответствующую специфику работы с traffic engineering. Когда контент хранится в дата-центрах далеко от всех стыков с операторами связи, и его очень много. Когда при этом хочется учитывать гораздо больше критериев выбора подходящего маршрута вместо классического в BGP best-route. Когда есть много стыков с операторами, подключенных к дорогим маршрутизаторам, а для медийного трафика с большими операторами есть специальные стыки.  Необходимость кэширования контента рядом со стыками, явный выбор стыка в маршрутизации и контролирование его загрузки, разные типы линков и разные механизмы доставки трафика — обо всём этом в докладе. Создание с нуля системы вещания живых трансляций Tango Tango Tango Юрий и его коллеги из компании Tango расскажут о проблемах, с которыми пришлось столкнуться при использовании стека RTMP HLS. О том, какие требования поставил бизнес к видеоплатформе и как команда пришла к идее создания нового решения на базе SRT. Из чего выбирали и почему выбрали именно SRT. C какими сложностями столкнулись при построении сети доставки контента на SRT, работающую во всём мире в условиях взаимодействия нескольких облачных решений. Рассмотрят маршрутизацию трафика между разными облачными решениями для оптимизации стоимости.  Оркестрация транскодеров с помощью K8s MTS DIGITAL Транскодинг аудио- и видеосигнала, а особенно транскодинг живого сигнала на CPU — операция вычислительно дорогая, затраты на нее не особо предсказуемы и прогнозируемы. Оркестрация такого ПО тоже не самая простая задача (все мы строили свои балансировщики транскодеров). Как с помощью Kubernetes справиться со всем этим?  Txt2Vid: Ultra-Low Bitrate «Generative Compression» of Talking-Head Videos to Text Stanford University Как снизить объём передаваемых данных на два-три порядка, сохраняя при этом высокое качество видео? Как ни совершенствуй традиционные кодеки, такой результат вряд ли получишь. И Пулкит Тандон поговорит о гораздо более радикальном подходе, подходящем для видеозаписей в духе «говорящая голова». Txt2Vid предлагает пересылать сказанное текстом и затем создавать реконструкцию исходного видео с помощью ML (клонирование голоса, синхронизация движений губ). По субъективным оценкам, качество не страдает — и при этом становятся возможны видеозвонки в местах с плохим соединением. Модерация видеоконтента с помощью сервисов машинного обучения AWS AWS AWS сам по себе сверхпопулярен — но не все знают, что там есть ML-сервисы для видео. Пора узнать. Михаил сначала рассмотрит стек сервисов машинного обучения AWS, которые можно применять при работе с видеофайлами или потоковым видео. Затем участники узнают, как облегчить их использование на практике с помощью открытого фреймворка Media Insights Engine, а в конце будет решена задача по модерации путем поиска интересующих объектов на видео. AWS.ML создание и запуск моделей ML в облаке AWS AWS Ещё один доклад про AWS и ML от сотрудника компании, но о другом. Тут не конкретно о модерации видеоконтента, а о создании и запуске в облаке AWS своих моделей для видеотех-нужд. Александр расскажет, какие для этого существуют сервисы, как организовать жизненный цикл моделей ML, и подробно рассмотрим несколько архитектур готовых решений в области VideoTech. Реалистичные аватары и их использование для видеоконференций Itseez3D Inc. Этот доклад поведает про автоматическое создание реалистичных виртуальных персонажей и их использование в видеоконференциях на основе RemoteFace.ai. Речь пойдет об архитектуре приложения и его основных компонентах, использованных технологиях (таких, как отслеживание эмоций и анимация губ для имитации разговора).  Обо всём этом расскажет Александр Шишков, который более десяти лет работает в области компьютерного зрения. Сейчас он вице-президент по разработке в компании Itseez3D, которая занимается продуктами для создания реалистичных 3D-аватаров и 3D-сканирования. 8K Decoding in libVLC VLC В VLC живут в будущем: пока большинство видеопроектов ограничивается Full HD и 4K, тут уже научились декодировать видео в 8K. Проблема в том, что декодировать 8K-видео означает гонять туда-сюда целую прорву данных и загружать комп по самые помидоры, так что каждое лишнее копирование данных приводит к тому, что даже довольно мощные современные компьютеры с задачей проигрывания видео в 8К не справляются. О том, как любимый всеми плеер VLC победил 8К, расскажет не кто-нибудь, а сам Жан-Баптист Кемпф: директор всего проекта VideoLAN и ключевой разработчик VLC и libVLC. Отдельное огромное спасибо хочется сказать ребятам, которые помогли сделать программу конференции — программному комитету.   Подробнее почитать про конференцию и купить билеты можно на её сайте. Редактор