Casos de éxito
Instagram y Facebook ofrecen reproducción instantánea y aumentan la participación de los usuarios con Media3 PreloadManager
Lectura de 4 min
En el mundo dinámico de las redes sociales, la atención de los usuarios se gana o se pierde rápidamente. Las apps de Meta (Facebook e Instagram) se encuentran entre las plataformas sociales más grandes del mundo y atienden a miles de millones de usuarios a nivel global. Para Meta, ofrecer videos sin problemas no es solo una función, sino el núcleo de su experiencia del usuario. Los videos de formato corto, en particular los del feed de noticias de Facebook y los reels de Instagram, se convirtieron en el principal factor de participación. Permiten la expresión creativa y el consumo rápido de contenido, y conectan y entretienen a las personas de todo el mundo.
En esta entrada de blog, se explica el recorrido de Meta para transformar la reproducción de video para miles de millones de personas con la reproducción instantánea real.
La brecha de latencia en los videos de formato corto
Los videos de formato corto generan interacciones muy rápidas, ya que los usuarios se desplazan rápidamente por sus feeds. Ofrecer una transición fluida entre los videos en un feed en constante cambio presenta obstáculos únicos para la reproducción instantánea. Por lo tanto, necesitamos soluciones que vayan más allá del almacenamiento en caché de disco tradicional y las estrategias de reproducción reactiva estándar.
El camino a seguir con Media3 PreloadManager
Para abordar los cambios en los hábitos de consumo debido al aumento del contenido de formato corto y las limitaciones de la arquitectura tradicional de reproducción de formato largo, Jetpack Media3 introdujo PreloadManager. Este componente permite a los desarrolladores ir más allá del almacenamiento en caché en el disco, ya que ofrece un control detallado y personalización para mantener el contenido multimedia listo en la memoria antes de que el usuario presione reproducir. Lee esta serie de blogs para comprender los detalles técnicos sobre la reproducción de medios con PreloadManager.
Cómo Meta logró la reproducción instantánea real
Complejidades existentes
Anteriormente, Meta usaba una combinación de calentamiento (para preparar los reproductores) y recuperación previa (para almacenar en caché el contenido en el disco) para la entrega de videos. Si bien estos métodos ayudaron a mejorar la eficiencia de la red, también generaron desafíos significativos. El calentamiento requería la creación de varias instancias del reproductor de forma secuencial, lo que consumía una cantidad significativa de memoria y limitaba la precarga a solo unos pocos videos. Esta alta demanda de recursos significó que se podía aplicar una solución sólida más escalable para ofrecer la reproducción instantánea esperada en los feeds de redes sociales modernos con desplazamiento rápido.
Cómo integrar Media3 PreloadManager
Para lograr una reproducción verdaderamente instantánea, el equipo de Media Foundation Client de Meta integró Jetpack Media3 PreloadManager en Facebook e Instagram. Eligieron DefaultPreloadManager para unificar sus sistemas de reproducción y carga previa. Esta integración requirió refactorizar la arquitectura existente de Meta para permitir el uso compartido eficiente de recursos entre las instancias de PreloadManager y ExoPlayer. Este cambio estratégico proporcionó una ventaja arquitectónica clave: la capacidad de paralelizar las tareas de precarga y administrar muchos videos con una sola instancia del reproductor. Esto aumentó drásticamente la capacidad de precarga y, al mismo tiempo, eliminó las complejidades de memoria alta de su enfoque anterior.
Optimización y ajuste del rendimiento
Luego, el equipo realizó pruebas e iteraciones exhaustivas para optimizar el rendimiento en el diverso ecosistema global de dispositivos de Meta. La carga previa agresiva inicial a veces causaba problemas, como un mayor uso de memoria y una disminución del rendimiento de desplazamiento. Para resolver este problema, ajustaron la implementación con mediciones de memoria cuidadosas, teniendo en cuenta la fragmentación de los dispositivos y adaptando el sistema a patrones de IU específicos.
Ajuste de la implementación para patrones de IU específicos
Meta aplicó diferentes estrategias de precarga y adaptó el comportamiento para que coincidiera con los patrones de IU específicos de cada app:
- Feed de noticias de Facebook: La IU prioriza el video que se está mostrando. El administrador precarga solo el video actual para garantizar que comience en el momento en que el usuario detiene el desplazamiento. Este enfoque de "solo actual" minimiza el uso de datos y memoria en un entorno en el que los usuarios pueden ver muchas publicaciones estáticas entre videos. Si bien el sistema está diseñado actualmente para precargar solo el video en vista, se puede ajustar para que también precargue los videos futuros.
- Instagram Reels: Es un entorno de video puro en el que los usuarios deslizan el dedo verticalmente. Para esta IU, el equipo implementó una estrategia de "precarga adyacente". El PreloadManager mantiene los videos listos en la memoria inmediatamente después del Reel actual. Este enfoque bidireccional garantiza que, ya sea que el usuario deslice el dedo hacia arriba o hacia abajo, la transición siga siendo instantánea y fluida. El resultado fue una mejora drástica en la calidad de la experiencia (QoE), incluidas las mejoras en el inicio de la reproducción y el tiempo hasta el primer fotograma para el usuario.
Cómo escalar para un ecosistema global diverso de dispositivos
Para escalar una pila de video de alto rendimiento en miles de millones de dispositivos, se requiere más que una carga previa agresiva; se requiere inteligencia. Meta enfrentó desafíos iniciales con la presión de la memoria y el retraso del desplazamiento, en particular en el hardware de gama media a baja. Para resolver este problema, crearon un sistema de detección de estrés del dispositivo en torno a la implementación de Media3. Ahora, las apps supervisan los indicadores de E/S y CPU en tiempo real. Si un dispositivo está bajo una carga pesada, se pausa la precarga para priorizar la capacidad de respuesta de la IU.
Esta optimización compatible con el dispositivo garantiza que el beneficio de la reproducción instantánea no se produzca a costa de la estabilidad del sistema, lo que permite que incluso los usuarios con hardware más antiguo disfruten de un feed más fluido y sin interrupciones.
Logros de arquitectura y estado del código
Además de las métricas disponibles para los usuarios, la migración a Media3 PreloadManager ofreció beneficios arquitectónicos a largo plazo. Si bien el proceso de integración y ajuste necesitó varias iteraciones para equilibrar el rendimiento, la base de código resultante es más fácil de mantener. El equipo descubrió que la API de PreloadManager se integraba sin problemas con el ecosistema existente de Media3, lo que permitía un mejor uso compartido de los recursos. Para Meta, la adopción de Media3 PreloadManager fue una inversión estratégica en el futuro del consumo de video.
Al adoptar la precarga y agregar puertas inteligentes para dispositivos, lograron aumentar el tiempo de reproducción total en sus aplicaciones y mejorar la participación general de su comunidad global.
Impacto resultante en Instagram y Facebook
La arquitectura proactiva brindó mejoras inmediatas y medibles en ambas plataformas.
- Facebook experimentó inicios de reproducción más rápidos, tasas de interrupción de reproducción más bajas y una reducción en las sesiones deficientes (como el realmacenamiento en búfer, el tiempo de inicio retrasado, la calidad más baja, etc.), lo que, en general, generó un mayor tiempo de reproducción.
- Instagram registró inicios de reproducción más rápidos y un aumento en el tiempo de reproducción total. La eliminación de la latencia de unión (el intervalo desde la acción del usuario hasta la visualización del primer fotograma) aumentó directamente las métricas de participación. Las menos interrupciones debido a la reducción del almacenamiento en búfer hicieron que los usuarios miraran más contenido, lo que se reflejó en las métricas de participación.
Aprendizajes clave de ingeniería a gran escala
A medida que evolucionen los hábitos de consumo de medios, seguirá creciendo la demanda de experiencias instantáneas. Implementar una administración de memoria proactiva y optimizar la escala y la diversidad de dispositivos garantiza que tu aplicación pueda cumplir con estas expectativas de manera eficiente.
- Prioriza la precarga inteligente
Enfócate en ofrecer una experiencia confiable minimizando las interrupciones y los tiempos de carga a través de la precarga. En lugar de un simple almacenamiento en caché de disco, el uso de la precarga a nivel de la memoria garantiza que el contenido esté listo en el momento en que un usuario interactúa con él.
- Alinea tu implementación con los patrones de la IU
Personaliza el comportamiento de la precarga según la IU de tus apps. Por ejemplo, usa un enfoque de "solo actual" para los feeds mixtos, como Facebook, para ahorrar memoria, y una estrategia de "precarga adyacente" para los entornos verticales, como Instagram Reels.
- Aprovecha Media3 para mantener el código en buen estado a largo plazo
La integración con las APIs de Media3 en lugar de una solución de almacenamiento en caché personalizada permite un mejor uso compartido de recursos entre el reproductor y el PreloadManager, lo que te permite administrar varios videos con una sola instancia del reproductor. Esto da como resultado una base de código preparada para el futuro que es más fácil de mantener y optimizar con el tiempo para los equipos de ingeniería, y que también se beneficia de las actualizaciones de funciones más recientes.
- Implementa optimizaciones que tengan en cuenta el dispositivo
Amplía el alcance de tu mercado realizando pruebas en varios dispositivos, incluidos los modelos de gama media y baja. Usar indicadores en tiempo real, como la CPU, la memoria y las E/S, para adaptar las funciones y el uso de recursos de forma dinámica
Más información
Para comenzar y obtener más información, visita
- Explora la documentación de PreloadManager de Media3.
- Lee la serie de entradas de blog para obtener detalles técnicos y de implementación avanzados.
- Consulta la app de ejemplo para ver la carga previa en acción.
Ahora conoces los secretos para la reproducción instantánea. ¡Pruébalos!
Seguir leyendo
-
Casos de éxito
Monzo es un banco digital del Reino Unido con 15 millones de clientes y en crecimiento. A medida que la app crecía, el equipo de ingeniería identificó el tiempo de inicio de la app como un área crítica para mejorar, pero le preocupaba que requiriera cambios significativos en su código base.
Ben Weiss • Lectura de 2 min
-
Casos de éxito
TikTok es una plataforma global de videos cortos conocida por su enorme base de usuarios y sus funciones innovadoras.
Ben Trengrove, Ajesh Pai • Lectura de 2 min
-
Casos de éxito
Compilar una app para Wear OS significa que el trabajo real comienza cuando se apaga la pantalla.
Breana Tate • Lectura de 4 min
Mantente al día
Recibe la información más reciente sobre el desarrollo de Android en tu bandeja de entrada todas las semanas.