Práctica de optimización de la experiencia de transmisión del cliente iQIYI

01

   Antecedentes del proyecto

La gran mayoría de los usuarios móviles de iQIYI dedican su tiempo a ver videos y una gran cantidad de usuarios juegan cientos de millones de veces al día. La velocidad y la experiencia de transmisión son particularmente importantes para la duración del consumo y la retención de los usuarios. Con la mejora de la calidad de audio y video, los recursos necesarios para comenzar a reproducir el video también aumentan gradualmente, lo que también plantea nuevos requisitos para la experiencia de comenzar la transmisión. Sin embargo, el enlace de reproducción general es muy complejo, e incluye principalmente el entorno de red, CDN, P2P, el rendimiento del dispositivo terminal, la claridad del contenido, etc.; cómo optimizar y reducir los aspectos del enlace que consumen mucho tiempo y superar el rendimiento desigual del dispositivo, Las fluctuaciones de la red y las diferencias de versión del sistema trae nuevos desafíos y también es la dirección de nuestra optimización continua.

02

  Demolición lenta de audio y video bajo demanda

Antes de presentar el plan de optimización, echemos un vistazo al proceso completo de transmisión. Una transmisión completa generalmente comienza desde el momento en que el usuario activa la reproducción y finaliza cuando aparecen el sonido y la imagen del video.

abbc399b76039d09800c02c8900ebaa2.png

La siguiente imagen es un proceso completo de reproducción de video.

70d36025c67215388efcaee82ac3cd02.png

Como se muestra en la figura anterior, incluye principalmente tres etapas: creación de la interfaz de la capa empresarial, descarga de datos y decodificación y renderización, que constituyen el tiempo que lleva la transmisión. Para diferentes etapas, necesitamos personalizar diferentes estrategias para acortar el tiempo total. A continuación, se presentarán en detalle algunas prácticas de optimización que estamos realizando o que ya hemos lanzado.

03

 práctica de optimización

  • precarga

La precarga es una solución común que requiere mucho tiempo para optimizar la red. Se refiere a encontrar el momento adecuado para activar la descarga de algunos datos de video por adelantado si la capacidad de la red lo permite antes de reproducir el video. La precarga es equivalente a reducir la carga de la red percibida por el usuario y el tiempo de conexión a la red.

La precarga también debe prestar atención a la eficiencia, la tasa de aciertos después de la precarga (inicio de transmisión y uso de datos precargados/número de veces de inicio de transmisión), tasa de utilización de precarga (inicio de transmisión y uso de datos precargados/número de datos precargados). Para equilibrar la eficiencia y la utilización, no es posible precargar todos los videos que se muestran en la página. Con este fin, seleccionamos algunos escenarios para centrarnos en intentarlo.

Tarjeta completa caliente del drama de la página de inicio:

3957538fa2faabc6951b7596e40fe02b.jpeg

Hay un total de 8 videos en la tarjeta completa de drama popular. El CTR de los primeros 2 videos es relativamente más alto que el de los últimos. Después de la prueba y la comparación, se habilita la precarga de los primeros 2 videos. La velocidad de reproducción activada por la popular tarjeta de drama aumenta en 5pp

c0c859c8b462b5dadb82f405a2753245.png

  • pre-renderizados

La precarga de datos optimiza mejor el tiempo de espera del usuario que puede causar la descarga de datos, pero no mejora el consumo de tiempo de las capas de decodificación y de negocios. Teniendo en cuenta que la decodificación de datos y la visualización de negocios se pueden separar, precargamos los datos en algunos escenarios. de eso, se introduce un mecanismo de decodificación previa.

f5fb542bffce58955024897272fb7f85.png

c40e82be1d8b5be59c26201a48efbcc5.pngUna vez completada la precarga de datos, continúe con PreDecode y almacene en caché los marcos de imagen decodificados.02403d0db97bb9da195b77fc9ccbe986.png

  • creado previamente

La carga previa o la decodificación previa ahorran la descarga y la representación de datos que consumen mucho tiempo, y la creación de la interfaz de usuario de la capa empresarial, que consume mucho tiempo, no se ha optimizado. anticipado como un todo, para que los usuarios no sientan el lento inicio de la transmisión, es decir, está infinitamente cerca del inicio de 0S, lo que lleva a nuestra solución creada previamente.

Esta es una solución de múltiples instancias de reproductor. Además del video que se está reproduciendo actualmente, se debe inicializar un grupo de instancias de reproductor (instancia de reproductor adicional) para admitir la reproducción del siguiente video.

e0d47dc37a76461d6880fe47d7834d0b.png

La imagen de arriba muestra nuestro proceso de ejecución en la escena vertical de pantalla completa. En la escena vertical de pantalla completa, los videos superior e inferior se crean previamente después de que el video actual comienza a transmitirse, y los dos videos se silencian y transmiten hasta que estén se detuvo inmediatamente después de la transmisión. Cuando el usuario se desliza a la posición correspondiente y reanuda la reproducción, se puede realizar la transmisión 0S. Las instancias múltiples tienen ciertos requisitos para el rendimiento del dispositivo. Admitimos habilitar la creación previa de uno (inferior) o dos (superior e inferior) controles de dispositivo para diferentes rendimientos. La escena vertical de pantalla completa en la aplicación no es el primer éxito de múltiples instancias la tasa alcanza el 97%.

aa553980d74391a24d50354ba4f813ba.png

  • Inicialización optimizada

