Что происходит после кнопки Play: как устроены современные видеоплееры

Для пользователя видеоплеер кажется чем-то обыденным. Открыл страницу, нажал Play, смотришь видео. Если видео запускается быстро, звук не отстаёт, а ролик не зависает на середине, значит, всё работает как нужно.
Но «под капотом» у современного видеоплеера начинка ничуть не проще, чем у спорткара — это один из самых сложных элементов цифровых платформ. Он должен за доли секунды определить:
- с какого устройства человек смотрит видео;
- какое у него соединение;
- какие форматы поддерживает браузер или телевизор;
- где находится ближайший сервер с нужным файлом;
- и в каком качестве лучше начать воспроизведение.
Сегодня это уже не просто «окно с кнопками», а целая система доставки, обработки и адаптации контента. Максим Ульянов, руководитель отдела веб-разработки RUTUBE TECH (технологический хаб цифровых платформ «Газпром-Медиа Холдинга»), специально для «Кода Дурова» рассказал, как устроены видеосервисы и технологии видеостриминга.
Как видео появилось в браузере
На раннем этапе интернет-видео было гораздо менее удобным. Его часто приходилось загружать как обычный файл: чем выше качество и длиннее ролик, тем дольше ожидание. Для коротких клипов это ещё работало, но для фильмов, сериалов и больших пользовательских платформ такая модель быстро стала тупиковой.
Прежде чем в интернете появились первые видеоплееры, индустрия долго перебирала форматы потокового мультимедиа, плагины и сами плееры.
Отсчитывать принято с 1993 года, с артхаусного фильма «Воск, или Открытие телевидения среди пчёл», который энтузиасты прогнали по сети со скоростью два кадра в секунду: на большее канала не хватало.
О настоящем стриминге, при котором контент воспроизводится по мере загрузки, а не после скачивания целиком, заговорили после того, как RealNetworks в 1995 году передала через свой RealAudio бейсбольный матч. Поддержку видео та же компания добавила через пару лет.
Потом несколько лет тянулась борьба RealPlayer, Windows Media Player и QuickTime, каждого со своими форматами и кодеками. Человеку по ту сторону экрана доставались вечная надпись «Buffering…» и зоопарк плееров на диске.
Развязка вышла неожиданной: победил Flash Player, изначально вообще не видеоплеер. Просто он был установлен едва ли не на каждом компьютере планеты, и ролик в нём проигрывался у любого посетителя без выяснений, что за софт у того стоит.
Поэтому в 2005 году YouTube стартовал именно на Flash. Сам Flash со временем сдал позиции HTML5 с его нативным тегом <video>, снявшим потребность в плагинах как класс. По большому счету, впрочем, всё это решало только вопрос показа ролика на странице, а до главных инженерных задач индустрия тогда ещё не добралась.
Сегодня же мы можем смотреть видеоконтент в разных форматах, будь то вертикальные ролики или фильм на любом устройстве из любой точки земли в самом высоком разрешении.
Почему видео больше не передают одним файлом
Главное отличие современного стриминга от старой модели в том, что видео не передается пользователю целиком. Платформа заранее или в процессе обработки делит ролик на «чанки», или же небольшие фрагменты, которые содержат в себе необходимую информацию для плеера.
Можно представить это как длинную ленту, разрезанную на короткие отрезки. Пользователь начинает смотреть первый фрагмент, а следующие уже подгружаются в фоне. Благодаря этому не нужно ждать, пока загрузится весь фильм или выпуск на несколько гигабайт.
К этой схеме индустрия пришла не сразу. Ранний YouTube, строго говоря, ничего не стримил, а пользовался так называемой прогрессивной загрузкой: браузер тянул с сервера самый обычный файл и начинал проигрывать его, не дожидаясь конца загрузки. Прямым эфирам и защищённому контенту полагались отдельные протоколы вроде RTMP. Сервер в них обязан держать по сессии на каждого зрителя.
Стоит аудитории дорасти до миллионов, и счёт за инфраструктуру уезжает в космос. Развернула ситуацию компания Apple, представившая в 2009 году вместе с iPhone протокол HLS, где видео нарезается на короткие сегменты в нескольких качествах и раздаётся в виде обычных HTTP-файлов, которые умеет кэшировать любой CDN. Нужда в дорогих специализированных серверах отпала, и экономика, как это обычно бывает, решила всё.
А времени на раздумья к тому моменту уже не оставалось: YouTube рос с 2005 года, а RUTUBE, кстати, появился в 2006-м и тоже стоял на пороге развития видеосервисов, Netflix запустил свой стриминг в 2007-м, и на старой модели доставки удержать такой рост не смог бы никто из них.
У такого подхода есть несколько преимуществ:
- Во-первых, видео стартует быстрее.
- Во-вторых, сеть используется экономнее: если пользователь посмотрел только первые две минуты, ему не нужно загружать весь часовой ролик.
- В-третьих, плеер может менять качество прямо во время просмотра. Если интернет стал хуже, он переключится на более лёгкую версию. Если соединение восстановилось, качество снова повысится.
Поэтому мы и часто сталкиваемся с ситуацией, когда ролик сначала открывается в среднем качестве, а через несколько секунд картинка становится заметно чётче.
Что происходит после нажатия Play
Основная часть работы начинается не в момент просмотра, а в момент загрузки видео автором на платформу.
После загрузки система анализирует файл и запускает серию процессов. Составляется план обработки, задачи транскодинга расходятся по свободным энкодерам, и на выходе вырастает лестница качеств, несколько вариантов разрешения и кодеков на все случаи жизни.
Исходный ролик перекодируется в несколько версий: например, для низкого качества, HD, Full HD или 4K. Каждая версия нужна для разных сценариев: слабый мобильный интернет, большой телевизор, старый браузер, современный смартфон.
Затем видео распределяется по географически распределённой сети CDN — серверов, расположенных в разных регионах. Они хранят наиболее востребованный контент ближе к пользователю. Если зритель смотрит видео из Владивостока, то ему невыгодно получать контент с сервера, который находится в Москве. Чем ближе сервер, тем быстрее стартует ролик и тем меньше риск зависаний. Именно поэтому RUTUBE постоянно развивает и расширяет свою серверную инфраструктуру, запустив более 380 CDN-серверов в 40 городах России и за границей.
Также плеер определяет устройство пользователя, браузер, операционную систему, доступные кодеки, примерную скорость соединения. Исходя из этого выбирается нужная версия видео и формат передачи.
Плеер получает первые фрагменты ролика и старается как можно быстрее показать первый кадр. Это один из ключевых показателей качества видеосервиса. Пользователь редко думает о нём напрямую, но именно он формирует первое ощущение: сервис «быстрый» или «тормозит».
Дальше система продолжает следить за ситуацией. Если соединение нестабильно, она может заранее снизить качество, чтобы избежать остановки воспроизведения. Если один сервер начинает отвечать некорректно, система может переключиться на другой источник. Так что даже когда вы уже спокойно наслаждаетесь просмотром любимого контента, плеер продолжает трудиться.
Помимо воспроизведения роликов, современные плееры умеют и многое другое. Например, RUTUBE имеет обширный функционал и богатый пользовательский интерфейс, который не ограничивается воспроизведением видео и умеет:
- воспроизводить рекламу (для этого нужно остановить показ видео, инициализировать рекламный движок, скачать рекламный креатив, проиграть его и вернуться к видео);
- логировать события статистики и отправлять соответствующие сообщения, если произошла ошибка;
- работать через внешний API, то есть обрабатывать запросы для внешних пользователей нашего плеера, который может эмбедироваться;
- а ещё — показывать субтитры, что может показаться чем-то простым, но на деле это не так. Часто их отображение скрывает за собой разветвлённую логику, потому что у нас может быть несколько файлов с субтитрами (например, русские и английские) — нужно организовать выбор языка. При этом модуль субтитров должен быть взаимосвязан с модулем настроек, чтобы, например, изменять их язык, цвет и размер;
- наконец, плеер умеет встраивать виджеты рекомендаций или следующих серий в серийном контенте: во время паузы, в конце видео и так далее, чтобы пользователю было удобно продолжить просмотр.
Почему кодеки так важны
Нельзя представить воспроизведение видео в стороне от кодеков. Видеокодеки выступают в роли ключевых элементов любого плеера. Они сжимают видео при хранении и передаче, а потом восстанавливают при просмотре.
Без сжатия видеофайлы были бы слишком тяжёлыми, особенно сегодня, когда у нас есть такое изобилие высококачественных форматов. Один ролик в хорошем качестве мог бы занимать огромный объём, а его передача требовала бы слишком много трафика. Кодеки позволяют сохранить качество картинки и уменьшить вес файла.
В последние годы активно развиваются различные современные кодеки, с каждым поколением которых растёт эффективность сжатия. Это важно не только для пользователя, у которого экономится трафик, но и для платформы, которая хранит и передает петабайты контента.
Так, например, на видеоплатформе RUTUBE в рамках тестирования новых изменений был успешно размещён первый видеоролик в высоком разрешении 8К (7680х4320) с поддержкой технологии High Dynamic Range (HDR) и частотой 50 кадров в секунду (FPS).
Размер видеофайла превысил 100 ГБ и стал самым крупным загруженным файлом на видеосервис, при этом благодаря использованию современных решений, для пользователя видео «весило» всего лишь 453 МБ без значительной потери качества.
Но есть нюанс: новый кодек должен поддерживаться устройством пользователя. Старый телевизор, устаревший браузер или давно не обновлённая операционная система могут просто не уметь работать с новым форматом. Поэтому видеоплатформы вынуждены поддерживать сразу несколько вариантов одного и того же видео.
Почему Smart TV — отдельная головная боль
На первый взгляд может показаться, что телевизор — идеальное устройство для видеосервисов. Большой экран, стабильный домашний интернет, привычный сценарий просмотра.
Но для разработчиков Smart TV часто сложнее, чем смартфоны и десктопы.
Проблема в огромном парке устройств. У пользователя может быть новый телевизор с современной операционной системой, а может быть модель десятилетней давности, которую он ни разу не обновлял, ведь новый телевизор мы покупаем гораздо реже смартфона или ноутбука. По сути, парк телевизоров — это музей всех эпох веб-видео сразу: где-то до сих пор живут браузерные движки десятилетней давности.
У телевизоров часто ограничены память, производительность и поддержка новых технологий. Обновления приложений тоже происходят медленнее: в веб-версии видеосервиса достаточно перезагрузить страницу, а на телевизоре пользователь должен сам скачать и установить новую версию приложения. Иногда этого просто не происходит годами.
Поэтому разработка видеоплеера — это постоянный компромисс между новыми возможностями и поддержкой старых устройств. Платформа хочет использовать современные технологии, но не может игнорировать пользователей, которые смотрят контент на старых устройствах.
Почему качество видео зависит не только от платформы
Видеосервис не может сделать исходный материал лучше, чем он был. Потенциал любой обработки, к сожалению, ограничен.
Если автор загрузил ролик в 720p, платформа может подготовить более лёгкие версии для слабого интернета, но она не превратит его в честное 4K. Можно улучшить обработку, оптимизировать передачу, но исходные параметры всё равно имеют значение.
Особенно заметны все недостатки на большом экране. Видео, снятое на старый смартфон, будет в любом случае проигрывать ролику, загруженному в высоком разрешении с хорошим звуком.
Видеосервис в конечном счёте отвечает за доставку и воспроизведение контента. Но финальное качество видеоролика складывается из нескольких факторов: исходного файла, скорости интернета, устройства пользователя и работы самого плеера.
Как платформы понимают, что плеер работает хорошо
Видеоплатформа следит за работой плеера и устраняет ошибки не вслепую. У крупных сервисов есть целый набор технических метрик, которые постоянно отслеживаются.
Например, время до первого кадра — сколько проходит между нажатием Play и началом воспроизведения видео. Это один из самых важных показателей качества для зрителя, ведь никто не хочет долго ждать. Также измеряются ошибки воспроизведения, количество повторных запросов, частота зависаний, скорость переключения качества и стабильность доставки видео с разных серверов.
Если после обновления приложения или сайта одна из метрик ухудшается, команда это видит и исправляет. В зону ответственности разработки плеера входит не только добавление новых функций, но и постоянный мониторинг стабильности и качества — и это действительно важно.
Мы считаем, когда видеоплеер работает незаметно, значит всё сделано правильно. Пользователь не должен думать о серверах, чанках и кодеках. Он просто должен нажать Play и начать смотреть свой любимый контент.
Куда движется видеостриминг
Следующий этап развития видеоплееров, скорее всего, будет связан с двумя направлениями: более эффективным сжатием и искусственным интеллектом.
В RUTUBE ИИ уже используется и будет активнее применяться в процессах автоматической премодерации контента, рекомендательных и поисковых алгоритмах, в разметке видео и генерации субтитров, а также в стеке развиваемой рекламной платформы. Для этого разрабатываются собственные модели, в том числе на основе доступных open source решений.
Перспективное направление — ИИ-апскейлинг на стороне устройства: платформа передаёт меньше данных, а нейросеть на смартфоне или телевизоре достраивает картинку до высокого разрешения.
Если такие технологии станут массовыми, видеосервисы смогут быстрее доставлять тяжелый контент, экономить место в хранилищах и снижать нагрузку на сеть. Но здесь есть ограничение, так как для сложной обработки нужны современные устройства. Индустрия снова столкнется с компромиссом между технологическим прогрессом и реальным парком пользовательских гаджетов.
Возможна и более глубокая трансформация. Сегодня видеосервисы конкурируют интерфейсами, каталогами и рекомендательными лентами. В будущем пользовательский сценарий может стать более персонализированным: человек будет не искать видео вручную, а формулировать запрос голосом или через ИИ-помощника, который сам подберёт нужный контент.
В таком мире видеоплеер останется важным, но станет ещё менее заметным и бесшовным. Он превратится в инфраструктурный слой между пользователем, контентом и интеллектуальной системой подбора.