Introducción
Cuando recupera videos del catálogo de Brightcove, el SDK tiene que decidir qué fuente reproducir. Esto se implementa en el DefaultSourceSelectionController y ExoPlayerSourceSelectionController componentes.
Proceso de selección predeterminado
Brightcove Player SDK para Android utiliza un proceso de selección de fuente predeterminado. Para simplificar, nos centraremos en el soporte del SDK para Brightcove Playback API y ExoPlayer de Google.
El proceso de selección predeterminado se define de la siguiente manera:
-
Con Brightcove Native SDK para Android 6.4+, la entrega HTTPS para todos los tipos de fuentes se selecciona si está disponible.
Ambos DefaultSourceSelectionController y ExoPlayerSourceSelectionController intente seleccionar la versión HTTPS del
deliveryType
seleccionado. Si no existe ninguna fuente HTTPS, el controlador de selección seleccionará la primera disponible. - La BrightcoveExoPlayerVideoView busca la primera fuente que tenga un
deliveryType
de MPEG-DASH , y un perfil que no es ni urna: hbbtv ni urna: dvb. El SDK no admite la reproducción con ninguno de estos perfiles DASH, por lo que se eliminarán de las fuentes. - Si no se encuentra lo anterior, la selección de fuente vuelve a la primera fuente con un
deliveryType
de HLS. - Si no se encuentra tal fuente, vuelve a la fuente con un
deliveryType
de MP4 y una tasa de bits más cercana a 256 kBps.
Una vez que se encuentra una fuente, la implementación continúa de la siguiente manera:
- Si se encuentra, la fuente seleccionada se emitirá con una respuesta al SELECT_SOURCE evento.
- Por defecto, el VideoPlaybackController maneja el SELECT_SOURCE respuesta, emitiendo una SET_SOURCE evento.
- La VideoDisplayComponent o una subclase maneja el SET_SOURCE evento cargando la URL en el reproductor subyacente (ExoPlayer o MediaPlayer).
- Cuando comienza la reproducción, el reproductor subyacente es responsable de adaptar la tasa de bits con el contenido HLS y DASH. Con HLS, el reproductor subyacente comienza con la primera tasa de bits enumerada en el manifiesto maestro.
Cuando se utiliza la configuración de transcodificación predeterminada, la primera fuente de HLS debe ser la lista de reproducción maestra m3u8 que apunta a todas sus fuentes individuales (representaciones).
Configuración de fuentes HLS
Es posible personalizar la selección de fuente a nivel de la aplicación, para filtrar cualquier tipo de entrega no deseado antes de que se invoque la política de selección de fuente predeterminada del SDK. Para hacer esto, puede modificar las colecciones de origen que están configuradas en el objeto Video desde la respuesta JSON de la API de reproducción.
Este ejemplo utiliza VideoUtil.filterSourcesOnDeliveryType
para incluir solo fuentes HLS:
catalog.findVideoByReferenceID(videoReferenceId, new com.brightcove.player.edge.VideoListener() {
@Override
public void onVideo(Video video) {
VideoUtil.filterSourcesOnDeliveryType(video, DeliveryType.HLS);
brightcoveVideoView.add(video);
brightcoveVideoView.start();
}
});