El uso de MediaPlayerItemLoader le ayuda a obtener información sobre un flujo de medios sin crear una instancia de MediaPlayer. Esto resulta especialmente útil en flujos de almacenamiento en búfer previo para que la reproducción pueda comenzar sin demora.
El MediaPlayerItemLoader
La clase le ayuda a intercambiar un recurso multimedia por el MediaPlayerItem
sin adjuntar una vista a MediaPlayer
, que asignaría recursos de hardware de descodificación de vídeo. Se necesitan pasos adicionales para el contenido protegido por DRM, pero este manual no los describe.
TVSDK no admite un único QoSProvider
para trabajar con ambos itemLoader
y MediaPlayer
. Si la aplicación utiliza Instant On, debe mantener dos QoS
y administrar ambas instancias para la información. Consulte Instant-on para obtener más información.
Cree una instancia de MediaPlayerItemLoader
.
private MediaPlayerItemLoader createLoader() {
MediaPlayerItemLoader itemLoader =
new MediaPlayerItemLoader(this, new MediaPlayerItemLoader.LoaderListener() {
public void onError(PSDKErrorCode mediaErrorCode, String description) {
//Do something
}
public void onLoadComplete(MediaPlayerItem playerItem) {
loader.prepareBuffer();
}
public void onBufferingBegin() {
//Do something
}
public void onBufferPrepared() {
mPlayer.reset();
}
});
itemLoader.setKeepRebufferingForLive(true);
return itemLoader;
}
Cree una instancia independiente de MediaPlayerItemLoader
para cada recurso. No use uno MediaPlayerItemLoader
para cargar varios recursos.
Implementación de ItemLoaderListener
clase para recibir notificaciones de MediaPlayerItemLoader
ejemplo.
private MediaPlayerItemLoader createLoader() {
MediaPlayerItemLoader itemLoader =
new MediaPlayerItemLoader(this, new MediaPlayerItemLoader.LoaderListener() {
public void onError(PSDKErrorCode mediaErrorCode, String description) {
//Do something
}
public void onLoadComplete(MediaPlayerItem playerItem) {
loader.prepareBuffer();
}
public void onBufferingBegin() {
//Do something
}
public void onBufferPrepared() {
mPlayer.reset();
}
} );
itemLoader.setKeepRebufferingForLive(true);
return itemLoader;
}
En el onLoadComplete()
callback, realice una de las siguientes acciones:
prepareBuffer()
para aprovechar las ventajas de la activación instantánea.MediaPlayer
mediante el uso de replaceCurrentItem()
.Si llama a prepareBuffer()
, recibirá el evento BUFFER_PREPARED en su onBufferPrepared
cuando finalice la preparación.
Llamada load
en el MediaPlayerItemLoader
y pasan el recurso que se va a cargar, y opcionalmente el ID de contenido y un MediaPlayerItemConfig
ejemplo.
loader = createLoader();
MediaResource res = new MediaResource(mVideoUrl, MediaResource.Type.HLS, metadata);
loader.load(res, 233, getConfig());
Para almacenar en búfer desde un punto que no sea el principio de la secuencia, llame a prepareBuffer()
con la posición (en milisegundos) en la que se va a iniciar el almacenamiento en búfer.
Utilice el replaceCurrentItem()
y play()
métodos de MediaPlayer
para empezar a jugar desde ese punto.
Esperar al estado inactivo e invocar replaceCurrentItem
.
Reproduzca el elemento.
Si el elemento se carga pero no se almacena en búfer:
prepareToPlay()
.play()
.Si el elemento se almacena en búfer:
play()
.