También hay un enlace de preparación de inicialización muy importante antes del inicio del proceso de transmisión, especialmente para la escena en la que el usuario comienza a reproducir inmediatamente después de ingresar a la aplicación iQiyi y externamente abre la aplicación iQiyi para reproducir, etc. Con la iteración del negocio de la reproducción, hay cada vez más servicios y formularios funcionales agregados, como anuncios, videos interactivos, súper resolución, pantalla completa vertical y pantalla secundaria. También hay más y más dependencias de inicialización antes de la reproducción, y las dependencias previas que consumen mucho tiempo para la transmisión se convierten en elementos de bloqueo específicos en escenarios específicos.

87a381ce9ea6a1eee5224b05a75bf07c.png

Por esta razón, en el sistema Android, comenzamos el hilo de inicialización de la reproducción antes identificando escenarios específicos, aumentamos la prioridad de la inicialización de la reproducción, migramos los datos de configuración de la capa empresarial a MMKV, usamos una biblioteca ffmpeg simplificada y no cargamos bibliotecas ni API. que no se utilizan por primera vez. Esta optimización reduce el tiempo promedio para iniciar la aplicación iQIYI en 1,5 segundos.

La mayoría de las medidas anteriores están optimizadas en múltiples etapas, como el negocio y la decodificación, lo que básicamente puede garantizar que el lado del usuario no tenga una percepción obvia de la red, la decodificación y la renderización consumen mucho tiempo en casos extremos.

  • Optimización de la red que requiere mucho tiempo

Como se mencionó anteriormente, una etapa central de la transmisión es la descarga de datos, que se puede dividir en inicio de solicitud, resolución de nombres de dominio, programación, estrategia de prioridad, etc. Una vez que se inicia la aplicación, la dirección IP del nombre de dominio comúnmente utilizado para la transmisión se analiza previamente y se almacena en caché. Al transmitir, puede conectarse directamente a la IP del servidor, ahorrando una resolución de DNS que consume mucho tiempo. Al mismo tiempo, el sistema de control de circuito cerrado compuesto por CDN autoconstruido, servicio de CDN de terceros y retroalimentación máxima, servidor de programación, estrategia de detección de conexiones múltiples paralelas SDK del cliente y estadísticas de retroalimentación de acceso en tiempo real pueden obtener un mejor acceso calidad y menor ancho de banda en tiempo real.

Programación de fuentes múltiples : el programador asigna nodos y parámetros de fuentes múltiples como opciones a los clientes en función de los picos históricos de creación propia y de terceros y los costos de ancho de banda como objetivos de control;

Estrategia de detección : el cliente registra la velocidad de múltiples conexiones durante el uso y selecciona uno o más nodos adecuados de los resultados de la programación según el costo, la velocidad y el modo de trabajo configurado actualmente;

Comentarios de calidad de acceso : el cliente retroalimenta información como la velocidad, el estado de acierto y el código de error del nodo de conexión actual al fondo de comentarios de acceso en tiempo real; el fondo de comentarios de acceso en tiempo real cuenta la velocidad de acceso, la tasa de éxito y tasa de aciertos de cada CDN en la región de cada operador. Los datos se inyectan en el servidor de programación para controlar la programación del siguiente ciclo.

  • Optimización de la estrategia de puesta en marcha de la decodificación

La decodificación es un paso necesario antes de que aparezca la pantalla de video. Si no optimiza y confía directamente en ffmpeg o MediaCodec para el procesamiento, llevará mucho tiempo. Al mismo tiempo, también es fundamental elegir un caché de inicio adecuado.Hay principalmente tres puntos de optimización en esta área.

Selección inteligente de las capacidades del modelo : la evaluación integral maximiza el uso de las capacidades de decodificación del hardware del dispositivo, optimiza los flujos HEVC y admite el inicio inteligente del flujo De acuerdo con las condiciones de velocidad de la red del lado del dispositivo, teniendo en cuenta el equilibrio entre la claridad y la calidad de reproducción, real -El cálculo inteligente de tiempo inicia el flujo de código de punto de transmisión requerido;

Front-end de Moov : en la actualidad, todos los datos MP4 de iQIYI se producen con la estrategia de producción de front-end de moov, que acelera la eficiencia del procesamiento de datos al final;

Inicio de búfer de búfer bajo en el lado de la reproducción : adopte las estrategias de control separadas para el búfer de inicio y el búfer de congelación, y establezca el nivel mínimo de agua del búfer al iniciar la transmisión, para decodificar el primer cuadro de la manera más rápida. Y de acuerdo a las capacidades de los diferentes modelos de equipos, configuración de gestión inteligente para lograr los mejores resultados.

04

 Resumen y Outlook

Comprometidos con crear la mejor experiencia de reproducción, tratamos de medir los puntos débiles de ver películas desde la perspectiva de los usuarios, resolver sus puntos débiles en escenarios de reproducción reales a través de la deconstrucción técnica, el refinamiento y asegurar una ventaja integral sobre los productos de la competencia a través de la optimización continua. Largo Experiencia en transmisión de video.

6a12d95e40b1dff23898d6b2b68a24b7.png

En el futuro, continuaremos buscando nuevas direcciones para optimizar la experiencia de transmisión, como reducir la solicitud de pistas de audio independientes que consume mucho tiempo, la descarga inteligente, la reducción de los datos necesarios para la transmisión y la cooperación con los fabricantes de hardware para aumentar la prioridad del enlace. y reduzca los retrasos en la transmisión de la red, etc., mientras optimiza y mejora el monitoreo del enlace, asegurando que la calidad y la estabilidad contribuyan al "crecimiento constante".

a945478941d3765612492fa95fd94c1e.jpeg

tal vez quieras ver

Recorrido de investigación de pausa de GC bajo Spring Cloud Gateway

Diseño y práctica del sistema de operaciones en el extranjero de iQIYI

Práctica del lago de datos iQIYI

Supongo que te gusta

Origin blog.csdn.net/weixin_38753262/article/details/131862496
Recomendado
Clasificación