Игра Яндекс Практикума
Игра Яндекс Практикума
Игра Яндекс Практикума

Хроники застывшего кадра, или Как победить зависания видео

Отредактировано

Стриминговые сервисы стали неотъемлемой частью нашей жизни. Мы смотрим фильмы, сериалы, любимые шоу, видео от блогеров и порой сталкиваемся с зависанием картинки, или звука, или всего сразу. Такой отдых мы точно не планировали. Вместе с Алексеем Шпагиным из VK разберёмся, как это можно исправить.

434 открытий2К показов
Хроники застывшего кадра, или Как победить зависания видео

Самые популярные продукты единой видеоплатформы VK — VK Видео и VK Клипы — ежедневно собирают порядка 4 миллиардов просмотров. Это большой объём данных, который нужно поддерживать, но что важнее — миллионы пользователей, скрывающиеся за цифрами. Компания заботится о них и старается делать так, чтобы просмотр любого видео был комфортным и сопровождался только положительными эмоциями.

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

🔥А если не хотите читать статью — сразу переходите на видео🔥.

Что такое единая видеоплатформа VK

Единая видеоплатформа VK включает видеохостинг, стриминг и звонки. VK Клипы и VK Видео — наиболее популярные продукты. VK Видео собирают порядка 2,4 миллиарда просмотров в сутки, VK Клипы — 1,7 миллиарда. На единой видеоплатформе можно смотреть ролики и вести прямые трансляции.

Видеоплатформа VK состоит не только из бэкенда, но и из SDK, в который входит видеоплеер. Он умеет воспроизводить все основные видеоформаты, а также поддерживает самые популярные клиентские платформы, в том числе мобильные iOS и Android, а также SmartTV. На базе видеоплатформы работают сразу несколько больших сервисов. Самые крупные из них — это VK Видео и видео в Одноклассниках.

Хроники застывшего кадра, или Как победить зависания видео 1

Кружочки в VK Мессенджере и видеоконтент VK Клипов также лежат на единой платформе. А узнать больше об устройстве платформы можно в полном видео.

Почему видео иногда могут зависать

Зависания в среде разработчиков называют сто́ллами (от английского stall — «застревать», «заглохнуть») — это некая короткая остановка видео.

Причины столлов:

  • Сеть: слабый интернет, неоптимальный алгоритм выбора качества видео на клиенте, проблемы на раздаче видео;
  • Производительность: слабое устройство, слишком «жирный» видеопоток для гаджета, плеер конкурирует с другими приложениями за ресурсы девайса.

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

Как создавалась метрика

Новая метрика должна была определять количество миллисекунд столлов на секунду просмотра видео. Иными словами, время простоя на единицу просмотра видео. Чтобы эту метрику посчитать, команда разработала формулу: Empty Buffer/TVT.

Empty Buffer — общее время по всем пользователям и всем видео, когда в буфере не хватает данных для того, чтобы отрендерить и показать видео.
TVT (Total View Time) — общее время, которое все пользователи платформы провели за просмотром видео. 

Больше о метриках и инструментах Алексей рассказал в этом видео.

Далее разработчики определили целевое значение, к которому нужно стремиться, — это 3 мс/с (примерно 11 секунд столов на час просмотра). Большой плюс метрики в том, что она относительная и подходит для всех платформ. Таким образом, данные можно сравнивать друг с другом.

После анализа текущей ситуации выяснилось, что некоторые клиентские платформы VK уже соответствуют этой метрике, но остались и те, которым нужна доработка: десктопная версия, мобильный веб, приложения для Android ВКонтакте и VK Видео.

Хроники застывшего кадра, или Как победить зависания видео 2

Какие инструменты использовали

Один из инструментов для изучения проблемы с зависаниями — телеметрия. Её выбрали на основе двух суждений:

  • возможно, между приложениями или даже модулями приложения ВКонтакте есть конкуренция за ресурсы;
  • необходимо более детально видеть, где происходит затык при скачивании видео. 

Команда воспользовалась подходом коллег из Одноклассников с решением App Tracer. Телеметрия позволяет отслеживать действия видеоплеера, время загрузки сегментов и прочие операции.

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

В рамках А/В-тестирования команда единой видеоплатформы смотрела не только на целевую, но и на техническую, а также продуктовую метрику. К примеру, если продуктовые метрики упадут, даже несмотря на профит в целевой, такой эксперимент в релиз не пойдёт, а отправится на доработку и исследование.

Хроники застывшего кадра, или Как победить зависания видео 3

Результаты

Упомянутые метрики и инструменты действительно помогли выкатить эффективные доработки. Но впереди у команды ещё много тестов и экспериментов. На данный момент удалось достичь нужных показателей по Android-приложениям ВКонтакте и VK Видео. Необходимо ещё проработать десктопную версию и мобильный веб. Кроме того, разработчики заменили алгоритм оценки пропускной способности сети, добавили адаптивность по аудио и пересмотрели подход к количеству сегментов видео, скачиваемых за один запрос.

Обновлений много, но раскрывать все карты сейчас мы не будем.

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

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

Следите за новыми постами
Следите за новыми постами по любимым темам
434 открытий2К показов