Instagram y Facebook ofrecen reproducción instantánea y aumentan la participación de los usuarios con PreloadManager de Media3
Lectura de 4 min
En el dinámico mundo 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 de redes sociales más grandes del mundo y prestan servicio a miles de millones de usuarios en todo el mundo. Para Meta, ofrecer videos sin interrupciones no es solo una función, sino el núcleo de la experiencia del usuario. Los videos de formato corto, en especial los de la sección de noticias de Facebook y los Reels de Instagram, se convirtieron en un impulsor principal de la participación. Permiten la expresión creativa y el consumo rápido de contenido, además de conectar y entretener a personas de todo el mundo.
En esta entrada de blog, se explica cómo Meta transformó la reproducción de videos 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 de 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á de la memoria caché del disco tradicional y las estrategias de reproducción reactiva estándar.
El camino a seguir con PreloadManager de Media3
Para abordar los cambios en los hábitos de consumo derivados del 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 que los desarrolladores vayan más allá de la memoria caché del 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 contenido multimedia con PreloadManager.
Cómo Meta logró una reproducción instantánea real
Complejidades existentes
Anteriormente, Meta usaba una combinación de preparación (para que los reproductores estuvieran listos) y carga previa (para almacenar en caché el contenido en el disco) para la publicación de videos. Si bien estos métodos ayudaron a mejorar la eficiencia de la red, presentaron desafíos significativos. La preparación requería crear varias instancias de reproductor de forma secuencial, lo que consumía mucha memoria y limitaba la carga previa a solo unos pocos videos. Esta alta demanda de recursos implicaba que se podía aplicar una solución más escalable y sólida para ofrecer la reproducción instantánea que se espera en los feeds de redes sociales modernos y de desplazamiento rápido.
Cómo integrar PreloadManager de Media3
Para lograr una reproducción verdaderamente instantánea, el equipo de Media Foundation Client de Meta integró PreloadManager de Jetpack Media3 en Facebook e Instagram. Eligieron DefaultPreloadManager para unificar sus sistemas de precarga y reproducción. 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 carga previa y administrar muchos videos con una sola instancia del reproductor. Esto aumentó drásticamente la capacidad de carga previa y, al mismo tiempo, eliminó las complejidades de memoria alta de su enfoque anterior.
Optimización y ajuste de rendimiento
Luego, el equipo realizó pruebas y, también, iteraciones exhaustivas para optimizar el rendimiento en el diverso ecosistema de dispositivos globales de Meta. La carga previa agresiva inicial a veces causaba problemas, como un mayor uso de memoria y ralentizaciones en el rendimiento del 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 a patrones de IU específicos
Meta aplicó diferentes estrategias de carga previa y adaptó el comportamiento para que coincidiera con los patrones de IU específicos de cada app:
- Sección 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 "solo actual" minimiza el uso de datos y el espacio en memoria en un entorno en el que los usuarios pueden ver muchas publicaciones estáticas entre videos. Si bien el sistema está diseñado para precargar solo el video que se está viendo, se puede ajustar para que también precargue los videos que se verán a continuación.
- Reels de Instagram: 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 en la memoria los videos que siguen 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 mejoras en el inicio de la reproducción y el tiempo hasta el primer fotograma para el usuario.
Cómo escalar para un ecosistema de dispositivos global y diverso
Para escalar una pila de video de alto rendimiento en miles de millones de dispositivos, no basta con una carga previa agresiva, sino que se necesita inteligencia. Meta enfrentó desafíos iniciales con la presión de memoria y el retraso en el desplazamiento, en especial en 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 tiene una carga pesada, la carga previa se detiene para priorizar la capacidad de respuesta de la IU.
Esta optimización adaptada al 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 de hardware más antiguo experimenten un feed más fluido y sin interrupciones.
Ventajas de la arquitectura y estado del código
Más allá de las métricas para el usuario, la migración a Media3 PreloadManager ofreció beneficios de arquitectura a largo plazo. Si bien el proceso de integración y ajuste requirió 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 de forma limpia con el ecosistema existente de Media3, lo que permitía un mejor uso compartido de recursos. Para Meta, la adopción de PreloadManager de Media3 fue una inversión estratégica en el futuro del consumo de videos.
Adoptaron la carga previa y agregaron puertas inteligentes para dispositivos, lo que les permitió aumentar el tiempo de reproducción total en sus apps y mejorar la participación general de su comunidad global.
Impacto resultante en Instagram y Facebook
La arquitectura proactiva generó mejoras inmediatas y medibles en ambas plataformas.
- Facebook experimentó inicios de reproducción más rápidos, una disminución en las tasas de detención de la reproducción y una reducción en las sesiones de mala calidad (como el realmacenamiento en búfer, el retraso en la hora de inicio, la calidad más baja, etcétera), lo que, en general, generó un mayor tiempo de reproducción.
- Instagram observó un inicio de reproducción más rápido y un aumento en el tiempo de reproducción total. Eliminar 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. La disminución de las interrupciones debido a la reducción del almacenamiento en búfer significó que los usuarios miraron 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 contenido multimedia, la demanda de experiencias instantáneas seguirá creciendo. Implementar una administración proactiva de la memoria y optimizar la app para que se adapte a la escala y la diversidad de dispositivos garantiza que pueda cumplir con estas expectativas de manera eficiente.
- Prioriza la carga previa inteligente
Enfócate en ofrecer una experiencia confiable minimizando las interrupciones y los tiempos de carga a través de la carga previa. En lugar de simplemente almacenar en caché el disco, aprovechar la carga previa a nivel de la memoria garantiza que el contenido esté listo en el momento en que un usuario interactúe con él.
- Alinea tu implementación con los patrones de IU
Personaliza el comportamiento de carga previa según la IU de tu app. Por ejemplo, usa un enfoque de "solo actual" para feeds mixtos como Facebook para ahorrar memoria y una estrategia de "precarga adyacente" para 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 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 para los equipos de ingeniería con el paso del tiempo, y que también se beneficia de las actualizaciones de funciones más recientes.
- Implementa optimizaciones adaptadas a los dispositivos
Amplía tu alcance en el mercado realizando pruebas en varios dispositivos, incluidos los modelos de gama media y baja. Usa 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ébalas!
-
Casos de éxitoGrab es la superapp líder del sudeste asiático, que ofrece entregas, movilidad y servicios financieros a millones de usuarios en ocho países a través de una sola app.
Ajesh Pai, Nguyen Van Minh, Tracy Agyemang • Lectura de 5 min -
Casos de éxitoWhatsApp es la plataforma de mensajería más grande del mundo, con miles de millones de usuarios en todo el planeta. Es la herramienta de comunicación predeterminada para personas de diversas regiones, ya que conecta a los usuarios a través de mensajes privados, confiables y seguros.
Niharika Arora, Tracy Agyemang, Mayank Jain • Lectura de 8 min -
Casos de éxitoTinder reduce los inicios en frío de la app en un 47% con el nuevo Analizador de configuración de R8
La misión de Tinder es potenciar e inspirar conexiones reales haciendo que conocer gente sea fácil y divertido para cada nueva generación de solteros.
Ajesh Pai, Ulises Uriel Verduzco Díaz , Tracy Agyemang • Lectura de 4 min
Recibe la información más reciente sobre el desarrollo de Android en tu bandeja de entrada todas las semanas.