Примеры из практики
Instagram и Facebook обеспечивают мгновенное воспроизведение с помощью Media3 PreloadManager, повышая вовлеченность пользователей.
4 минуты чтения

В динамичном мире социальных сетей внимание пользователей быстро завоевывается или теряется. Приложения Meta (Facebook и Instagram) входят в число крупнейших социальных платформ мира и обслуживают миллиарды пользователей по всему миру. Для Meta бесперебойная доставка видео — это не просто функция, а ядро пользовательского опыта. Короткие видеоролики, особенно лента новостей Facebook и Reels в Instagram, стали основным фактором вовлечения аудитории. Они позволяют выражать творческие способности и быстро потреблять контент, объединяя и развлекая людей по всему миру.
В этой статье мы расскажем о том, как 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 хранит в памяти видео, доступные сразу после текущего Reels. Такой двунаправленный подход гарантирует, что независимо от того, проводит ли пользователь пальцем вверх или вниз, переход будет мгновенным и плавным. В результате значительно улучшилось качество пользовательского опыта (QoE), включая улучшение времени начала воспроизведения и времени до первого кадра.
Масштабирование для разнообразной глобальной экосистемы устройств.
Масштабирование высокопроизводительного видеохостинга на миллиардах устройств требует не только агрессивной предварительной загрузки, но и интеллектуальных решений. Компания Meta столкнулась с первоначальными проблемами, связанными с нехваткой памяти и задержкой прокрутки, особенно на оборудовании среднего и низкого ценового сегмента. Для решения этой проблемы они разработали систему обнаружения перегрузки устройства на основе реализации Media3. Теперь приложения отслеживают сигналы ввода-вывода и ЦП в режиме реального времени. Если устройство находится под сильной нагрузкой, предварительная загрузка приостанавливается, чтобы обеспечить приоритет отзывчивости пользовательского интерфейса.
Такая оптимизация с учетом особенностей устройства гарантирует, что преимущество мгновенного воспроизведения не достигается за счет стабильности системы, позволяя даже пользователям со старым оборудованием наслаждаться более плавной и бесперебойной трансляцией.

Архитектурные достижения и состояние строительных норм
Помимо показателей, доступных пользователям, переход на Media3 PreloadManager обеспечил долгосрочные архитектурные преимущества. Хотя процесс интеграции и настройки потребовал нескольких итераций для балансировки производительности, получившийся код стал более удобным для сопровождения. Команда обнаружила, что API PreloadManager чисто интегрируется с существующей экосистемой Media3, что позволяет лучше распределять ресурсы. Для Meta внедрение Media3 PreloadManager стало стратегической инвестицией в будущее потребления видеоконтента.
Внедрение предварительной загрузки и добавление интеллектуальных шлюзов для устройств позволило им успешно увеличить общее время просмотра своих приложений и повысить вовлеченность глобального сообщества.
Последствия для Instagram и Facebook
Проактивная архитектура обеспечила немедленные и измеримые улучшения на обеих платформах.
- Facebook добился более быстрого начала воспроизведения, снижения количества зависаний и уменьшения числа неудачных сеансов (таких как повторная буферизация, задержка начала, низкое качество и т. д.), что в целом привело к увеличению времени просмотра.
- В Instagram наблюдалось ускорение начала воспроизведения и увеличение общего времени просмотра. Устранение задержки присоединения (интервала от действия пользователя до отображения первого кадра) напрямую повысило показатели вовлеченности. Меньшее количество прерываний из-за уменьшения буферизации означало, что пользователи смотрели больше контента, что отразилось на показателях вовлеченности.

Ключевые инженерные выводы в масштабе предприятия
По мере изменения привычек потребления медиаконтента спрос на мгновенный доступ будет продолжать расти. Внедрение проактивного управления памятью и оптимизация для масштабируемости и разнообразия устройств гарантируют, что ваше приложение сможет эффективно удовлетворять эти ожидания.
- Приоритет отдается интеллектуальной предварительной загрузке.
Сосредоточьтесь на обеспечении надежной работы, минимизируя задержки и время загрузки за счет предварительной загрузки. Вместо простого кэширования на диске, использование предварительной загрузки на уровне памяти гарантирует, что контент будет готов в тот момент, когда пользователь начнет с ним взаимодействовать.
- Согласуйте свою реализацию с шаблонами пользовательского интерфейса.
Настройте поведение предварительной загрузки в соответствии с пользовательским интерфейсом вашего приложения. Например, используйте фокус «только на текущем элементе» для смешанных лент, таких как Facebook, чтобы сэкономить память, и стратегию «предварительная загрузка смежных элементов» для вертикальных сред, таких как Instagram Reels.

- Используйте Media3 для обеспечения долгосрочной работоспособности кода.
Интеграция с API Media3 вместо собственного решения для кэширования позволяет лучше распределять ресурсы между плеером и PreloadManager, что дает возможность управлять несколькими видеофайлами с помощью одного экземпляра плеера. Это обеспечивает перспективность кода, который командам разработчиков будет проще не только поддерживать и оптимизировать с течением времени, но и получать выгоду от последних обновлений функций.
- Внедрить оптимизации, учитывающие особенности устройства.
Расширьте охват рынка, протестировав продукт на различных устройствах, включая модели среднего и низкого ценового сегмента. Используйте сигналы в реальном времени, такие как данные о процессоре, памяти и вводе-выводе, для динамической адаптации функций и использования ресурсов.
Узнать больше
Чтобы начать и узнать больше, посетите
- Ознакомьтесь с документацией Media3 PreloadManager .
- Для получения более подробной технической информации и сведений о реализации ознакомьтесь с серией статей в блоге .
- Ознакомьтесь с примером приложения , чтобы увидеть предварительную загрузку в действии.
Теперь вы знаете секреты мгновенного воспроизведения. Попробуйте!
Продолжить чтение

Примеры из практики
Monzo — это британский цифровой банк с 15 миллионами клиентов, и их число продолжает расти. По мере масштабирования приложения команда разработчиков определила время запуска приложения как критическую область для улучшения, но опасалась, что это потребует значительных изменений в коде.
Ben Weiss • 2 мин чтения

Примеры из практики
TikTok — это глобальная платформа для коротких видеороликов, известная своей огромной пользовательской базой и инновационными функциями.
Ben Trengrove , Ajesh Pai • 2 мин чтения

Примеры из практики
При разработке Android-приложения для носимого устройства настоящая работа начинается, когда экран выключается.
Breana Tate • 4 мин чтения
Будьте в курсе событий
Получайте еженедельно самые свежие новости о разработке Android прямо на свою электронную почту.





