Configurer le SDK IMA pour l'insertion dynamique d'annonces

Les SDK IMA permettent d'intégrer facilement des annonces multimédias à vos sites Web et applications. Les SDK IMA peuvent demander des annonces à n'importe quel ad server conforme à la norme VAST et gérer la lecture des annonces dans vos applications. Avec les SDK IMA DAI, les applications envoient une demande de flux pour les annonces et le contenu vidéo (VOD ou contenu en direct). Le SDK renvoie ensuite un flux vidéo combiné, ce qui vous évite d'avoir à gérer le basculement entre les vidéos d'annonces et de contenu dans votre application.

Sélectionnez la solution DAI qui vous intéresse.

Insertion dynamique de séries d'annonces

Les SDK IMA permettent d'intégrer facilement des annonces multimédias à vos sites Web et applications. Les SDK IMA peuvent demander des annonces à n'importe quel ad server conforme à la norme VAST et gérer la lecture des annonces dans vos applications. Avec les SDK IMA DAI, les applications envoient une demande de flux pour les annonces et le contenu vidéo (VOD ou contenu en direct). Le SDK renvoie ensuite un flux vidéo combiné, ce qui vous évite d'avoir à gérer le basculement entre les vidéos d'annonces et de contenu dans votre application.

Ce guide explique comment lire un flux de diffusion de séries d'annonces avec insertion dynamique d'annonces à l'aide du SDK IMA DAI avec un lecteur vidéo pour la lecture de flux en direct et VOD. Pour afficher ou suivre un exemple d'intégration terminé, téléchargez l'exemple de diffusion de pods.

Présentation de l'insertion dynamique de séries d'annonces IMA DAI

  • StreamRequest : objet qui définit une demande de flux aux serveurs publicitaires de Google. Doit être créé à l'aide de ImaSdkFactory.createPodStreamRequest() ou ImaSdkFactory.createPodVodStreamRequest() pour activer le service de pods. Ces méthodes nécessitent un code réseau, et createPodStreamRequest nécessite également une clé d'élément personnalisé et une clé API facultative. Les deux incluent d'autres paramètres facultatifs.

  • StreamManager : objet qui gère la communication entre le flux vidéo et le SDK IMA DAI, par exemple en déclenchant des pings de suivi et en transmettant les événements de flux à l'éditeur.

Prérequis

Configurer vos variables d'insertion de séries d'annonces

Toutes les modifications nécessaires à la diffusion de séries d'annonces sont effectuées dans SampleAdsWrapper.java. La première étape consiste à mettre à jour les variables constantes.

Voici les constantes de demande de flux de bloc d'annonces à ajouter :

  • STREAM_URL : uniquement utilisé pour les diffusions en direct. URL du flux vidéo fournie par votre outil de manipulation de fichier manifeste ou votre partenaire tiers utilisant la diffusion de séries d'annonces. Il devrait vous demander d'insérer l'ID de flux fourni par le SDK IMA DAI avant d'envoyer une demande. Dans ce cas, l'URL du flux inclut un espace réservé, "[[STREAMID]]", qui est remplacé par l'ID du flux avant d'envoyer une requête.

  • NETWORK_CODE : code de réseau de votre compte Ad Manager 360.

  • CUSTOM_ASSET_KEY : utilisé uniquement pour les diffusions en direct. Clé de composant personnalisée qui identifie votre événement de diffusion de pods dans Ad Manager 360. Il peut être créé par votre outil de manipulation du fichier manifeste ou par un partenaire tiers d'insertion de séries d'annonces.

  • API_KEY : utilisé uniquement pour les diffusions en direct : clé API facultative qui peut être requise pour récupérer un ID de flux à partir du SDK IMA DAI.

L'exemple Android DAI BasicExample est conçu pour lire différents types de flux, mais pour la diffusion de séries d'annonces, il est configuré pour ne lire qu'un seul flux. Modifiez la section des variables de l'exemple pour qu'elle corresponde à ce qui suit :

