Utiliser le SDK IMA DAI sur Android

Regarder des diffusions en direct enregistrées auprès de l'API Google Cloud Video Stitcher

Ce guide explique comment utiliser le SDK IMA DAI pour Android afin de demander et de lire la diffusion en direct d'un événement enregistré avec l'API Google Cloud Video Stitcher. Il explique également comment insérer une coupure publicitaire pendant la lecture.

Ce guide développe l'exemple de base du guide de démarrage pour l'insertion dynamique d'annonces IMA.

Pour en savoir plus sur l'intégration à d'autres plates-formes ou sur l'utilisation des SDK IMA côté client, consultez la page SDK Interactive Media Ads.

Configurer un projet Google Cloud

Saisissez les variables suivantes à utiliser dans le SDK IMA:

Emplacement
Région Google Cloud dans laquelle votre configuration active a été créée : LOCATION
Numéro du projet
Numéro de projet Google Cloud utilisant l'API Video Stitcher :PROJECT_NUMBER
Jeton OAuth

Jeton OAuth de courte durée d'un compte de service avec le rôle utilisateur d'assembleur vidéo :

OAUTH_TOKEN

Découvrez comment créer des identifiants éphémères pour les comptes de service. Le jeton OAuth peut être réutilisé pour plusieurs requêtes tant qu'il n'a pas expiré.

Code de réseau

Code de réseau Ad Manager pour les demandes d'annonces : NETWORK_CODE

ID de la configuration en ligne
ID de configuration du direct que vous avez spécifié lors de la création de votre événement en direct : LIVE_CONFIG_ID
Clé d'élément personnalisé
Clé d'élément personnalisé Ad Manager générée lors de la création d'une configuration pour un événement de diffusion en direct avec l'API Video Stitcher : CUSTOM_ASSET_KEY

Télécharger l'exemple de base

Téléchargez et exécutez l'exemple de base pour l'insertion dynamique d'annonces IMA pour Android. Cliquez sur le bouton de lecture dans le lecteur vidéo pour lancer le court-métrage "Tears of Steel", qui contient des coupures publicitaires toutes les 30 secondes.

Demander une diffusion en direct

Pour remplacer l'exemple de flux par votre diffusion en direct, vous devez utiliser ImaSdkFactory.createVideoStitcherLiveStreamRequest() afin de créer une session publicitaire avec Google Ad Manager. Vous pouvez utiliser l'interface utilisateur de Google Ad Manager pour localiser les sessions d'insertion dynamique d'annonce générées à des fins de surveillance et de débogage.

L'exemple existant contient des instructions conditionnelles pour demander une diffusion en VOD ou en direct. Pour qu'elle fonctionne avec l'API Google Cloud Video Stitcher, vous devez ajouter un nouveau chemin d'accès pour renvoyer un StreamRequest créé à l'aide de ImaSdkFactory.createVideoStitcherLiveStreamRequest().

Exemple :

videoplayerapp/SampleAdsWrapper.java

private sdkFactory ImaSdkFactory;
...
private enum ContentType {
  LIVE_HLS,
  LIVE_DASH,
// Add a Live HLS Google Cloud type.
  LIVE_HLS_GOOGLE_CLOUD,
  VOD_HLS,
  VOD_DASH,
}

// Set CONTENT_TYPE to the associated enum for the
// stream type you would like to test.
private static final ContentType CONTENT_TYPE =
    ContentType.LIVE_HLS_GOOGLE_CLOUD;
...

@Nullable
  private StreamRequest buildStreamRequest() {
    StreamRequest request;
    switch (CONTENT_TYPE) {
      ...
      case LIVE_HLS_GOOGLE_CLOUD:
        // Live HLS stream generated by the Google Cloud Video Stitcher API.
        request = sdkFactory.createVideoStitcherLiveStreamRequest(
          "NETWORK_CODE",
          "CUSTOM_ASSET_KEY",
          "LIVE_CONFIG_ID",
          "LOCATION",
          "PROJECT_NUMBER",
          "OAUTH_TOKEN"
        );
        request.setFormat(StreamFormat.HLS);
        return request;
    }
    // Content type not selected.
    return null;
  }
...

Actualisez l'application pour demander et regarder votre diffusion en direct personnalisée.

(Facultatif) Ajouter des options de session de streaming

Personnalisez votre demande de flux en ajoutant des options de session pour remplacer la configuration par défaut de l'API Cloud Video Stitcher à l'aide de StreamRequest.setVideoStitcherSessionOptions(). Si vous fournissez une option non reconnue, l'API Cloud Video Stitcher renvoie une erreur HTTP 400. Pour obtenir de l'aide, consultez le guide de dépannage.

Par exemple, vous pouvez remplacer les options du fichier manifeste par l'extrait de code suivant, qui demande deux fichiers manifestes de flux avec les renvois classés du débit le plus faible au débit le plus élevé.

public void requestAndPlayAds() {
  adsLoader.addAdErrorListener(this);
  adsLoader.addAdsLoadedListener(this);
  StreamRequest streamRequest = buildStreamRequest();

  Map<String, Object> sessionOptions = Map.of(
    "manifestOptions", Map.of(
      "includeRenditions", List.of(
        Map.of(
          "bitrateBps", 3000, "codecs",
          "hvc1.1.4.L126.B0, mp4a.40.2"),
        Map.of(
          "bitrateBps", 2000,
          "codecs", "avc1.64001f, mp4a.40.2")
      ),
      "bitrateOrder", "ascending"
    )
  );

  /* sessionOptions JSON structure.
   * {
   *  "manifestOptions": {
   *    "includeRenditions": [
   *      {"bitrateBps": 3000, "codecs": "hvc1.1.4.L126.B0, mp4a.40.2"},
   *      {"bitrateBps": 2000, "codecs": "avc1.64001f, mp4a.40.2"},
   *    ],
   *    "bitrateOrder": "ascending"
   *  }
   * };
   */

  streamRequest.setVideoStitcherSessionOptions(sessionOptions);
  adsLoader.requestStream(streamRequest);
}

Insérer une coupure publicitaire

L'API Google Cloud Video Stitcher insère les annonces extraites du tag d'emplacement publicitaire pour chaque coupure publicitaire. Les coupures publicitaires sont indiquées dans le fichier manifeste à l'aide de repères d'annonces. Les repères d'annonce sont insérés par l'encodeur de diffusion en direct.

L'annonce est diffusée immédiatement après l'insertion de la coupure publicitaire.

Effectuer un nettoyage

Maintenant que vous avez hébergé une diffusion en direct à l'aide de l'API Google Cloud Video Stitcher et que vous l'avez demandée à l'aide du SDK IMA DAI pour Android, il est important de nettoyer toutes les ressources de diffusion.

Suivez le guide de nettoyage de la diffusion en direct pour supprimer les ressources et les éléments inutiles.