Каждый раз, запуская Skype, Zoom или Hangouts, я с интересом жду свежую порцию косяков с видео и звуком. Технологии редко меня разочаровывают: квакание, фоновые шумы, пропадание голоса, распадение видео на «квадратики», замороженные кадры и другие радости видеоконференций преследуют видеозвонки, сколько я себя помню. Интерес во многом профессиональный: кроме программируемой телефонии для обычных телефонов, веб-страниц и мобильных приложений, мы в Voximplant отгружаем разработчикам видео. Хочется Full HD, в реальном времени, без фризов, в любом браузере и конференция человек на 50. Что интересно, в лабораторных условиях оно именно так и работает. А вот в каком-нибудь парке на 3G видеоконсультация с доктором может превратиться в пошаговую стратегию: пакеты-то теряются! Современный стек технологий пока не позволяет на равных бороться с «мигающим» интернетом, но исследования постоянно ведутся. Под катом — адаптированный для Хабра перевод про Salsify: сплава видеокодека и сетевого протокола, минимизирующего проблемы при передаче видео в реальном времени.
Команда из Стенфорда провела эксперимент: заменила всё лоскутное одеяло современных технологий видеоконференций на один протокол сжатия и передачи по сети.
Видеоконференции: лллллаги, ффффффризы и дерганье
Через некоторое время проблемы проходят сами собой. Иногда — вместе с изображением, оставляя вместо него черный экран. Доставляемые неприятности живут в диапазоне от «подождем пару минут, сетка мигает» до «телеоперацию можно завершать, пациент умер». Ученые из Стенфорда подошли к проблема кардинально, разработав с нуля и сетевой стек, и кодек, и способ передачи данных с единственной целью: сделать лучше чем у Skype, FaceTime, Hangouts и Chrome+WebRTC.
Возглавляющий исследование аспирант из Стенфорда Саджад Фолади представил результаты на профильной конференции NSDI'18. Идеи, лежащие в основе решения «с чистого листа», доступны всем желающим и могут быть использованы в коммерческих решениях. Конечно, если кто-нибудь захочет заменить весь стек.
«Передача видео через интернет эволюционировала десятки лет. Сейчас стек технологий больше напоминает лоскутное одеяло», — говорит доцент компьютерных наук Кит Уинстейн. «Саджад показал, как можно собрать эти кусочки другим способом, чтобы получить видео лучшего качества и с меньшими задержками».
А вот насчет сроков внедрения Уинстейн более осторожен. «Сейчас мы думаем над изменениями, чтобы в один прекрасный день передача видео в реальном времени стала более надежной. Будет очень кстати в телемедицине и роботизированных операциях», — говорит он. «Но в тот софт, что используется сейчас, все эти изменения внести сложно».
Новый подход, новое имя
Стенфордская команда назвала свой фреймворк «Salsify» (Козлобородник, такой «цветок», отдаленно напоминающий одуванчик в юности — примечание переводчика). Фреймворк решает проблему, вызванную тем, что «передача видео в реальном времени» сейчас сшита из двух разных технологий. Это «кодек», который сжимает видео и «сетевой протокол», который передает по сети небольшие кусочки данных и пытается угадать, когда нужно отправить следующие кусочки, чтобы его нигде по пути не выкинули, потому что сеть перегружена и вообще все плохо. Проблема в том, что эти два компонента эволюционировали отдельно друг от друга, часто разными компаниями, а затем были совмещены в таких продуктах как Skype или FaceTime.
Фолади уверен: чтобы решить проблему с фризами и лагами, кодек и сетевой стек должны работать вместе. Ведь важно не просто вовремя отправить пакет по сети. Нужно, чтобы в этом пакете были правильные данные! А не кусок видео 3-секундной давности, который все равно будет выкинут на принимающей стороне как «слишком старый». Как говорит руководитель проекта, «когда транспортный протокол и кодек теряют синхронизацию – начинаются проблемы». Поэтому команда сделала новый кодек, который максимально интегрирован с транспортным протоколом. Один алгоритм управляет сжатием кадров видео, формированием сетевых пакетов и их отправкой. Таким образом, видеопоток «знает» о состоянии сети в реальном времени и пытается в нее «вписаться» по мере возможности.
Даже один отправленный невовремя кадр может привести к рывкам и фризам. Salsify никогда не отправит кадр, если он может привести к проблемам с сетью
Увидеть и поверить
Исследователи провели множество тестов, сравнив Salsify с Microsoft Skype, Google Hangouts, Apple FaceTime и Google Chrome+WebRTC. В среднем Salsify уменьшает задержку в четыре раза (!!!), а качество изображения становится на 60% лучше (по методике изменения structural similarity, SSIM). Готовы side-by-side сравнение с Chrome 65 WebRTC и сделан отдельный веб-сайт, посвященный проекту. Проект open source: можно скачивать, изучать, использовать наработки.
У всех случаются проблемы с видеоконференциями. Очень круто работать над проектом, который призван изменить ситуацию.