Introduction
Les améliorations du lecteur Brightcove pour Live SSAI vous permettent d'améliorer les coupures publicitaires dans les diffusions en direct avec le nombre de publicités, les comptes à rebours des publicités, les publicités cliquables et les publicités associées.
Les informations de votre annonce sont spécifiées à l'aide d'une configuration d'annonce qui récupère les réponses VAST afin d'identifier les annonces à afficher. Le fichier VAST contient également des informations sur les annonces compagnons et les URL de balise.
Flux de travail
Pour créer un flux en direct avec SSAI et améliorations du lecteur, procédez comme suit :
- Demandez à votre gestionnaire de compte d'activer votre compte pour les flux en direct, l'insertion d'annonces côté serveur (SSAI) et les Améliorations du lecteur pour Live SSAI.
- Créer une configuration d'annonce
- Optionnel: Créer des actifs d'ardoise pour remplir le temps publicitaire inutilisé
- Créer un travail en direct
- Créer le jeton de lecture
- Configurer le lecteur
- Commencer le streaming
- Déclencher des annonces en utilisant des points de repère (cela peut être fait avant ou pendant l'événement en direct)
- Nettoyage
Créer une configuration d'annonce
Une configuration d'annonce définit les informations nécessaires pour inclure des annonces côté serveur dans un flux en direct. Cela inclut l'URL du fournisseur d'annonces, le type de réponse attendue et l'envoi de balises.
Pour créer une nouvelle configuration d'annonce, envoyez un POST
demande comme suit :
Méthode | POST |
---|---|
URL | https://api.bcovlive.io/v1/ssai/applications |
Entête | X-API-KEY: your API KEY |
Type de contenu : application/json |
Toutes les demandes sont authentifiées à l'aide d'une clé API qui vous est fournie lors de la configuration de votre compte. La clé est passée dans l' X-API-KEY
en-tête.
Corps de la demande
Pour plus de détails sur les champs du corps de la requête, consultez le Référence de l'API en direct document.
Avec Player Améliorations for Live SSAI, les champs mis en surbrillance peuvent être définis à l'intérieur de l' application_ad_configuration
objet.
Exemple de corps de requête :
{
"application_ad_configuration": {
"ad_configuration_description": "your ad config description",
"ad_configuration_expected_response_type": "Vast",
"ad_configuration_headers_for_impressions": false,
"ad_configuration_strategy": "SingleAdResponse",
"ad_configuration_transforms": [],
"ad_configuration_url_format": "your ad server",
"ad_configuration_client_sdk_enabled": true,
"client_options": {
"show_ad_break_remaining_time": true / false,
"show_ad_remaining_time": true / false,
"show_number_of_remaining_ads": true / false,
"client_only_tracking": true / false
}
},
"application_description": "your application description"
}
Voici les champs de configuration des annonces associés aux améliorations du lecteur avec Live SSAI :
Champ | Type | Obligatoire | Description |
---|---|---|---|
ad_configuration_expected_response_type |
Chaîne | Oui | Pour cette fonctionnalité, les configurations d'annonces DOIVENT avoir une valeur de Vast |
ad_configuration_client_sdk_enabled |
Booléen | Oui | Pour activer cette fonctionnalité, ce champ doit avoir la valeur true |
client_options |
Objet | Un objet de champs liés aux améliorations du lecteur | |
client_options. |
Booléen | Afficher le temps restant pour une coupure publicitaire Valeurs: true /false
|
|
client_options. |
Booléen | Afficher le temps restant pour une annonce Valeurs: true /false
|
|
client_options. |
Booléen | Afficher le nombre d'annonces restant dans la coupure publicitaire Valeurs: true /false
|
|
client_options. |
Booléen | Désactiver les événements de suivi côté serveur (impressions / quartiles) Valeurs: true false Défaut: false |
Réponse
Réponse de l'échantillon :
{
"application": {
"application_description": "Test ad configuration",
"application_ad_configuration": {
"ad_configuration_description": "Ad config description",
"ad_configuration_expected_response_type": "Vast",
"ad_configuration_strategy": "SingleAdResponse",
"ad_configuration_transforms": [],
"ad_configuration_url_format": "https://solutions.brightcove.com/bcls/ads/simple-vast.xml",
"ad_configuration_headers_for_impressions": false,
"ad_configuration_client_sdk_enabled": true,
"client_options": {
"show_ad_break_remaining_time": true,
"show_ad_remaining_time": true,
"show_number_of_remaining_ads": true,
"client_only_tracking": true
}
},
"application_id": "1234567890abcdefghijkl",
"application_type": "ads",
"account_id": "001122334455aabbccddee"
},
"action": "inserted"
}
Après avoir créé une configuration d'annonce, copiez l' application_id
(ID de configuration de l'annonce) qui a été généré. Vous en aurez besoin plus tard pour trouver l'URL de lecture SSAI.
Pour répertorier, mettre à jour et supprimer des configurations d'annonces, consultez le Gérer les configurations d'annonces document
Créer un emploi en direct
Pour créer une tâche dynamique, envoyez une POST
demande comme suit :
Méthode | POST |
---|---|
URL | https://api.bcovlive.io/v1/jobs |
Headers | X-API-KEY: your API KEY |
Type de contenu : application/json |
Corps de la demande
Pour plus de détails sur les champs du corps de la requête, consultez le Référence de l'API en direct document.
Pour un travail en direct avec SSAI activé, définissez ad_insertion: true
dans le corps de votre requête HTTP.
Exemple de demande (vidéo Video Cloud)
Pour créer une vidéo Video Cloud à utiliser pour votre diffusion en direct et pour créer des clips VOD à partir du flux en direct, incluez le videocloud
objet dans le corps de la requête. Pour plus de détails, consultez le API en direct : Création d'un document VOD Clips.
Le champ en surbrillance ci-dessous est nécessaire pour l'insertion d'annonces côté serveur (SSAI).
{
"live_stream": true,
"ad_insertion": true,
"region": "us-west-2",
"reconnect_time": 1800,
"outputs": [{
"label": "hls720p",
"live_stream": true,
"width": 1280,
"height": 720,
"video_codec": "h264",
"h264_profile": "high",
"video_bitrate": 2100,
"segment_seconds": 4,
"keyframe_interval": 60
},
{
"label": "hls540p",
"live_stream": true,
"width": 960,
"height": 540,
"video_codec": "h264",
"h264_profile": "main",
"video_bitrate": 1500,
"segment_seconds": 4,
"keyframe_interval": 60
},
{
"label": "hls360p",
"live_stream": true,
"width": 640,
"height": 360,
"video_codec": "h264",
"h264_profile": "main",
"video_bitrate": 800,
"segment_seconds": 4,
"keyframe_interval": 60
}
],
"videocloud": {
"video": {
"name": "Live SSAI VideoCloud Asset",
"description": "",
"long_description": "",
"tags": [],
"reference_id": "live_ssai_vc_asset",
"link": {
"url": "",
"text": ""
},
"schedule": {
"starts_at": null,
"ends_at": null
},
"custom_fields": {}
}
}
}
Demande d'échantillon (vidéo à distance)
Pour utiliser une vidéo distante pour votre diffusion en direct, le corps de votre requête doit ressembler à ceci.
Le champ en surbrillance ci-dessous est nécessaire pour l'insertion d'annonces côté serveur (SSAI).
{
"live_stream":true,
"ad_insertion":true,
"region":"us-west-2",
"reconnect_time":1800,
"outputs":[
{
"label": "hls720p",
"live_stream": true,
"width": 1280,
"height": 720,
"video_codec": "h264",
"h264_profile": "high",
"video_bitrate": 2100,
"segment_seconds": 4,
"keyframe_interval": 60
},
{
"label": "hls540p",
"live_stream": true,
"width": 960,
"height": 540,
"video_codec": "h264",
"h264_profile": "main",
"video_bitrate": 1500,
"segment_seconds": 4,
"keyframe_interval": 60
},
{
"label": "hls360p",
"live_stream": true,
"width": 640,
"height": 360,
"video_codec": "h264",
"h264_profile": "main",
"video_bitrate": 800,
"segment_seconds": 4,
"keyframe_interval": 60
}
]
}
Autres ressources utiles :
- Aperçu: API Live Brightcove
- Démarrage rapide: Création d'une diffusion en direct à l'aide de l'API Live de Brightcove
Réponse
Exemple de réponse (vidéo Video Cloud)
{
"id": "227356abcdefghijklmno12345",
"outputs": [
{
"id": "0-2273561a201ec18",
"playback_url": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/profile_0/chunklist.m3u8",
"playback_url_dvr": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/profile_0/chunklist_dvr.m3u8",
"playback_url_vod": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/profile_0/chunklist_vod.m3u8",
"playback_added_cdns": [],
"label": "hls720p"
},
{
"id": "1-2273561a201e8c18",
"playback_url": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/profile_1/chunklist.m3u8",
"playback_url_dvr": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/profile_1/chunklist_dvr.m3u8",
"playback_url_vod": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/profile_1/chunklist_vod.m3u8",
"playback_added_cdns": [],
"label": "hls540p"
},
{
"id": "2-2273561a201ec18",
"playback_url": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/profile_2/chunklist.m3u8",
"playback_url_dvr": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/profile_2/chunklist_dvr.m3u8",
"playback_url_vod": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/profile_2/chunklist_vod.m3u8",
"playback_added_cdns": [],
"label": "hls360p"
},
{
"id": "3-2273561a201ec18",
"playlist_type": "defaultS3",
"type": "playlist",
"filename": "playlist.m3u8",
"dvr_filename": "playlist_dvr.m3u8",
"playback_url": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/playlist.m3u8",
"playback_url_dvr": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/playlist_dvr.m3u8",
"ssai_playback_urls": {
"b907ac7935e2": {
"playback_url": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/b907ac7935e2/playlist_ssaiM.m3u8",
"playback_url_dvr": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/b907ac7935e2/playlist_dvr_ssaiM.m3u8",
"playback_added_cdns": [],
"description": "Test ad configuration for SLS",
"type": "ads"
},
"dc9aa8ee3520f2": {
"playback_url": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/dc9aa8ee3520f2/playlist_ssaiM.m3u8",
"playback_url_dvr": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/dc9aa8ee3520f2/playlist_dvr_ssaiM.m3u8",
"playback_added_cdns": [],
"description": "Test live ad config for SLS",
"type": "ads"
}
},
"playback_added_cdns": []
}
],
"stream_url": "rtmp://ec2-54-184-149-60.us-west-2.compute.amazonaws.com:1935/2273561a201ec18",
"stream_name": "alive",
"static": false,
"job_videocloud_asset_id": "6227380655001",
"encryption": {},
"playback_url": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/playlist.m3u8",
"playback_url_dvr": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/playlist_dvr.m3u8",
"ssai_playback_urls": {
"b907ac7935e2": {
"playback_url": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/b907ac7935e2/playlist_ssaiM.m3u8",
"playback_url_dvr": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/b907ac7935e2/playlist_dvr_ssaiM.m3u8",
"playback_added_cdns": [],
"description": "Test ad configuration for SLS",
"type": "ads"
},
"dc9aa8ee3520f2": {
"playback_url": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/dc9aa8ee3520f2/playlist_ssaiM.m3u8",
"playback_url_dvr": "https://bcovlive-a.akamaihd.net/2273561a201ec18/us-west-2/NA/dc9aa8ee3520f2/playlist_dvr_ssaiM.m3u8",
"playback_added_cdns": [],
"description": "Test live ad config for SLS",
"type": "ads"
}
},
"playback_added_cdns": []
}
Exemple de réponse (vidéo à distance)
{
"id": "bbccddeeffgghhiijjkk0011223344",
"outputs": [
{
"id": "0-bbccddeeffgghhiijjkk0011223344",
"playback_url": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/profile_0/chunklist.m3u8",
"playback_url_dvr": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/profile_0/chunklist_dvr.m3u8",
"playback_url_vod": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/profile_0/chunklist_vod.m3u8",
"playback_added_cdns": [],
"label": "hls720p"
},
{
"id": "1-bbccddeeffgghhiijjkk0011223344",
"playback_url": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/profile_1/chunklist.m3u8",
"playback_url_dvr": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/profile_1/chunklist_dvr.m3u8",
"playback_url_vod": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/profile_1/chunklist_vod.m3u8",
"playback_added_cdns": [],
"label": "hls540p"
},
{
"id": "2-bbccddeeffgghhiijjkk0011223344",
"playback_url": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/profile_2/chunklist.m3u8",
"playback_url_dvr": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/profile_2/chunklist_dvr.m3u8",
"playback_url_vod": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/profile_2/chunklist_vod.m3u8",
"playback_added_cdns": [],
"label": "hls360p"
},
{
"id": "3-bbccddeeffgghhiijjkk0011223344",
"playlist_type": "defaultS3",
"type": "playlist",
"filename": "playlist.m3u8",
"dvr_filename": "playlist_dvr.m3u8",
"playback_url": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/playlist.m3u8",
"playback_url_dvr": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/playlist_dvr.m3u8",
"ssai_playback_urls": {
"91bc2d5ff4a4441db34c2457c751c3ca": {
"playback_url": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/91bc2d5ff4a4441db34c2457c751c3ca/playlist_ssaiM.m3u8",
"playback_url_dvr": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/91bc2d5ff4a4441db34c2457c751c3ca/playlist_dvr_ssaiM.m3u8",
"playback_added_cdns": [],
"description": "Test ad configuration",
"type": "ads"
},
"e7f6e9a3022a45e1b0b322ba57399150": {
"playback_url": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/e7f6e9a3022a45e1b0b322ba57399150/playlist_ssaiM.m3u8",
"playback_url_dvr": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/e7f6e9a3022a45e1b0b322ba57399150/playlist_dvr_ssaiM.m3u8",
"playback_added_cdns": [],
"description": "House Ads - 0077db20eb444b5daa7487438c90a271",
"type": "ads"
}
}
}
],
"stream_url": "rtmp://ep4-usw2.bcovlive.io:1935/bbccddeeffgghhiijjkk0011223344",
"stream_name": "alive",
"static": false,
"encryption": {},
"playback_url": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/playlist.m3u8",
"playback_url_dvr": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/playlist_dvr.m3u8",
"ssai_playback_urls": {
"91bc2d5ff4a4441db34c2457c751c3ca": {
"playback_url": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/91bc2d5ff4a4441db34c2457c751c3ca/playlist_ssaiM.m3u8",
"playback_url_dvr": "https://bcovlive-a.akamaihd.net/bbccddeeffgghhiijjkk0011223344/us-west-2/NA/91bc2d5ff4a4441db34c2457c751c3ca/playlist_dvr_ssaiM.m3u8",
"playback_added_cdns": [],
"description": "Test ad configuration",
"type": "ads"
}
}
}
À partir de la réponse de l'API, notez les valeurs de champ suivantes pour l'étape suivante :
id
- Votre identifiant de travail en directstream_url
,stream_name
- Entrées pour votre encodeur de flux en directjob_videocloud_asset_id
- ID vidéo Video Cloud
Créer le jeton de lecture
Vous aurez besoin du jeton de lecture avec votre lecteur.
Pour créer le jeton de lecture, envoyez une POST
requête comme suit :
Méthode | POST |
---|---|
URL | https://api.bcovlive.io/v1/jobs/your live job id/playback-token |
Headers | X-API-KEY: your API KEY |
Type de contenu : application/json |
Corps de la demande
Exemple de corps de requête :
{
"dvr":true / false,
"application_id":"your ad config id"
}
Réponse
Réponse de l'échantillon :
{
"playback_token": "live.JhQabcdefghijkl000000000abcdefghi"
}
Le corps de la réponse inclura un jeton de lecture généré. Utilisez cette option lors d'un appel d'API de lecture avec votre lecteur.
Configurer le lecteur
Le processus de lecture de votre flux en direct à partir de l'API Playback est légèrement différent de la façon dont vous lisez une vidéo Video Cloud normale. En plus de fournir l'identifiant vidéo (id de référence), vous devez inclure un jeton de lecture qui identifie la configuration de l'annonce que vous souhaitez utiliser. Vous devrez également spécifier si vous voulez la lecture DVR.
Lecteur Web
Pour plus de détails sur la configuration du Brightcove Player, consultez le Utilisation des améliorations de lecteur pour Live SSAI avec Brightcove Player document.
Lecteur Android natif
Pour plus de détails sur la configuration de Native Player pour Android, consultez le Utilisation des améliorations de lecteur pour Live SSAI avec les SDK natifs document.
Lecteur iOS natif
Pour plus de détails sur la configuration de Native Player pour iOS, consultez le Utilisation des améliorations de lecteur pour Live SSAI avec les SDK natifs document.
Commencer le streaming
Il existe de nombreux outils pour créer un événement de streaming en direct. Voici quelques encodeurs que vous pouvez utiliser pour produire un flux en direct livré par un CDN :
Nettoyage
Lorsque votre flux en direct est terminé, vous pouvez nettoyer les artefacts de votre flux comme suit :
- Arrêtez votre encodeur de streaming
-
Annuler le travail en direct.
Pour annuler une tâche en cours, envoyez une
PUT
demande comme suit :Méthode PUT
URL https://api.bcovlive.io/v1/jobs/your live job id/cancel
Headers X-API-KEY: your API KEY
Type de contenu : application/json
Pour plus de détails, consultez le Référence de l'API en direct document.
-
Supprimer la configuration de votre annonce
Pour supprimer une configuration d'annonce, envoyez un
DELETE
demande comme suit :Méthode PUT
URL https://api.bcovlive.io/v1/ssai/applications/application/your ad config id
Headers X-API-KEY: your API KEY
Type de contenu : application/json
Pour plus de détails, consultez le Référence de l'API en direct document.