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 Android pour demander et lire un diffusion en direct d'un événement enregistré auprès de l'outil d'assemblage vidéo Google Cloud de l'API Google et comment d'insérer une coupure publicitaire pendant la lecture.
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 en production a été créée :
LOCATION
- Numéro du projet
- Numéro de projet Google Cloud utilisant l'API Video Stitcher:
PROJECT_NUMBER
- Jeton OAuth
Le jeton OAuth de courte durée d'un compte de service avec le rôle utilisateur "Video Stitcher" :
OAUTH_TOKEN
En savoir plus sur de création d'identifiants éphémères comptes Google. 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 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 du processus de création d'une configuration pour un événement 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 de l'insertion dynamique d'annonces Android IMA. Cliquez sur le bouton Play du 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 la
ImaSdkFactory.createVideoStitcherLiveStreamRequest()
pour créer une session
publicitaire 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.
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 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;
}
...
Rechargez l'application pour demander et lire votre diffusion en direct personnalisée.
(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 Cloud Video Stitcher répondra par une erreur HTTP 400. Pour obtenir de l'aide, consultez le guide de dépannage.
Par exemple, vous pouvez ignorer options du fichier manifeste avec l'extrait de code suivant, qui demande deux fichiers manifestes de flux avec rendus 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();
// 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);
}
Insérer une coupure publicitaire
L'API Google Cloud Video Stitcher insère les annonces extraites du tag d'annonce pour chaque coupure publicitaire. Les coupures publicitaires sont indiquées dans le fichier manifeste à l'aide de repères d'annonce. Les marqueurs d'annonces sont insérés par l'encodeur de diffusion en direct.
Si vous utilisez votre propre diffusion en direct, vous devez insérer le repère d'annonce. Pour plus d'informations sur les marqueurs d'annonces HLS et DASH compatibles, consultez la documentation sur les repères d'annonce.
Si vous avez créé une diffusion en direct à l'aide de l'API Google Cloud Livestream, insérez un événement de canal de coupure publicitaire.
L'annonce est diffusée immédiatement après l'insertion de la coupure publicitaire.
Effectuer un nettoyage
Maintenant que vous avez hébergé un flux en direct à 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 nettoyage de la diffusion en direct pour supprimer les ressources et les éléments inutiles.