/** This class implements IMA to add pod ad-serving support to SampleVideoPlayer */
@SuppressLint("UnsafeOptInUsageError")
/* @SuppressLint is needed for new media3 APIs. */
public class SampleAdsWrapper
    implements AdEvent.AdEventListener, AdErrorEvent.AdErrorListener, AdsLoader.AdsLoadedListener {

  // Set up the pod serving variables.
  private static final String NETWORK_CODE = "";
  private static final String CUSTOM_ASSET_KEY = "";
  private static final String API_KEY = "";
  private static final String STREAM_URL = "";
  private static final StreamFormat STREAM_FORMAT = StreamFormat.HLS;

Créez une demande de flux de série en direct ou VOD pour activer la diffusion de séries.

Diffusion de pods de flux en direct

Supprimez la méthode buildStreamRequest() qui avait été utilisée pour passer d'un type de flux à un autre. Modifiez ensuite requestAndPlayAds() pour appeler ImaSdkFactory.createPodStreamRequest() afin de créer une demande d'annonce Live Pod Serving.

// Live pod stream request.
request = sdkFactory.createPodStreamRequest(NETWORK_CODE, CUSTOM_ASSET_KEY, API_KEY);

Diffusion de séries d'annonces dans un flux VOD

Supprimez la méthode buildStreamRequest() qui avait été utilisée pour passer d'un type de flux à un autre. Modifiez ensuite requestAndPlayAds() pour appeler ImaSdkFactory.createPodVodStreamRequest() afin de créer une demande d'annonce VOD Pod Serving.

// VOD pod stream request.
request = sdkFactory.createPodVodStreamRequest(NETWORK_CODE);

Après avoir créé l'instance de requête de flux, demandez le flux à l'aide de AdsLoader.requestStream() :

request.setFormat(STREAM_FORMAT);
adsLoader.requestStream(request);

Modifier et définir l'URL du flux

Diffusion de pods de flux en direct

Appelez la méthode StreamManager.getStreamId() pour obtenir l'ID du flux. Cette valeur doit être insérée dans STEAM_URL en remplacement de "[[STREAMID]]". Une fois cette modification effectuée, définissez la nouvelle URL du flux à l'aide de la méthode videoPlayer.setStreamUrl() et appelez la méthode videoPlayer.play() pour démarrer la lecture du flux.

// Play the live pod stream.
streamID = streamManager.getStreamId();
String liveStreamUrl = STREAM_URL.replace("[[STREAMID]]", streamID);
// Call videoPlayer.play() here, because IMA doesn't call the VideoStreamPlayer.loadUrl()
// function for livestreams.
videoPlayer.setStreamUrl(liveStreamUrl);
videoPlayer.play();

Diffusion de séries d'annonces dans un flux VOD

  1. Appelez la méthode StreamManager.getStreamId() pour obtenir l'ID du flux.
  2. Demandez une URL de flux à votre partenaire technologique vidéo (PTV).
  3. Une fois que vous avez reçu l'URL de votre fournisseur de validation tiers, appelez la méthode StreamManager.loadThirdPartyStream() avec l'URL pour charger le flux, ainsi que les éventuels sous-titres renvoyés par votre fournisseur de validation tiers.
// Play the VOD pod stream.
streamID = streamManager.getStreamId();
String vodStreamUrl = "";
// Refer to your Video Tech Partner (VTP) or video stitching guide to fetch the stream URL
// and the subtitles for a the ad stitched VOD stream.

// In the following commented out code, 'vtpInterface' is a place holder
// for your own video technology partner (VTP) API calls.
// vodStreamUrl = vtpInterface.requestStreamURL(streamID);
List<Map<String, String>> subtitles = new ArrayList<>();
streamManager.loadThirdPartyStream(vodStreamUrl, subtitles);

Pour les demandes de diffusion de séries de pods VOD, IMA appelle le rappel VideoStreamPlayer.loadUrl() lorsque le flux est chargé. Pour démarrer la lecture du flux, ajoutez les appels videoPlayer.setStreamUrl() et videoPlayer.play() au rappel VideoStreamPlayer.loadUrl() :

private VideoStreamPlayer createVideoStreamPlayer() {
  return new VideoStreamPlayer() {
    @Override
    public void loadUrl(String url, List<HashMap<String, String>> subtitles) {
      // IMA doesn't make calls to VideoStreamPlayer.loadUrl() for pod serving live streams.
      // The following code is for VOD streams.
      videoPlayer.setStreamUrl(url);
      videoPlayer.play();
    }

Nettoyer les composants IMA DAI

Lorsque vous avez terminé de demander et d'afficher des annonces dans un flux Pod Serving avec le SDK IMA DAI, nous vous suggérons de nettoyer toutes les ressources une fois la session Pod Serving terminée. Appelez StreamManager.destroy() pour arrêter la lecture du flux, arrêter tout suivi des annonces et libérer tous les éléments de flux chargés.

Pour voir d'autres exemples d'utilisation du SDK Android, consultez les exemples sur GitHub.