Instagram и Facebook обеспечивают мгновенное воспроизведение и повышают вовлеченность пользователей с помощью Media3 PreloadManager
Время на чтение: 4 минуты
В динамичном мире социальных сетей внимание пользователей завоевывается или теряется быстро. Приложения Meta (Facebook и Instagram) – одни из крупнейших социальных платформ в мире, которыми пользуются миллиарды людей. Для Meta бесперебойная доставка видео – это не просто функция, а основа пользовательского опыта. Короткие видео, особенно в ленте новостей Facebook и Instagram Reels, стали основным фактором вовлеченности. Они позволяют авторам выражать себя, а зрителям – быстро находить интересный контент.
В этой записи блога рассказывается о том, как компания Meta преобразовала воспроизведение видео для миллиардов пользователей, обеспечив по-настоящему мгновенное воспроизведение.
Разница в задержке при показе коротких видео
Короткие видео предполагают очень быстрое взаимодействие, поскольку пользователи быстро прокручивают ленту. Обеспечить плавный переход между видео в постоянно меняющейся ленте – непростая задача. Поэтому нам нужны решения, которые выходят за рамки традиционного кеша диска и стандартных стратегий реактивного воспроизведения.
Дальнейшие планы в отношении Media3 PreloadManager
Чтобы учесть изменения в привычках пользователей, связанные с ростом популярности коротких видео, и ограничения традиционной архитектуры воспроизведения длинных видео, в Jetpack Media3 был добавлен класс PreloadManager. Этот компонент позволяет разработчикам не ограничиваться кешем диска, а использовать детальный контроль и настройку, чтобы медиаконтент был готов к воспроизведению в памяти до того, как пользователь нажмет кнопку воспроизведения. Прочитайте серию записей в блоге, чтобы узнать технические подробности о воспроизведении медиаконтента с помощью PreloadManager.
Как компания Meta добилась мгновенного воспроизведения
Существующие сложности
Ранее для доставки видео Meta использовала комбинацию прогрева (для подготовки проигрывателей) и предварительной выборки (для кеширования контента на диске). Хотя эти методы помогли повысить эффективность сети, они создали значительные проблемы. Для этого требовалось последовательно создавать несколько экземпляров проигрывателя, что приводило к значительному потреблению памяти и ограничивало предварительную загрузку лишь несколькими видео. Такая высокая потребность в ресурсах означала, что для мгновенного воспроизведения, ожидаемого в современных быстро прокручиваемых лентах социальных сетей, можно было бы применить более масштабируемое и надежное решение.
Интеграция Media3 PreloadManager
Чтобы добиться мгновенного воспроизведения, команда Media Foundation Client в Meta интегрировала Jetpack Media3 PreloadManager в Facebook и Instagram. Для объединения систем предварительной загрузки и воспроизведения был выбран DefaultPreloadManager. Для этого потребовалось провести рефакторинг существующей архитектуры Meta, чтобы обеспечить эффективный обмен ресурсами между экземплярами PreloadManager и ExoPlayer. Это изменение дало ключевое архитектурное преимущество: возможность параллельно выполнять задачи предварительной загрузки и управлять несколькими видео с помощью одного экземпляра проигрывателя. Это позволило значительно увеличить объем предзагрузки и устранить сложности с памятью, которые возникали при использовании предыдущего подхода.
Оптимизация и настройка производительности
Затем команда провела тщательное тестирование и итерации, чтобы оптимизировать производительность в разнообразной глобальной экосистеме устройств Meta. Изначально агрессивная предзагрузка иногда вызывала проблемы, включая повышенное использование памяти и замедление прокрутки. Чтобы решить эту проблему, разработчики тщательно измерили объем используемой памяти, учли фрагментацию устройств и адаптировали систему к определенным шаблонам интерфейса.
Тонкая настройка реализации для определенных шаблонов интерфейса
Компания Meta применила разные стратегии предзагрузки и адаптировала поведение в соответствии с конкретными шаблонами пользовательского интерфейса каждого приложения:
- Новостная лента Facebook. В интерфейсе приоритет отдается видео, которое появляется на экране. Менеджер предварительно загружает только текущее видео, чтобы оно запускалось в тот момент, когда пользователь приостанавливает прокрутку. Такой подход позволяет минимизировать объем потребляемой памяти и трафика в среде, где пользователи могут видеть много статических записей между видео. В настоящее время система предварительно загружает только просматриваемое видео, но ее можно настроить так, чтобы она также предварительно загружала следующие видео.
- Instagram Reels. Это исключительно видеосреда, в которой пользователи пролистывают контент по вертикали. Для этого интерфейса команда реализовала стратегию предварительной загрузки соседних элементов. PreloadManager хранит в памяти видео, которые идут сразу после текущего ролика. Благодаря этому переход между видео происходит мгновенно и плавно, независимо от того, в какую сторону пользователь проводит по экрану. В результате качество восприятия (QoE) значительно улучшилось, в том числе сократилось время до начала воспроизведения и до появления первого кадра.
Масштабирование для разнообразной глобальной экосистемы устройств
Чтобы масштабировать высокопроизводительный видеостек на миллиарды устройств, недостаточно просто агрессивной предварительной загрузки. Нужен интеллект. Сначала компания Meta столкнулась с проблемами, связанными с нагрузкой на память и задержкой прокрутки, особенно на устройствах среднего и низкого ценового сегмента. Чтобы решить эту проблему, они создали систему обнаружения перегрузки устройств на основе Media3. Теперь приложения отслеживают сигналы ввода-вывода и ЦП в реальном времени. Если устройство сильно загружено, предварительная загрузка приостанавливается, чтобы обеспечить отзывчивость интерфейса.
Такая оптимизация гарантирует, что мгновенное воспроизведение не повлияет на стабильность системы, и даже пользователи старых устройств смогут наслаждаться плавным и непрерывным просмотром.
Архитектурные победы и здоровье кода
Помимо пользовательских показателей, переход на Media3 PreloadManager дал долгосрочные архитектурные преимущества. Хотя для интеграции и настройки потребовалось несколько итераций, чтобы сбалансировать производительность, полученную базу кода стало проще поддерживать. Команда обнаружила, что API PreloadManager легко интегрируется с существующей экосистемой Media3, что позволяет лучше распределять ресурсы. Для Meta внедрение Media3 PreloadManager стало стратегической инвестицией в будущее видеоконтента.
Внедрив предзагрузку и добавив умные шлюзы, они успешно увеличили общее время просмотра в своих приложениях и повысили вовлеченность пользователей по всему миру.
Последствия для Instagram и Facebook
Проактивная архитектура позволила сразу же добиться заметных улучшений на обеих платформах.
- Воспроизведение стало начинаться быстрее, а количество его остановок и неудачных сеансов (с повторной буферизацией, задержкой времени начала, низким качеством и т. д.) снизилось. В результате общее время просмотра увеличилось.
- В результате воспроизведение стало начинаться быстрее, а общее время просмотра увеличилось. Устранение задержки при подключении (интервала между действием пользователя и показом первого кадра) напрямую повысило показатели вовлеченности. Меньшее количество прерываний из-за буферизации позволило пользователям смотреть больше контента, что отразилось на показателях вовлеченности.
Основные выводы по разработке в масштабе
По мере того как меняются привычки потребления медиаконтента, спрос на мгновенный доступ к нему будет только расти. Чтобы приложение соответствовало этим ожиданиям, необходимо упреждающее управление памятью и оптимизация для масштабирования и различных устройств.
- Используйте умную предзагрузку
Чтобы обеспечить стабильную работу, минимизируйте перебои и время загрузки с помощью предзагрузки. Вместо простого кеширования диска используется предварительная загрузка на уровне памяти, что обеспечивает готовность контента в момент взаимодействия с ним пользователя.
- Как согласовать реализацию с шаблонами интерфейса
Настройте предварительную загрузку в соответствии с интерфейсом приложения. Например, для смешанных лент, таких как Facebook, используйте фокус только на текущем элементе, чтобы экономить память, а для вертикальных сред, таких как Instagram Reels, – стратегию предварительной загрузки соседних элементов.
- Используйте Media3, чтобы код оставался работоспособным в долгосрочной перспективе
Интеграция с API Media3 вместо собственного решения для кеширования позволяет улучшить совместное использование ресурсов между проигрывателем и PreloadManager, что позволяет управлять несколькими видео с помощью одного экземпляра проигрывателя. В результате вы получаете базу кода, которая не устареет со временем и которую командам разработчиков будет проще поддерживать и оптимизировать. Кроме того, вы сможете пользоваться новейшими функциями.
- Оптимизация с учетом устройств
Протестируйте приложение на разных устройствах, включая модели среднего и низкого ценового сегмента, чтобы расширить охват рынка. Используйте сигналы в реальном времени, такие как ЦП, память и I/O, чтобы динамически адаптировать функции и использование ресурсов.
Подробнее…
Чтобы начать работу и узнать больше, перейдите по ссылке .
- Изучите документацию по PreloadManager в Media3.
- Прочитайте серию статей в блоге, чтобы узнать больше о технических аспектах и реализации.
- Чтобы посмотреть, как работает предзагрузка, ознакомьтесь с примером приложения.
Теперь вы знаете, как пользоваться мгновенным повтором. Попробуйте!
-
Истории успехаGrab – ведущее суперприложение в Юго-Восточной Азии, которое предлагает услуги доставки, мобильности и финансовые услуги миллионам пользователей в восьми странах.
Ajesh Pai, Nguyen Van Minh, Tracy Agyemang • Время на чтение: 5 минут -
Истории успехаWhatsApp – крупнейшая в мире платформа для обмена сообщениями, которой пользуются миллиарды людей по всему миру. Это стандартный инструмент для общения людей в разных регионах, который позволяет обмениваться сообщениями конфиденциально, надежно и безопасно.
Niharika Arora, Tracy Agyemang, Mayank Jain • Чтение займет 8 минут -
Истории успехаМиссия Tinder – помогать людям находить друг друга и вдохновлять их на создание настоящих отношений. Мы делаем знакомства простыми и увлекательными для каждого нового поколения одиноких людей.
Ajesh Pai, Ulises Uriel Verduzco Díaz , Tracy Agyemang • Время на чтение: 4 минуты
Получайте еженедельную рассылку с последними новостями о разработке для Android.