Resumen
Comenzando con Native SDK para Android versión 6.18.0, hay algunos cambios importantes en el complemento SSAI que mejoran el comportamiento de reproducción y búsqueda, particularmente en reproductores en pausa.
Anteriormente, cuando un usuario buscaba hacia adelante y cruzaba un anuncio, los controles de anuncios reemplazaban los controles de video de inmediato. Esto no permitía que el usuario siguiera buscando. El reproductor también mantendría el contenido del video en lugar de reemplazarlo con el contenido del anuncio.
Ahora, los usuarios pueden buscar hacia adelante y hacia atrás sin que se reproduzcan los anuncios hasta que se reproduzca el video y el usuario haya cruzado un anuncio con la última búsqueda.
Caso de uso
Considere el siguiente caso de uso:
- El usuario carga un video con uno o más anuncios mid-roll en el reproductor e inicia la reproducción del video.
- Antes de un anuncio mid-roll, el usuario detiene la reproducción.
- Mientras el reproductor está en pausa, el usuario busca a través del marcador de anuncios mid-roll.
- Mientras el reproductor aún está en pausa, el usuario busca de nuevo a través del marcador de anuncios mid-roll, de vuelta al contenido que acaba de ver.
- Después de la búsqueda, los controles del reproductor están disponibles para el usuario. Cuando el usuario presiona Reproducir , el contenido se reproduce como se esperaba.
- Cuando la reproducción llegue al marcador de anuncio mid-roll, el anuncio se reproducirá y se mostrarán los controles del anuncio.
- Una vez que se completa el anuncio mid-roll, el reproductor completa la acción de búsqueda en el objetivo de búsqueda, donde el contenido reanuda la reproducción, con los controles del reproductor.
Requisitos
Los siguientes requisitos son necesarios para esta función:
- Brightcove Native SDK para Android 6.18.0 o posterior
Cambios de comportamiento del complemento
Las siguientes clases tienen un nuevo comportamiento:
SSAIComponent
clase
Esta clase ahora pasa el BaseVideoView
objetar a la TimelineManager
class cuando se crea una referencia a esta.
Eliminó pasar las referencias para el controlador de reproducción de video y el ticker al SeekManager
cuando esto se crea y, en su lugar, pasa el emisor de eventos. También establece el oyente de búsqueda del objeto del administrador de la línea de tiempo en este nuevo SeekManager
referencia.
También eliminó la SeekManager
objeto de ser pasado como un observador a la Ticker
clase.
LastAdSeekStrategy
clase
Esta clase ahora es pública.
NoAdSeekStrategy
clase
Esta clase ahora es pública.
SeekManager
clase
Esta clase ya no activa la reproducción de anuncios. Esa funcionalidad se movió a la TimelineManager
donde tiene más sentido.
Esta clase escuchó previamente SEEK_TO
eventos y notificó a todos los oyentes suscritos a esta clase. Con esa acción, pasó la nueva posición de tiempo absoluto y también emitió una nueva SEEK_TO
evento incluyendo la posición absoluta y la posición relativa. Ahora, SeekManager
ya no emite un nuevo evento de búsqueda, pero aún notifica a todos los oyentes sobre el primer evento de búsqueda.
Esta clase ya no implementa el TickerObserver
y SeekTask.Seekable
clases y no maneja los eventos que esas clases generan.
Esta clase ya no maneja Skip Ad
eventos.
La firma del constructor ha cambiado de
public SeekManager(VideoPlaybackController, Timeline, Ticker)
a
public SeekManager(EventEmitter, Timeline)
TimelineManager
clase
Esta clase ahora maneja la reproducción y la acción de omisión de los anuncios. esta suscrito al SeekManager
clase para escuchar los eventos de búsqueda. Una vez que se detecta un evento de búsqueda, esta clase verifica si se cruzó un anuncio. Si es así, reproduce el anuncio. De lo contrario, reposiciona el cursor de reproducción en el contenido del video y actualiza las posiciones absolutas y relativas.
Los anuncios se reproducen una vez que se reproduce el video. Si el video está en pausa, no reproducirá ningún anuncio cruzado por eventos de búsqueda. Esto proporciona la disponibilidad para admitir muchos eventos de búsqueda. Si el video se está reproduciendo y se cruza un anuncio, el anuncio se reproduce inmediatamente.
Cuando se cruza un anuncio mientras el video está en pausa, el TimelineManager
reanudará la posición del cursor de reproducción en la posición anterior a la reproducción del anuncio.
El TimelineManager
reanuda la reproducción en la posición anterior cuando se detecta un evento de salto de anuncio.
La clase TimelineManager ahora se extiende AbstractComponent
.
Para crear un TimelineManager
objeto, necesita pasar un BaseVideoView
instancia junto con un Timeline
instancia.
Cambios de API
Las siguientes clases tienen cambios de API:
SeekTask
clase
Esta clase se eliminó porque su funcionalidad principal se integró en el TimelineManager
clase donde tiene más sentido.
SeekManager
clase
el constructor SeekManager(VideoPlaybackController videoPlaybackController, Timeline timeline, Ticker ticker)
fue eliminado porque ya no necesita el VideoPlaybackController
y el Ticker
. En su lugar, ahora recibe la EventEmitter
y el Timeline
como sigue:
SeekManager(EventEmitter eventEmitter, Timeline timeline)
TimelineManager
clase
el constructor TimelineManager(@NonNull Timeline mTimeline)
fue cambiado a lo siguiente:
TimelineManager(@NonNull BaseVideoView mBaseVideoView, @NonNull Timeline mTimeline)