Androide: Selección de fuente

En este tema, aprenderá cómo Brightcove Native Player SDK para Android utiliza un proceso de selección de fuente predeterminado al reproducir un video.

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:

  1. 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.

  2. 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.
  3. Si no se encuentra lo anterior, la selección de fuente vuelve a la primera fuente con un deliveryType de HLS.
  4. 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:

  1. Si se encuentra, la fuente seleccionada se emitirá con una respuesta al SELECT_SOURCE evento.
  2. Por defecto, el VideoPlaybackController maneja el SELECT_SOURCE respuesta, emitiendo una SET_SOURCE evento.
  3. La VideoDisplayComponent o una subclase maneja el SET_SOURCE evento cargando la URL en el reproductor subyacente (ExoPlayer o MediaPlayer).
  4. 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();
	}
});