Sumerjámonos en Exo Player (Parte II): Adición de control de calidad | por Prateek Batra
En el último artículo (Vamos a sumergirnos en ExoPlayer) comenzamos con la configuración básica de ExoPlayer con la vista de reproductor con estilo. Ahora, en el artículo, traté de escribir la parte donde establecemos la configuración en ExoPlayer para extraer múltiples cualidades de un video de tal manera que el usuario pueda cambiar entre ellas.
La definición básica de tasa de bits es «el número de bits transmitidos o procesados en una unidad de tiempo dada».
Ahora imaginemos que tenemos un archivo de video que tiene ciertos bits de datos incrustados. Estos bits de datos pueden o no estar disponibles en múltiples velocidades de bitsSi no tiene múltiples tasas de bits (archivo MP4)Si tiene múltiples tasas de bits (HLS, DASH)Bueno, puede haber muchos casos, pero consideramos que ExoPlayer ofrece específicamente soporte para reproducir todos estos diferentes tipos de formatos de video.El protocolo de comunicación de transmisión de velocidad de bits adaptable basado en HTTP fue desarrollado por Apple Inc. y lanzado en 2009. Funciona dividiendo todo el flujo en una secuencia de pequeños archivos basados en HTTP, es decir, una pequeña parte de un archivo completo. Una lista de transmisiones disponibles codificadas a diferentes tasas de bits, que luego se pueden usar para reproducir el formato de archivo m3u8. Este es un tipo de protocolo de transmisión de medios que funciona de manera similar a HLS en el sentido de que divide el contenido en una serie de pequeños segmentos que se sirven a través de HTTP. Esto puede ser una película o una transmisión en vivo de un evento deportivo. DASH fue desarrollado por MPEG (Moving Pictures Expert Group), la principal autoridad internacional en compresión de medios. El formato de un archivo Dash es MPD y, dado que es de código abierto y admite Extensiones de medios cifrados (EME) y Extensión de fuente de medios (MSE), también se usa comúnmente para compatibilidad con DRM.
El contenido proporcionado por ambos protocolos tiene una variedad de tasas de bits diferentes. y podemos usar un algoritmo de coincidencia de tasa de bits (ABR) para seleccionar automáticamente el segmento con la tasa de bits más alta posible en función del ancho de banda y otros factores
ExoPlayer es compatible con algoritmo ABR Básicamente, se trata de un algoritmo de selección de tasa de bits basado en el ancho de banda que elige automáticamente la mejor tasa de bits para seleccionar y reproducir. Hay varios otros algoritmos: Selección de pista adaptativa, aleatoria y fija.
Del mismo modo, tenemos diferentes calidades del mismo video incrustado con tasa de bits, subtítulos y el audio puede incrustarse tal como lo hemos hecho en videos doblados/subtitulados.Configuración básica: Demo Repo: como ya hemos configurado nuestro reproductor aquí, esto se omitirá
Todo es una pista en ExoPlayer, ya sea video, audio o texto
Selector de pista : Usaremos ExoPlayer Default TrackSelector, esto básicamente nos ayuda a obtener la pista actualmente seleccionada y extraer toda la información. Una sola pista puede contener varias subpistas incrustadas, es decir, grupos de pistasconfiguración del jugadorval trackSelector = DefaultTrackSelector(/* context= */this, AdaptiveTrackSelection.Factory())val player = ExoPlayer.Builder(this).setTrackSelector(trackSelector).build()
Básicamente, esto nos ayuda a extraer todas las subpistas definidas incrustadas en la pista principal principal que puede seguir el tipo TRACK_TYPE_VIDEO, TRACK_TYPE_AUDIO, TRACK_TYPE_TEXT, TRACK_TYPE_METADATA, TRACK_TYPE_IMAGE, etc.
Dado que obtenemos subtítulos y selección de audio de forma predeterminada con Styled Player Viewer, aquí solo nos centraremos en la calidad del video. Función de extensión de Kotlin que básicamente genera todos los niveles de calidad de video. aquí tenemos uno pista de renderizado que define toda la información de la pista de la fuente de medios actual Ahora tiene diferentes pistas de renderizado grupo de pistas de tipo audio, video, texto, etc. Este grupo de pistas consta de varias pistas en calidad de video, las cuales verificamos una por una para ver si son compatibles, es decir, si son compatibles o no. Si esta pista es compatible con la calidad de video, extraemos la etiqueta de ella y usamos esta pista más con nuestro reproductor para establecer esta calidad Aquí usamos Anulaciones de selección de pista que se puede usar con Tselector de rejilla Para seleccionar esa pista específica, esta función nos devuelve una lista donde hemos emparejado cada elemento con su SelectionOverride. Podemos analizar esta lista en cualquier lugar y mostrar la calidad. Aquí está la función utilizada anteriormente para comprobar si hay soporte