Utiliser le SDK IMA DAI sur Android

Lire des flux VOD enregistrés avec l'API Google Cloud Video Stitcher

Ce guide explique comment utiliser le SDK IMA DAI Android pour demander et lire un Flux de vidéo à la demande Google Cloud session.

Ce guide développe l'exemple de base du guide de démarrage pour la DAI IMA.

Pour en savoir plus sur l'intégration à d'autres plates-formes ou sur l'utilisation des SDK côté client IMA, 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 VOD 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 l'utilisateur Video Stitcher rôle:

OAUTH_TOKEN

En savoir plus sur de création d'authentifications OAuth de courte durée les jetons. Le jeton OAuth peut être réutilisé pour plusieurs requêtes tant qu'il n'a pas est arrivé à expiration.

Code de réseau

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

ID de configuration de la vidéo à la demande

ID de configuration VOD du flux VOD : VOD_CONFIG_ID

Pour en savoir plus sur la création de l'ID de configuration VOD, consultez le guide de création d'un ID de configuration VOD pour le collage dans le cloud.

Configurer l'exemple de base

Accédez à la version GitHub d'IMA pour l'insertion dynamique d'annonces pour Android. et téléchargez l'exemple de base. Cet exemple présente une application Android que vous pouvez ouvrir dans Android. Studio à des fins de test.

Pour effectuer un test avec un flux de VOD d'assemblage vidéo autre que Cloud, définissez le paramètre CONTENT_TYPE dans SampleAdsWrapper.java vers ContentType.VOD_HLS, ou ContentType.VOD_DASH, pour charger l'ID du CMS et l'ID vidéo appropriés pour la variable flux. Ensuite, dans SampleVideoPlayer.java, définissez currentlyPlayingStreamType sur CONTENT_TYPE_HLS ou CONTENT_TYPE_DASH, pour gérer correctement les métadonnées du type de flux choisi.

Si tout fonctionne correctement, le court-métrage "Tears of Steel" commence à être diffusé en cliquant sur le bouton de lecture du lecteur vidéo, avec une coupure publicitaire pré-roll.

Demander un flux de vidéo à la demande

Pour remplacer le flux d'échantillon par votre flux VOD assemblé avec des annonces, utilisez sdkFactory.createVideoStitcherVodStreamRequest() pour créer une session d'annonces avec Google Ad Manager. Vous pouvez utiliser l'interface utilisateur de Google Ad Manager pour localiser les sessions DAI générées à des fins de surveillance et de débogage.

sdkFactory.createVideoStitcherVodStreamRequest() est disponible dans le SDK IMA DAI 3.30.0 ou version ultérieure.

Pour utiliser sdkFactory.createVideoStitcherVodStreamRequest() avec le paramètre vodConfigId, le SDK IMA DAI 3.33.0 ou version ultérieure est requis.

Dans l'exemple existant, des instructions conditionnelles sont utilisées pour demander un flux VOD ou une diffusion en direct. Pour qu'il 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 sdkFactory.createVideoStitcherVodStreamRequest().

Exemple :

videoplayerapp/SampleAdsWrapper.java

...
private enum ContentType {
  LIVE_HLS,
  LIVE_DASH,
// Add a VOD HLS Google Cloud type. DASH streams are also supported.
  VOD_HLS_GOOGLE_CLOUD,
  VOD_DASH_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.VOD_HLS_GOOGLE_CLOUD;
...

@Nullable
  private StreamRequest buildStreamRequest() {
    StreamRequest request;
    switch (CONTENT_TYPE) {
      ...
      case VOD_HLS_GOOGLE_CLOUD:
      case VOD_DASH_GOOGLE_CLOUD:
        // VOD HLS or DASH stream generated by the
        // Google Cloud Video Stitcher API.
        request = sdkFactory.createVideoStitcherVodStreamRequest(
          "NETWORK_CODE",
          "LOCATION",
          "PROJECT_NUMBER",
          "OAUTH_TOKEN",
          "VOD_CONFIG_ID"
        );
        if (CONTENT_TYPE == ContentType.VOD_HLS_GOOGLE_CLOUD) {
          request.setFormat(StreamFormat.HLS);
        } else {
          request.setFormat(StreamFormat.DASH);
        }
        return request;
    }
    // Content type not selected.
    return null;
  }
  ...

Rechargez l'application pour demander et lire votre flux VOD personnalisé.

(Facultatif) Ajouter des options de session de streaming

Personnalisez votre demande de diffusion en ajoutant des options de session pour remplacer celles par défaut la configuration de l'API Cloud Video Stitcher à l'aide de StreamRequest.setVideoStitcherSessionOptions() Si vous fournissez une option non reconnue, L'API 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 de fichier manifeste avec l'extrait de code suivant, qui demande deux fichiers manifestes de flux avec des rendus triés du débit le plus bas au plus élevé.

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

  // The following session options are examples. Use session options
  // that are compatible with your video stream.
  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);
}

Effectuer un nettoyage

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

Suivez le guide de nettoyage des contenus VOD pour supprimer toutes les ressources et composants inutiles.