Sumerjámonos en Exo Player (Parte IV): Caching Video | por Prateek Batra
Streaming es la transmisión continua de archivos de audio o video desde un servidor a un cliente (el proceso que hace posible ver videos en línea)
El almacenamiento en búfer es algo que sucede cuando se reproduce un video. Es la práctica de precargar partes del contenido de video y ayuda a que la transmisión sea más fluida, ya que los videos pueden reproducirse antes de que se cargue todo el video. Ahora puede haber una lista de razones que pueden hacer que se almacene demasiado en el búfer, algunas de ellas son Internet lento, transmisión de contenido HD y demasiada latencia en la red.¿Cuál es la solución entonces 🤔?Dado que demasiado almacenamiento en búfer puede ser un problema importante para cualquiera de los usuarios de nuestra aplicación, tenemos muchas soluciones diferentes para esto.Ahora, en este artículo, cubriremos cómo almacenar en caché el contenido del video.
Configuración básicaPara la configuración básica, puede seguir la Parte 1:
repositorio de demostración
Ahora el almacenamiento en caché interno funciona junto con la fábrica de fuentes de datos utilizada por nuestro ExoPlayer. Here Data Source Factory es un lector de flujo de datos que lee parte de un flujo a través de la red o una fuente local o almacenada en caché y lo pone a disposición de ExoPlayer. Para almacenar en caché nuestra fuente de datos, usaremos una fuente de datos de caché que use la caché base de Android junto con ella. Hay una configuración específica que podemos añadir. He aquí cómo: ahora aquí solo vamos a usar el caché base junto con un directorio de archivos externo, es decir, un directorio de descarga Proveedor de base de datos independiente es un proveedor de base de datos utilizado por nuestro reproductor multimedia (ExoPlayer) que internamente solo usa SQLite.NoOpCacheEvictor básicamente define el mecanismo de desalojo para nuestro bloque de caché, también podemos usar el desalojo de LRU. Ahora que hemos inicializado nuestro caché de descarga, podemos usarlo para generar nuestra fábrica de fuente de datos de caché y esto se puede usar al configurar nuestra instancia de reproductor.CacheSink: este es un tipo de sumidero de datos con un fragmento predeterminado y un tamaño de búfer, que se utiliza para escribir un flujo de datos arbitrario en la memoria caché. Si dejamos esto nulo, nuestra CacheDataSourceFactory sería de solo lecturaUpstreamFactory: Esto denota el flujo de datos desde el cual leemos los datos si no hay datos almacenados en caché, es decir, directamente desde la redDownStreamFactory: Esto indica dónde o cómo leeremos los datos en términos de archivo local y caché. Aquí usamos File Data Source según nuestro caso de uso, pero también hay muchas otras fuentes de datosETIQUETADO IGNORAR CACHE EN ERROR: Este es un indicador que ayuda a ignorar cualquier error que encontremos en caso de que un fragmento almacenado en caché no esté disponible o arroje un error. En tales casos, se utiliza nuestra Up Stream Factory. Del mismo modo, también tenemos otras 2 banderas FLAG_BLOCK_ON_CACHE y FLAG_IGNORE_CACHE_FOR_UNSET_LENGTH_REQUESTS. Cache Data Source Factory ahora se puede usar más para crear fuentes de medios y usarse junto con nuestro reproductor. Hay muchas configuraciones profundas y experimentos que se pueden hacer junto con él. Esta es una implementación de demostración para el almacenamiento en caché básico. Déjame saber cómo trabajaste en ExoPlayer y sus varias funciones increíbles en los comentarios. Gracias por leer, ¡estén atentos a los artículos increíbles! https://twitter.com/its_pra_tickNo olvides aplaudir, feliz codificación 🙂