Android: Sélection de la source

Dans cette rubrique, vous apprendrez comment le SDK Brightcove Native Player pour Android utilise un processus de sélection de source par défaut lors de la lecture d'une vidéo.

Introduction

Lorsque vous récupérez des vidéos du catalogue Brightcove, le SDK doit décider quelle source lire. Ceci est mis en œuvre dans le DefaultSourceSelectionController et ExoPlayerSourceSelectionController Composants.

Processus de sélection par défaut

Le Brightcove Player SDK pour Android utilise un processus de sélection de source par défaut. Pour simplifier, nous allons nous concentrer sur la prise en charge par le SDK de l'API Brightcove Playback et de l'ExoPlayer de Google.

Le processus de sélection par défaut est défini comme suit :

  1. Avec le Brightcove Native SDK pour Android 6.4+, la livraison HTTPS pour tous les types de sources est sélectionnée si disponible.

    Les deux DefaultSourceSelectionController et ExoPlayerSourceSelectionController essayez de sélectionner la version HTTPS du deliveryType choisi. Si aucune source HTTPS n'existe, le contrôleur de sélection sélectionnera la première disponible.

  2. Les BrightcoveExoPlayerVidéoVoir recherche la première source qui a un deliveryType de MPEG-DASH , et un profil qui n'est ni urne : hbbtv ni urne:dvb. Le SDK ne prend en charge la lecture avec aucun de ces profils DASH, et ils seront donc filtrés des sources.
  3. Si ce qui précède n'est pas trouvé, la sélection de la source revient à la première source avec un deliveryType de HLS.
  4. Si aucune source de ce type n'est trouvée, il revient à la source avec un deliveryType de MP4 et un débit le plus proche de 256 kBps.

Une fois la source trouvée, l'implémentation se poursuit comme suit :

  1. Si elle est trouvée, la source sélectionnée sera émise avec une réponse à la SÉLECTIONNER LA SOURCE un événement.
  2. Par défaut, le Contrôleur de lecture vidéo gère le SÉLECTIONNER LA SOURCE réponse, en émettant un SET_SOURCE un événement.
  3. Les Composant d'affichage vidéo ou une sous-classe gère le SET_SOURCE événement en chargeant l'URL dans le lecteur sous-jacent (ExoPlayer ou MediaPlayer).
  4. Lorsque la lecture commence, le lecteur sous-jacent est responsable de l'adaptation du débit avec le contenu HLS et DASH. Avec HLS, le lecteur sous-jacent démarre avec le premier débit indiqué dans le manifeste principal.

Lorsque vous utilisez les paramètres de transcodage par défaut, la première source HLS doit être la liste de lecture principale m3u8 qui pointe vers toutes vos sources individuelles (rendus).

Réglage des sources HLS

Il est possible de personnaliser la sélection de source au niveau de l'application, pour filtrer tous les types de diffusion indésirables avant que la politique de sélection de source par défaut du SDK ne soit invoquée. Pour ce faire, vous pouvez modifier les collections de sources qui sont définies dans l'objet Video à partir de la réponse JSON de l'API de lecture.

Cet exemple utilise VideoUtil.filterSourcesOnDeliveryType pour inclure uniquement les sources 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();
	}
});