Para proporcionar una experiencia de visualización más fluida, TVSDK a veces almacena en búfer el flujo de vídeo. Puede configurar el modo en que el reproductor se almacena en búfer.
TVSDK define una duración del búfer de reproducción de al menos 30 segundos y un tiempo de búfer inicial de al menos 2 segundos antes de que comience la reproducción del contenido. Después de que la aplicación invoque play
, pero antes de que comience la reproducción, TVSDK almacena en búfer el contenido hasta el momento inicial para proporcionar un inicio sin problemas cuando comienza a reproducirse.
Puede modificar los tiempos de almacenamiento en búfer mediante la definición de nuevas directivas de almacenamiento en búfer y puede modificar cuándo se produce el almacenamiento en búfer inicial mediante el uso instantáneo de.
Según el entorno (incluido el dispositivo, el sistema operativo o las condiciones de la red), puede establecer diferentes políticas de almacenamiento en búfer para el reproductor, como cambiar la duración mínima del almacenamiento en búfer inicial y del almacenamiento en búfer de reproducción continua.
Después de llamar a play
, el reproductor multimedia comienza a almacenar el vídeo en búfer. Cuando el reproductor de contenidos ha almacenado en búfer la cantidad de vídeo especificada por el tiempo de almacenamiento en búfer inicial, comienza la reproducción. Este proceso mejora el tiempo de inicio, ya que el reproductor no espera a que se llene todo el búfer de reproducción antes de iniciar la reproducción. En su lugar, después de almacenar en búfer los segundos iniciales, comienza la reproducción.
Mientras se procesa el vídeo, TVSDK continúa almacenando en búfer nuevos fragmentos hasta que se almacena en búfer la cantidad especificada por el tiempo de búfer de reproducción. Si la longitud actual del búfer cae por debajo del tiempo del búfer de reproducción, el reproductor descargará fragmentos adicionales. Una vez que la longitud actual del búfer sea superior en unos segundos al tiempo de búfer de reproducción, TVSDK dejará de descargar fragmentos.
Si el valor inicial del búfer es alto, puede proporcionar al usuario un tiempo de almacenamiento en búfer inicial largo antes de comenzar. Esto puede proporcionar una reproducción fluida durante más tiempo; sin embargo, si las condiciones de la red son deficientes, la reproducción inicial podría retrasarse.
Si habilita el encendido instantáneo llamando a prepareBuffer
, el almacenamiento en búfer inicial comienza en ese momento, en lugar de esperar a play
.
El MediaPlayer
proporciona métodos para establecer y obtener el tiempo de almacenamiento en búfer inicial y el tiempo de almacenamiento en búfer de reproducción.
Si no define los parámetros de control del búfer antes de comenzar la reproducción, el reproductor de contenido toma como valor predeterminado 2 segundos para el búfer inicial y 30 segundos para el tiempo de búfer de reproducción en curso.
Configure las variables BufferControlParameters
, que encapsula los parámetros iniciales de control de tiempo del búfer de reproducción y tiempo del búfer de reproducción.
Esta clase proporciona los siguientes métodos de fábrica:
Para establecer el tiempo de búfer inicial igual al tiempo de búfer de reproducción:
public static BufferControlParameters createSimple(long bufferTime)
Para definir los tiempos iniciales y de búfer de reproducción:
public static BufferControlParameters createDual(
long initialBuffer,
long bufferTime)
Si los parámetros no son válidos, estos métodos activan MediaPlayerException
con código de error PSDKErrorCode.INVALID_ARGUMENT
, como cuando se cumplen las siguientes condiciones:
Para definir los valores de los parámetros de búfer, utilice esta opción MediaPlayer
método:
void setBufferControlParameters(BufferControlParameters params)
Para obtener los valores actuales de los parámetros de búfer, utilice esta opción MediaPlayer
método:
BufferControlParameters getBufferControlParameters()
Por ejemplo, para establecer el búfer inicial en 5 segundos y el tiempo de búfer de reproducción en 30 segundos:
mediaPlayer.setBufferControlParameters(BufferControlParameters.createDual(5000, 30000));