Events vidéo
La spécification vidéo de Commanders Act vous permet de définir comment un client interagit avec vos vidéos et le contenu publicitaire associé.
Cette documentation détaille les conventions et les meilleures pratiques pour l'envoi d'événements lors du suivi des vidéos. Le document clarifie la structure et la classification de ces événements, qui se répartissent en quatre catégories : Lecture, Contenu, Annonces et Paramètres vidéo.
Lecture
Les événements de lecture sont liés à la lecture effective du contenu vidéo et suivent des informations sur le lecteur vidéo.
Par exemple, lorsqu'un client lance une vidéo sur une application, un événement Video Playback Started est envoyé avec un session_id unique. Tous les événements ultérieurs générés à partir de cette session sont liés au même session_id.
Si une page web comporte deux lecteurs vidéo, il y aura deux sessions distinctes et des session_ids associés. Cependant, si deux vidéos différentes sont lues sur le même lecteur vidéo, elles seront toujours considérées comme une seule session avec deux contenus associés.
Propriétés des événements de lecture
Tous les événements de lecture partagent les mêmes propriétés qui décrivent l'état actuel du lecteur vidéo.
Le tableau suivant répertorie en détail toutes les propriétés de cet objet d'événement de lecture :
video_session_id
String
Oui
Un ID unique qui lie tous les événements générés à partir d'une session de lecture spécifique. Ces événements incluent les événements de lecture, de contenu et d'annonce.
video_title
String
Non
Désigne le titre du contenu vidéo.
video_category
String
Non
Désigne le genre de l'actif de contenu vidéo.
publisher
String
Non
Désigne l'éditeur / créateur / auteur de
l'actif de contenu vidéo.
content_asset_id
String
Tableau [String]
Oui
ID(s) d'actif de contenu de la/ des vidéo(s) en cours de lecture ou
sur le point d'être lue(s).
Pour Lecture de la vidéo commencée événements, un tableau
d'ID d'actifs uniques doit être envoyé. Pour les autres
événements de lecture, un ID d'actif de contenu unique au moment de l'événement doit être envoyé.
content_pod_id
String
Tableau [String]
Non
ID(s) de pod de contenu de la/ des vidéo(s) en cours de lecture ou
sur le point d'être lue(s).
Pour Lecture de la vidéo commencée événements, un tableau
d'ID de pod uniques doivent être envoyés. Pour les autres
événements de lecture, un ID de pod de contenu unique associé au pod de contenu courant au moment de l'événement doit être envoyé.
ad_asset_id
String
Tableau [String]
Non
ID(s) d'actif d'annonce de la/ des vidéo(s) en cours de lecture ou
sur le point d'être lue(s).
Pour Lecture de la vidéo commencée événements, un tableau
d'ID d'actifs d'annonce uniques doivent être envoyés. Pour les autres
événements de lecture, un ID d'actif d'annonce unique au moment de l'événement doit être envoyé.
ad_pod_id
String
Tableau [String]
Non
ID(s) de pod d'annonce de la/ des vidéo(s) en cours de lecture ou
sur le point d'être lue(s).
Pour Lecture de la vidéo commencée événements, un tableau
d'ID de pod d'annonce uniques doivent être envoyés. Pour les autres
événements de lecture, un ID de pod de contenu unique associé au pod d'annonce courant au moment de l'événement doit être envoyé.
ad_type
String
Non
Désigne le type d'annonce diffusée au moment de
l'événement. Les valeurs peuvent être 'pre-roll', ' mid-roll', ou
'post-roll'.
cursor_position
Entier
Oui
Désigne la position actuelle du curseur de lecture
en secondes. Elle inclut la durée de toute annonce vue.
Non requis dans video_buffer_start et video_buffer_complete événements
Si la lecture est un livestream, référez-vous à la
documentation de la destination concernée pour les étapes
sur la transmission correcte de la position du curseur de lecture.
seek_position
Entier
Non
Désigne la position du curseur de lecture vers laquelle
l'utilisateur effectue la recherche.
Applicable uniquement sur les video_seek_start et video_seek_complete
événements. Sur video_seek_complete événements,
le seek_position doit être égal à cursor_position.
total_length
Entier
Oui
Désigne la durée totale de la lecture vidéo
en secondes. Inclut la durée totale de tous
le contenu et les annonces inclus dans la session.
Définir à null en cas de lecture en livestream.
bitrate
Entier
Non
Débit binaire de la lecture vidéo, indiqué en kbps
framerate
Float
Non
Désigne la fréquence d'images moyenne de la
lecture vidéo en fps.
video_player
String
Non
Désigne le nom du lecteur vidéo utilisé pour la
lecture. Exemple : youtube, vimeo, etc.
sound
Entier
Non
Désigne le niveau sonore de la lecture vidéo.
L'échelle va de 0 à 100, où 0 représente muet
et 100 le volume maximum.
full_screen
Boolean
Non
Définir à true si la lecture est en mode plein écran.
ad_enabled
Boolean
Non
Définir à false si l'utilisateur utilise des bloqueurs de pub.
Si l'utilisateur peut voir vos annonces vidéo, il est défini sur
true.
image_quality
String
Non
Spécifie la qualité de la vidéo. Exemples : 'hd1080', 'highres'
interruption_method
String
Non
Pour les Video Playback Interrupted événements,
vous pouvez envoyer cette propriété indiquant comment la
lecture a été interrompue.
Quelques exemples incluent 'device_lock', 'call' et
'browser_redirect'.
livestream
Boolean
Non
Définir à true si la lecture est un livestream,
autrement définir sur false.
Événements de lecture
Cette section détaille tous les événements de lecture vidéo.
Pour plus d'informations sur chacune des propriétés associées à ces événements, reportez-vous à la Playback Event Properties section.
Lecture de la vidéo commencée
Cet événement est associé à l'action utilisateur d'appuyer sur le bouton de lecture du lecteur vidéo pour démarrer la lecture de la vidéo.
Un événement exemple est présenté ci-dessous :
{
"event_name": "video_start",
"user": {},
"video_session_id": "98765",
"content_asset_id": ["0133370", "123456"],
"content_pod_id": ["CAA", "CAB", "CAD"],
"ad_asset_id": ["ad1", "ad0", "ad2"],
"ad_pod_id": ["adCAA", "adCAB", "adCAD"],
"ad_type": "pre-roll",
"cursor_position": 0,
"total_length": 600,
"bitrate": 128,
"framerate": 60.00,
"video_player": "vimeo",
"sound": 100,
"full_screen": false,
"ad_enabled": false,
"image_quality": "hd720",
"livestream": true
}val playbackVideoEvent = TCVideoPlaybackEvent(ETCVideoPlaybackMode.video_start, "YOUR_VIDEO_SESSION_ID")
playbackVideoEvent.contentAssetID = listOf("456", "223")
playbackVideoEvent.cursorPosition = 0
playbackVideoEvent.totalLength = 500
serverSide.execute(playbackVideoEvent)TCVideoPlaybackEvent playbackVideoEvent = new TCVideoPlaybackEvent(ETCVideoPlaybackMode.video_start, "YOUR_VIDEO_SESSION_ID");
playbackVideoEvent.contentAssetID = Arrays.asList("456", "223");
playbackVideoEvent.cursorPosition = 0;
playbackVideoEvent.totalLength = 500;
serverSide.execute(playbackVideoEvent); TCVideoPlaybackEvent *playbackVideoEvent = [[TCVideoPlaybackEvent alloc] initWithMode: video_start andSessionId: @"YOUR_VIDEO_SESSION_ID"];
playbackVideoEvent.contentAssetID = [@[@"456", @"223"] mutableCopy];
playbackVideoEvent.cursorPosition = [[NSDecimalNumber alloc] initWithInt: 0];
playbackVideoEvent.totalLength = [[NSDecimalNumber alloc] initWithInt: 500];;
[serverside execute: playbackVideoEvent];let playbackVideoEvent = TCVideoPlaybackEvent(mode: video_start, andSessionId: "YOUR_VIDEO_SESSION_ID")
playbackVideoEvent?.contentAssetID = ["456", "223"]
playbackVideoEvent?.cursorPosition = 0
playbackVideoEvent?.totalLength = 500
serverSide?.execute(playbackVideoEvent)Lecture de la vidéo en pause
Cet événement correspond à l'action utilisateur de mettre la lecture en pause.
Un événement exemple est présenté comme suit :
{
"event_name": "video_pause",
"user": {},
"video_session_id": "98765",
"content_asset_id": ["0123370", "123456"],
"content_pod_id": ["CAA", "CAB", "CAD"],
"cursor_position": 10,
"total_length": 600,
"bitrate": 256,
"framerate": 60.00,
"video_player": "vimeo",
"sound": 100,
"full_screen": false,
"ad_enabled": false,
"image_quality": "hd720",
"livestream": true
}val playbackVideoEvent = TCVideoPlaybackEvent(ETCVideoPlaybackMode.video_pause, "YOUR_VIDEO_SESSION_ID")
playbackVideoEvent.contentAssetID = listOf("456", "223")
playbackVideoEvent.cursorPosition = 0
playbackVideoEvent.totalLength = 500
serverSide.execute(playbackVideoEvent)TCVideoPlaybackEvent playbackVideoEvent = new TCVideoPlaybackEvent(ETCVideoPlaybackMode.video_pause, "YOUR_VIDEO_SESSION_ID");
playbackVideoEvent.contentAssetID = Arrays.asList("456", "223");
playbackVideoEvent.cursorPosition = 0;
playbackVideoEvent.totalLength = 500;
serverSide.execute(playbackVideoEvent); TCVideoPlaybackEvent *playbackVideoEvent = [[TCVideoPlaybackEvent alloc] initWithMode: video_pause andSessionId: @"YOUR_VIDEO_SESSION_ID"];
playbackVideoEvent.contentAssetID = [@[@"456", @"223"] mutableCopy];
playbackVideoEvent.cursorPosition = [[NSDecimalNumber alloc] initWithInt: 0];
playbackVideoEvent.totalLength = [[NSDecimalNumber alloc] initWithInt: 500];;
[serverside execute: playbackVideoEvent];let playbackVideoEvent = TCVideoPlaybackEvent(mode: video_pause, andSessionId: "YOUR_VIDEO_SESSION_ID")
playbackVideoEvent?.contentAssetID = ["456", "223"]
playbackVideoEvent?.cursorPosition = 0
playbackVideoEvent?.totalLength = 500
serverSide?.execute(playbackVideoEvent)Video Playback Interrupted
Cet événement est envoyé lorsque la lecture vidéo s'arrête de manière inattendue. Perte de réseau, fermeture du navigateur par l'utilisateur, redirection, etc. sont quelques-unes des raisons courantes. Vous pouvez transmettre la cause via la propriété interruption_method.
Un événement exemple est présenté comme suit :
{
"event_name": "video_error",
"user": {},
"video_session_id": "12345",
"content_asset_id": ["0144370"],
"content_pod_id": ["CAA", "CAB"],
"cursor_position": 0,
"total_length": 300,
"bitrate": 128,
"framerate": 30.00,
"video_player": "youtube",
"sound": 68,
"full_screen": true,
"ad_enabled": true,
"image_quality": "hd1080",
"livestream": false,
"interruption_method":"network_loss"
}val playbackVideoEvent = TCVideoPlaybackEvent(ETCVideoPlaybackMode.video_error, "YOUR_VIDEO_SESSION_ID")
playbackVideoEvent.contentAssetID = listOf("456", "223")
playbackVideoEvent.cursorPosition = 0
playbackVideoEvent.totalLength = 500
serverSide.execute(playbackVideoEvent)TCVideoPlaybackEvent playbackVideoEvent = new TCVideoPlaybackEvent(ETCVideoPlaybackMode.video_error, "YOUR_VIDEO_SESSION_ID");
playbackVideoEvent.contentAssetID = Arrays.asList("456", "223");
playbackVideoEvent.cursorPosition = 0;
playbackVideoEvent.totalLength = 500;
serverSide.execute(playbackVideoEvent); TCVideoPlaybackEvent *playbackVideoEvent = [[TCVideoPlaybackEvent alloc] initWithMode: video_error andSessionId: @"YOUR_VIDEO_SESSION_ID"];
playbackVideoEvent.contentAssetID = [@[@"456", @"223"] mutableCopy];
playbackVideoEvent.cursorPosition = [[NSDecimalNumber alloc] initWithInt: 0];
playbackVideoEvent.totalLength = [[NSDecimalNumber alloc] initWithInt: 500];;
[serverside execute: playbackVideoEvent];let playbackVideoEvent = TCVideoPlaybackEvent(mode: video_error, andSessionId: "YOUR_VIDEO_SESSION_ID")
playbackVideoEvent?.contentAssetID = ["456", "223"]
playbackVideoEvent?.cursorPosition = 0
playbackVideoEvent?.totalLength = 500
serverSide?.execute(playbackVideoEvent)Video Playback Buffer Started
Ceci correspond à l'événement de mise en buffer du contenu ou d'une publicité.
Un événement exemple est présenté comme suit :
{
"event_name": "video_buffer_start",
"user": {},
"video_session_id": "54321",
"content_asset_id": ["098765"],
"content_pod_id": ["CAD", "CAE"],
"cursor_position": 10,
"total_length": 600,
"bitrate": 256,
"framerate": 60.00,
"video_player": "vimeo",
"sound": 100,
"full_screen": false,
"ad_enabled": false,
"image_quality": "hd720",
"livestream": true
}val playbackVideoEvent = TCVideoPlaybackEvent(ETCVideoPlaybackMode.video_buffer_start, "YOUR_VIDEO_SESSION_ID")
playbackVideoEvent.contentAssetID = listOf("456", "223")
playbackVideoEvent.cursorPosition = 0
playbackVideoEvent.totalLength = 500
serverSide.execute(playbackVideoEvent)TCVideoPlaybackEvent playbackVideoEvent = new TCVideoPlaybackEvent(ETCVideoPlaybackMode.video_buffer_start, "YOUR_VIDEO_SESSION_ID");
playbackVideoEvent.contentAssetID = Arrays.asList("456", "223");
playbackVideoEvent.cursorPosition = 0;
playbackVideoEvent.totalLength = 500;
serverSide.execute(playbackVideoEvent); TCVideoPlaybackEvent *playbackVideoEvent = [[TCVideoPlaybackEvent alloc] initWithMode: video_buffer_start andSessionId: @"YOUR_VIDEO_SESSION_ID"];
playbackVideoEvent.contentAssetID = [@[@"456", @"223"] mutableCopy];
playbackVideoEvent.cursorPosition = [[NSDecimalNumber alloc] initWithInt: 0];
playbackVideoEvent.totalLength = [[NSDecimalNumber alloc] initWithInt: 500];;
[serverside execute: playbackVideoEvent];let playbackVideoEvent = TCVideoPlaybackEvent(mode: video_buffer_start, andSessionId: "YOUR_VIDEO_SESSION_ID")
playbackVideoEvent?.contentAssetID = ["456", "223"]
playbackVideoEvent?.cursorPosition = 0
playbackVideoEvent?.totalLength = 500
serverSide?.execute(playbackVideoEvent)Video Playback Buffer Completed
Ceci correspond à l'événement lorsque la lecture a fini de mettre en buffer le contenu ou une publicité.
Un événement exemple est présenté comme suit :
{
"event_name": "video_buffer_complete",
"user": {},
"video_session_id": "56789",
"content_asset_id": ["123456"],
"content_pod_id": ["CAF", "CAG"],
"cursor_position": 20,
"total_length": 400,
"bitrate": 512,
"framerate": 60.00,
"video_player": "dailymotion",
"sound": 100,
"full_screen": false,
"ad_enabled": false,
"image_quality": "hd720",
"livestream": true
}val playbackVideoEvent = TCVideoPlaybackEvent(ETCVideoPlaybackMode.video_buffer_complete, "YOUR_VIDEO_SESSION_ID")
playbackVideoEvent.contentAssetID = listOf("456", "223")
playbackVideoEvent.cursorPosition = 0
playbackVideoEvent.totalLength = 500
serverSide.execute(playbackVideoEvent)TCVideoPlaybackEvent playbackVideoEvent = new TCVideoPlaybackEvent(ETCVideoPlaybackMode.video_buffer_complete, "YOUR_VIDEO_SESSION_ID");
playbackVideoEvent.contentAssetID = Arrays.asList("456", "223");
playbackVideoEvent.cursorPosition = 0;
playbackVideoEvent.totalLength = 500;
serverSide.execute(playbackVideoEvent); TCVideoPlaybackEvent *playbackVideoEvent = [[TCVideoPlaybackEvent alloc] initWithMode: video_buffer_complete andSessionId: @"YOUR_VIDEO_SESSION_ID"];
playbackVideoEvent.contentAssetID = [@[@"456", @"223"] mutableCopy];
playbackVideoEvent.cursorPosition = [[NSDecimalNumber alloc] initWithInt: 0];
playbackVideoEvent.totalLength = [[NSDecimalNumber alloc] initWithInt: 500];;
[serverside execute: playbackVideoEvent];let playbackVideoEvent = TCVideoPlaybackEvent(mode: video_buffer_complete, andSessionId: "YOUR_VIDEO_SESSION_ID")
playbackVideoEvent?.contentAssetID = ["456", "223"]
playbackVideoEvent?.cursorPosition = 0
playbackVideoEvent?.totalLength = 500
serverSide?.execute(playbackVideoEvent)Video Playback Seek Started
Cet événement est envoyé lorsqu'un utilisateur effectue une recherche manuelle vers une certaine position du curseur dans le contenu vidéo ou une publicité pendant la lecture. La cursor_position propriété indique d'où l'utilisateur effectue la recherche (temps en secondes) et la seek_position indique la position du curseur dans la lecture vers laquelle l'utilisateur recherche.
Un événement exemple est présenté comme suit :
{
"event_name": "video_seek_start",
"user": {},
"video_session_id": "abcdef",
"content_asset_id": ["123456"],
"content_pod_id": ["XYZ", "XYA"],
"cursor_position": 59,
"seek_position": 150,
"total_length": 360,
"bitrate": 256,
"framerate": 60.00,
"video_player": "vimeo",
"sound": 80,
"full_screen": false,
"ad_enabled": false,
"image_quality": "hd720",
"livestream": true
}val playbackVideoEvent = TCVideoPlaybackEvent(ETCVideoPlaybackMode.video_seek_start, "YOUR_VIDEO_SESSION_ID")
playbackVideoEvent.contentAssetID = listOf("456", "223")
playbackVideoEvent.cursorPosition = 0
playbackVideoEvent.totalLength = 500
serverSide.execute(playbackVideoEvent)TCVideoPlaybackEvent playbackVideoEvent = new TCVideoPlaybackEvent(ETCVideoPlaybackMode.video_seek_start, "YOUR_VIDEO_SESSION_ID");
playbackVideoEvent.contentAssetID = Arrays.asList("456", "223");
playbackVideoEvent.cursorPosition = 0;
playbackVideoEvent.totalLength = 500;
serverSide.execute(playbackVideoEvent); TCVideoPlaybackEvent *playbackVideoEvent = [[TCVideoPlaybackEvent alloc] initWithMode: video_seek_start andSessionId: @"YOUR_VIDEO_SESSION_ID"];
playbackVideoEvent.contentAssetID = [@[@"456", @"223"] mutableCopy];
playbackVideoEvent.cursorPosition = [[NSDecimalNumber alloc] initWithInt: 0];
playbackVideoEvent.totalLength = [[NSDecimalNumber alloc] initWithInt: 500];;
[serverside execute: playbackVideoEvent];let playbackVideoEvent = TCVideoPlaybackEvent(mode: video_seek_start, andSessionId: "YOUR_VIDEO_SESSION_ID")
playbackVideoEvent?.contentAssetID = ["456", "223"]
playbackVideoEvent?.cursorPosition = 0
playbackVideoEvent?.totalLength = 500
serverSide?.execute(playbackVideoEvent)Video Playback Seek Completed
Cet événement est envoyé après qu'un utilisateur ait terminé une recherche manuelle vers une certaine position du curseur de la vidéo ou de l'annonce dans la lecture. La cursor_position propriété indique où l'utilisateur reprend la lecture.
Un événement exemple est présenté comme suit :
{
"event_name": "video_seek_complete",
"user": {},
"video_session_id": "abcdef",
"content_asset_id": ["123456"],
"content_pod_id": ["XYZ", "XYA"],
"cursor_position": 59,
"seek_position": 150,
"total_length": 360,
"bitrate": 256,
"framerate": 60.00,
"video_player": "vimeo",
"sound": 80,
"full_screen": false,
"ad_enabled": false,
"image_quality": "hd720",
"livestream": true
}val playbackVideoEvent = TCVideoPlaybackEvent(ETCVideoPlaybackMode.video_seek_complete, "YOUR_VIDEO_SESSION_ID")
playbackVideoEvent.contentAssetID = listOf("456", "223")
playbackVideoEvent.cursorPosition = 0
playbackVideoEvent.totalLength = 500
serverSide.execute(playbackVideoEvent)TCVideoPlaybackEvent playbackVideoEvent = new TCVideoPlaybackEvent(ETCVideoPlaybackMode.video_seek_complete, "YOUR_VIDEO_SESSION_ID");
playbackVideoEvent.contentAssetID = Arrays.asList("456", "223");
playbackVideoEvent.cursorPosition = 0;
playbackVideoEvent.totalLength = 500;
serverSide.execute(playbackVideoEvent); TCVideoPlaybackEvent *playbackVideoEvent = [[TCVideoPlaybackEvent alloc] initWithMode: video_seek_start andSessionId: @"YOUR_VIDEO_SESSION_ID"];
playbackVideoEvent.contentAssetID = [@[@"456", @"223"] mutableCopy];
playbackVideoEvent.cursorPosition = [[NSDecimalNumber alloc] initWithInt: 0];
playbackVideoEvent.totalLength = [[NSDecimalNumber alloc] initWithInt: 500];;
[serverside execute: playbackVideoEvent];let playbackVideoEvent = TCVideoPlaybackEvent(mode: video_seek_complete, andSessionId: "YOUR_VIDEO_SESSION_ID")
playbackVideoEvent?.contentAssetID = ["456", "223"]
playbackVideoEvent?.cursorPosition = 0
playbackVideoEvent?.totalLength = 500
serverSide?.execute(playbackVideoEvent)Video Playback Resumed
Cet événement est envoyé après que l'utilisateur ait repris la lecture de la vidéo après qu'elle ait été mise en pause.
Un événement exemple est présenté comme suit :
{
"event_name": "video_resume",
"user": {},
"video_session_id": "abcdef",
"content_asset_id": ["123456"],
"content_pod_id": ["XYZ", "XYA"],
"cursor_position": 150,
"total_length": 360,
"bitrate": 256,
"framerate": 60.00,
"video_player": "vimeo",
"sound": 80,
"full_screen": false,
"ad_enabled": false,
"image_quality": "hd720",
"livestream": true
}val playbackVideoEvent = TCVideoPlaybackEvent(ETCVideoPlaybackMode.video_resume, "YOUR_VIDEO_SESSION_ID")
playbackVideoEvent.contentAssetID = listOf("456", "223")
playbackVideoEvent.cursorPosition = 0
playbackVideoEvent.totalLength = 500
serverSide.execute(playbackVideoEvent)TCVideoPlaybackEvent playbackVideoEvent = new TCVideoPlaybackEvent(ETCVideoPlaybackMode.video_resume, "YOUR_VIDEO_SESSION_ID");
playbackVideoEvent.contentAssetID = Arrays.asList("456", "223");
playbackVideoEvent.cursorPosition = 0;
playbackVideoEvent.totalLength = 500;
serverSide.execute(playbackVideoEvent); TCVideoPlaybackEvent *playbackVideoEvent = [[TCVideoPlaybackEvent alloc] initWithMode: video_resume andSessionId: @"YOUR_VIDEO_SESSION_ID"];
playbackVideoEvent.contentAssetID = [@[@"456", @"223"] mutableCopy];
playbackVideoEvent.cursorPosition = [[NSDecimalNumber alloc] initWithInt: 0];
playbackVideoEvent.totalLength = [[NSDecimalNumber alloc] initWithInt: 500];;
[serverside execute: playbackVideoEvent];let playbackVideoEvent = TCVideoPlaybackEvent(mode: video_resume, andSessionId: "YOUR_VIDEO_SESSION_ID")
playbackVideoEvent?.contentAssetID = ["456", "223"]
playbackVideoEvent?.cursorPosition = 0
playbackVideoEvent?.totalLength = 500
serverSide?.execute(playbackVideoEvent)Lecture de la vidéo terminée
Cet événement est envoyé après la fin de la lecture et lorsque la session de pod est terminée. Notez que la cursor_position propriété a la même valeur que la total_length propriété.
Un événement exemple est présenté comme suit :
{
"event_name": "video_complete",
"user": {},
"video_session_id": "abcdef",
"content_asset_id": ["123456"],
"content_pod_id": ["XYZ", "XYA"],
"cursor_position": 150,
"total_length": 360,
"bitrate": 256,
"framerate": 60.00,
"video_player": "vimeo",
"sound": 80,
"full_screen": false,
"ad_enabled": false,
"image_quality": "hd720",
"livestream": true
}val playbackVideoEvent = TCVideoPlaybackEvent(ETCVideoPlaybackMode.video_complete, "YOUR_VIDEO_SESSION_ID")
playbackVideoEvent.contentAssetID = listOf("456", "223")
playbackVideoEvent.cursorPosition = 0
playbackVideoEvent.totalLength = 500
serverSide.execute(playbackVideoEvent)TCVideoPlaybackEvent playbackVideoEvent = new TCVideoPlaybackEvent(ETCVideoPlaybackMode.video_complete, "YOUR_VIDEO_SESSION_ID");
playbackVideoEvent.contentAssetID = Arrays.asList("456", "223");
playbackVideoEvent.cursorPosition = 0;
playbackVideoEvent.totalLength = 500;
serverSide.execute(playbackVideoEvent); TCVideoPlaybackEvent *playbackVideoEvent = [[TCVideoPlaybackEvent alloc] initWithMode: video_resume andSessionId: @"YOUR_VIDEO_SESSION_ID"];
playbackVideoEvent.contentAssetID = [@[@"456", @"223"] mutableCopy];
playbackVideoEvent.cursorPosition = [[NSDecimalNumber alloc] initWithInt: 0];
playbackVideoEvent.totalLength = [[NSDecimalNumber alloc] initWithInt: 500];;
[serverside execute: playbackVideoEvent];let playbackVideoEvent = TCVideoPlaybackEvent(mode: video_complete, andSessionId: "YOUR_VIDEO_SESSION_ID")
playbackVideoEvent?.contentAssetID = ["456", "223"]
playbackVideoEvent?.cursorPosition = 0
playbackVideoEvent?.totalLength = 500
serverSide?.execute(playbackVideoEvent)Contenu
Un pod de contenu désigne une partie / un groupe / un segment du contenu vidéo ou de la publicité au sein de la lecture.
Supposons qu'une session de lecture vidéo comporte une vidéo et une publicité mid-roll. Cela signifie que la mid-roll divise la lecture en deux pods de contenu distincts. La mid-roll est incluse dans un seul pod d'annonce.
Le flux est le suivant :
L'utilisateur démarre et termine le premier pod de contenu
L'utilisateur démarre et termine l'annonce
L'utilisateur démarre et termine le deuxième pod de contenu
Tous ces événements dans le flux se produisent au sein d'une même lecture vidéo.
Propriétés des événements de contenu
Tous les événements de contenu partagent les mêmes propriétés qui décrivent l'état actuel du contenu vidéo visionné par l'utilisateur pendant la lecture.
Le tableau suivant répertorie en détail toutes les propriétés de cet objet d'événement de lecture :
video_session_id
String
Oui
Un ID unique qui lie tous les événements générés à partir d'une session de lecture spécifique. Ces événements incluent les événements de lecture, de contenu et d'annonce.
content_asset_id
String
Oui
Désigne l'ID unique de l'actif de contenu vidéo.
content_pod_id
String
Non
Désigne l'ID unique du pod de contenu vidéo.
video_title
String
Non
Désigne le titre du contenu vidéo.
video_description
String
Non
Décrit brièvement l'actif de contenu vidéo.
keywords
Tableau [String]
Non
Désigne les mots-clés pertinents associés à la
catégorisation du contenu vidéo
season
String
Non
Désigne le numéro de saison, si applicable.
episode
String
Non
Désigne le numéro d'épisode, si applicable.
video_category
String
Non
Désigne le genre de l'actif de contenu vidéo.
program
String
Non
Désigne le nom du programme / spectacle dont
le contenu vidéo fait partie.
publisher
String
Non
Désigne l'éditeur / créateur / auteur de
l'actif de contenu vidéo.
digital
String
Non
Désigne la chaîne dans laquelle le contenu vidéo
est diffusé.
full_episode
Boolean
Non
Définir à true l'actif de contenu vidéo est un épisode complet.
livestream
Boolean
Non
Si le contenu vidéo est un livestream, ceci est défini sur
true.
airdate
ISO 8601
Date String
Non
Désigne la date originale de diffusion / publication
du contenu vidéo.
cursor_position
Entier
Oui
Désigne la position actuelle du curseur dans le
contenu vidéo en secondes. Cela n'inclut pas
les annonces jouées pendant cette durée.
En cas de livestreams, référez-vous à la documentation de la destination concernée pour les détails sur la façon de transmettre cette propriété.
total_length
Entier
Oui
La durée totale du contenu vidéo en
secondes. Cela n'inclut aucune annonce incluse
dans la lecture de cet actif de contenu.
Pour la lecture en livestream, cela doit être défini sur null.
bitrate
Entier
Non
Désigne le débit binaire actuel en kbps.
framerate
Float
Non
Désigne la fréquence d'images en fps.
Événements de contenu
Cette section détaille tous les événements de contenu vidéo.
Pour plus d'informations sur chacune des propriétés associées à ces événements, reportez-vous à la Propriétés des événements de contenu section.
Vidéo - Contenu démarré
Cet événement est envoyé une fois que l'utilisateur commence à lire un segment de contenu vidéo dans une lecture.
Un événement exemple est présenté comme suit :
{
"event_name": "video_content_start",
"video_session_id": "98765",
"content_asset_id": "456",
"content_pod_id": "XYZ",
"program": "The Lion King",
"video_title": "Act 1",
"video_description": "Invented description",
"season": "1",
"episode":"14",
"channel":"NBC",
"livestream":false,
"airdate":"2022-12-20",
"cursor_position": 5,
"total_length": 200,
"video_category": "Animation",
"publisher": "Disney",
"full_episode": false,
"keywords": ["lion", "savannah", "circle of life"],
"user": {}
}val contentVideoEvent = TCVideoContentEvent(ETCVideoContentMode.video_content_start, "YOUR_VIDEO_SESSION_ID")
contentVideoEvent.contentAssetID = "456"
contentVideoEvent.cursorPosition = 0
contentVideoEvent.totalLength = 500
serverSide.execute(contentVideoEvent)TCVideoContentEvent contentVideoEvent = new TCVideoContentEvent(ETCVideoContentMode.video_content_start, "YOUR_VIDEO_SESSION_ID");
contentVideoEvent.contentAssetID = "456";
contentVideoEvent.cursorPosition = 0;
contentVideoEvent.totalLength = 500;
serverSide.execute(contentVideoEvent); TCVideoContentEvent *addContentEvent = [[TCVideoContentEvent alloc] initWithMode: video_content_start andSessionId: @"YOUR_VIDEO_SESSION_ID"];
addContentEvent.contentAssetID = @"456";
addContentEvent.cursorPosition = [[NSDecimalNumber alloc] initWithInt: 0];
addContentEvent.totalLength = [[NSDecimalNumber alloc] initWithInt: 500];;
[serverside execute: addContentEvent];let contentVideoEvent = TCVideoContentEvent(mode: video_content_start, andSessionId: "YOUR_VIDEO_SESSION_ID")
contentVideoEvent?.contentAssetID = "456"
contentVideoEvent?.cursorPosition = 0
contentVideoEvent?.totalLength = 500
serverSide?.execute(contentVideoEvent)Contenu vidéo en lecture
Ces événements sont envoyés comme des heartbeats à intervalles réguliers pour indiquer la durée de vidéo vue par l'utilisateur, déterminée par le cursor_position propriété.
Un événement exemple est présenté comme suit :
{
"event_name": "video_content_playing",
"video_session_id": "56789",
"content_asset_id": "789",
"content_pod_id": "ABC",
"program": "The Jungle Book",
"video_title": "Act 2",
"video_description": "Invented description",
"season": "2",
"cursor_position": 123,
"total_length": 400,
"video_category": "Adventure",
"publisher": "Disney",
"full_episode": false,
"framerate": 60,
"bitrate": 4500,
"keywords": ["jungle", "animals", "mowgli"],
"user": {}
}val contentVideoEvent = TCVideoContentEvent(ETCVideoContentMode.video_content_playing, "YOUR_VIDEO_SESSION_ID")
contentVideoEvent.contentAssetID = "456"
contentVideoEvent.cursorPosition = 0
contentVideoEvent.totalLength = 500
serverSide.execute(contentVideoEvent)TCVideoContentEvent contentVideoEvent = new TCVideoContentEvent(ETCVideoContentMode.video_content_playing, "YOUR_VIDEO_SESSION_ID");
contentVideoEvent.contentAssetID = "456";
contentVideoEvent.cursorPosition = 0;
contentVideoEvent.totalLength = 500;
serverSide.execute(contentVideoEvent); TCVideoContentEvent *addContentEvent = [[TCVideoContentEvent alloc] initWithMode: video_content_playing andSessionId: @"YOUR_VIDEO_SESSION_ID"];
addContentEvent.contentAssetID = @"456";
addContentEvent.cursorPosition = [[NSDecimalNumber alloc] initWithInt: 0];
addContentEvent.totalLength = [[NSDecimalNumber alloc] initWithInt: 500];;
[serverside execute: addContentEvent];let contentVideoEvent = TCVideoContentEvent(mode: video_content_playing, andSessionId: "YOUR_VIDEO_SESSION_ID")
contentVideoEvent?.contentAssetID = "456"
contentVideoEvent?.cursorPosition = 0
contentVideoEvent?.totalLength = 500
serverSide?.execute(contentVideoEvent)Contenu vidéo - Quart atteint
Ces événements sont envoyés lorsqu'un quart de la vidéo est atteint, déterminé par le cursor_position propriété.
Un événement exemple est présenté comme suit :
{
"event_name": "video_content_quarter_reached",
"video_session_id": "56789",
"content_asset_id": "789",
"content_pod_id": "ABC",
"program": "The Jungle Book",
"video_title": "Act 2",
"video_description": "Invented description",
"season": "2",
"cursor_position": 123,
"total_length": 400,
"video_category": "Adventure",
"publisher": "Disney",
"full_episode": false,
"keywords": ["jungle", "animals", "mowgli"],
"user": {}
}val contentVideoEvent = TCVideoContentEvent(ETCVideoContentMode.video_content_quarter_reached, "YOUR_VIDEO_SESSION_ID")
contentVideoEvent.contentAssetID = "456"
contentVideoEvent.cursorPosition = 0
contentVideoEvent.totalLength = 500
serverSide.execute(contentVideoEvent)TCVideoContentEvent contentVideoEvent = new TCVideoContentEvent(ETCVideoContentMode.video_content_playing, "YOUR_VIDEO_SESSION_ID");
contentVideoEvent.contentAssetID = "456";
contentVideoEvent.cursorPosition = 0;
contentVideoEvent.totalLength = 500;
serverSide.execute(contentVideoEvent); TCVideoContentEvent *addContentEvent = [[TCVideoContentEvent alloc] initWithMode: video_content_quarter_reached andSessionId: @"YOUR_VIDEO_SESSION_ID"];
addContentEvent.contentAssetID = @"456";
addContentEvent.cursorPosition = [[NSDecimalNumber alloc] initWithInt: 0];
addContentEvent.totalLength = [[NSDecimalNumber alloc] initWithInt: 500];;
[serverside execute: addContentEvent];let contentVideoEvent = TCVideoContentEvent(mode: video_content_quarter_reached, andSessionId: "YOUR_VIDEO_SESSION_ID")
contentVideoEvent?.contentAssetID = "456"
contentVideoEvent?.cursorPosition = 0
contentVideoEvent?.totalLength = 500
serverSide?.execute(contentVideoEvent)Contenu vidéo - Terminé
Cet événement est envoyé une fois que le segment vidéo dans la lecture est terminé. Notez que le cursor_position propriété a la même valeur que la total_length propriété.
Un événement exemple est présenté comme suit :
{
"event_name": "video_content_complete",
"video_session_id": "01234",
"content_asset_id": "111",
"content_pod_id": "DEF",
"program": "Tarzan",
"video_title": "Finale",
"video_description": "Invented description",
"season": "4",
"cursor_position": 300,
"total_length": 300,
"video_category": "Adventure",
"publisher": "Disney",
"full_episode": true,
"keywords": ["jungle", "apes", "tarzan"],
"user": {}
}val contentVideoEvent = TCVideoContentEvent(ETCVideoContentMode.video_content_complete, "YOUR_VIDEO_SESSION_ID")
contentVideoEvent.contentAssetID = "456"
contentVideoEvent.cursorPosition = 0
contentVideoEvent.totalLength = 500
serverSide.execute(contentVideoEvent)TCVideoContentEvent contentVideoEvent = new TCVideoContentEvent(ETCVideoContentMode.video_content_complete, "YOUR_VIDEO_SESSION_ID");
contentVideoEvent.contentAssetID = "456";
contentVideoEvent.cursorPosition = 0;
contentVideoEvent.totalLength = 500;
serverSide.execute(contentVideoEvent); TCVideoContentEvent *addContentEvent = [[TCVideoContentEvent alloc] initWithMode: video_content_complete andSessionId: @"YOUR_VIDEO_SESSION_ID"];
addContentEvent.contentAssetID = @"456";
addContentEvent.cursorPosition = [[NSDecimalNumber alloc] initWithInt: 0];
addContentEvent.totalLength = [[NSDecimalNumber alloc] initWithInt: 500];;
[serverside execute: addContentEvent];let contentVideoEvent = TCVideoContentEvent(mode: video_content_complete, andSessionId: "YOUR_VIDEO_SESSION_ID")
contentVideoEvent?.contentAssetID = "456"
contentVideoEvent?.cursorPosition = 0
contentVideoEvent?.totalLength = 500
serverSide?.execute(contentVideoEvent)Annonces
Propriétés des événements d'annonce
Tous les événements d'annonce partagent les mêmes propriétés qui décrivent l'état actuel du contenu publicitaire vidéo avec lequel un utilisateur interagit pendant la lecture.
Le tableau suivant répertorie en détail toutes les propriétés de cet objet d'événement d'annonce :
video_session_id
String
Oui
Un ID unique qui lie tous les événements générés à partir d'une session de lecture spécifique. Ces événements incluent les événements de lecture, de contenu et d'annonce.
ad_asset_id
String
Oui
Désigne l'ID unique de l'actif d'annonce.
ad_pod_id
String
Oui
Désigne l'ID unique du pod d'annonce.
pod_position
Entier
Non
Désigne la position de l'actif d'annonce par rapport
aux autres annonces dans le même pod.
ad_type
String
Non
Désigne le type d'annonce diffusée au moment de
l'événement. Les valeurs peuvent être 'pre-roll', ' mid-roll', ou
'post-roll'.
pod_length
Entier
Non
Désigne le nombre d'actifs d'annonce dans le
pod d'annonce courant.
video_title
String
Non
Désigne le titre de l'annonce.
publisher
String
Non
Désigne l'auteur / créateur / éditeur de l'annonce.
cursor_position
Entier
Oui
La position actuelle du curseur par rapport à la
durée totale de l'annonce, en secondes.
total_length
Entier
Oui
Désigne la durée totale de l'actif d'annonce en secondes.
load_type
Enum
Non
Désigne si les annonces sont chargées dynamiquement ou si
elles sont identiques pour tous les utilisateurs.
Les valeurs peuvent être soit 'dynamique' soit ' linear '.
ad_quartile
Entier
Non
Pour les Annonce vidéo en lecture événement, cette propriété
peut être utilisée pour indiquer quand un quart spécifique de l'annonce
est atteint.
Si vous utilisez une bibliothèque client-side pour suivre vos
événements vidéo, cette propriété est optionnelle car Commanders Act
suit automatiquement les quartiles d'annonce.
Événements d'annonce
Cette section détaille tous les événements d'annonce.
Pour plus d'informations sur chacune des propriétés associées à ces événements, reportez-vous à la Propriétés des événements d'annonce section.
Annonce vidéo démarrée
Cet événement est envoyé lorsqu'une série d'annonces commence à être lue dans la lecture vidéo.
Un événement exemple est présenté comme suit :
{
"event_name": "video_ad_start",
"user": {},
"video_session_id": "abcdef",
"ad_asset_id": "456",
"ad_pod_id": "XYA",
"ad_type": "pre-roll",
"video_title": "SmackDown!",
"cursor_position": 0,
"total_length": 30,
"publisher": "WWE",
"load_type": "linear"
}val addVideoEvent = TCVideoAdEvent(ETCVideoAdMode.video_ad_start, "YOUR_VIDEO_SESSION_ID")
addVideoEvent.adAssetID = "456"
addVideoEvent.adPodID = "839"
addVideoEvent.cursorPosition = 12
addVideoEvent.totalLength = 211
serverSide.execute(addVideoEvent)TCVideoAdEvent addVideoEvent = new TCVideoAdEvent(ETCVideoAdMode.video_ad_start, "YOUR_VIDEO_SESSION_ID");
addVideoEvent.adAssetID = "456";
addVideoEvent.adPodID = "839";
addVideoEvent.cursorPosition = 12;
addVideoEvent.totalLength = 211;
serverSide.execute(addVideoEvent); TCVideoAdEvent *addVideoEvent = [[TCVideoAdEvent alloc] initWithMode: video_ad_start andSessionId: @"YOUR_VIDEO_SESSION_ID"];
addVideoEvent.adAssetID = @"456";
addVideoEvent.adPodID = @"839";
addVideoEvent.cursorPosition = [[NSDecimalNumber alloc] initWithInt: 12];
addVideoEvent.totalLength = [[NSDecimalNumber alloc] initWithInt: 211];
[serverside execute: addVideoEvent];let addVideoEvent = TCVideoAdEvent(mode: video_ad_start, andSessionId: "YOUR_VIDEO_SESSION_ID")
addVideoEvent?.adAssetID = "456"
addVideoEvent?.adPodID = "839"
addVideoEvent?.cursorPosition = 12
addVideoEvent?.totalLength = 211
serverSide?.execute(addVideoEvent)Annonce vidéo en lecture
Cet événement est envoyé à intervalles définis pendant la lecture de l'annonce vidéo et est déterminé par le cursor_position propriété.
Un événement exemple est présenté comme suit :
{
"event_name": "video_ad_playing",
"user": {},
"video_session_id": "abcdef",
"ad_asset_id": "456",
"ad_pod_id": "XYA",
"ad_type": "pre-roll",
"video_title": "SmackDown!",
"cursor_position": 10,
"total_length": 30,
"publisher": "WWE",
"load_type": "linear"
}val addVideoEvent = TCVideoAdEvent(ETCVideoAdMode.video_ad_playing, "YOUR_VIDEO_SESSION_ID")
addVideoEvent.adAssetID = "456"
addVideoEvent.adPodID = "839"
addVideoEvent.cursorPosition = 12
addVideoEvent.totalLength = 211
serverSide.execute(addVideoEvent)TCVideoAdEvent addVideoEvent = new TCVideoAdEvent(ETCVideoAdMode.video_ad_playing, "YOUR_VIDEO_SESSION_ID");
addVideoEvent.adAssetID = "456";
addVideoEvent.adPodID = "839";
addVideoEvent.cursorPosition = 12;
addVideoEvent.totalLength = 211;
serverSide.execute(addVideoEvent); TCVideoAdEvent *addVideoEvent = [[TCVideoAdEvent alloc] initWithMode: video_ad_playing andSessionId: @"YOUR_VIDEO_SESSION_ID"];
addVideoEvent.adAssetID = @"456";
addVideoEvent.adPodID = @"839";
addVideoEvent.cursorPosition = [[NSDecimalNumber alloc] initWithInt: 12];
addVideoEvent.totalLength = [[NSDecimalNumber alloc] initWithInt: 211];
[serverside execute: addVideoEvent];let addVideoEvent = TCVideoAdEvent(mode: video_ad_playing, andSessionId: "YOUR_VIDEO_SESSION_ID")
addVideoEvent?.adAssetID = "456"
addVideoEvent?.adPodID = "839"
addVideoEvent?.cursorPosition = 12
addVideoEvent?.totalLength = 211
serverSide?.execute(addVideoEvent)Annonce vidéo arrêtée
Cet événement est envoyé après que l'utilisateur a visionné complètement une annonce vidéo. Notez que le cursor_position propriété a la même valeur que la total_length propriété.
{
"event_name": "video_ad_stop",
"user": {},
"video_session_id": "abcdef",
"ad_asset_id": "456",
"ad_pod_id": "XYA",
"ad_type": "pre-roll",
"video_title": "SmackDown!",
"cursor_position": 30,
"total_length": 30,
"publisher": "WWE",
"load_type": "linear"
}val addVideoEvent = TCVideoAdEvent(ETCVideoAdMode.video_ad_stop, "YOUR_VIDEO_SESSION_ID")
addVideoEvent.adAssetID = "456"
addVideoEvent.adPodID = "839"
addVideoEvent.cursorPosition = 12
addVideoEvent.totalLength = 211
serverSide.execute(addVideoEvent)TCVideoAdEvent addVideoEvent = new TCVideoAdEvent(ETCVideoAdMode.video_ad_stop, "YOUR_VIDEO_SESSION_ID");
addVideoEvent.adAssetID = "456";
addVideoEvent.adPodID = "839";
addVideoEvent.cursorPosition = 12;
addVideoEvent.totalLength = 211;
serverSide.execute(addVideoEvent); TCVideoAdEvent *addVideoEvent = [[TCVideoAdEvent alloc] initWithMode: video_ad_stop andSessionId: @"YOUR_VIDEO_SESSION_ID"];
addVideoEvent.adAssetID = @"456";
addVideoEvent.adPodID = @"839";
addVideoEvent.cursorPosition = [[NSDecimalNumber alloc] initWithInt: 12];
addVideoEvent.totalLength = [[NSDecimalNumber alloc] initWithInt: 211];
[serverside execute: addVideoEvent];let addVideoEvent = TCVideoAdEvent(mode: video_ad_playing, andSessionId: "YOUR_VIDEO_SESSION_ID")
addVideoEvent?.adAssetID = "456"
addVideoEvent?.adPodID = "839"
addVideoEvent?.cursorPosition = 12
addVideoEvent?.totalLength = 211
serverSide?.execute(addVideoEvent)Annonce vidéo terminée
Cet événement est envoyé après que l'utilisateur a entièrement regardé la publicité vidéo. Notez que le cursor_position propriété a la même valeur que la total_length propriété.
{
"event_name": "video_ad_complete",
"user": {},
"video_session_id": "abcdef",
"ad_asset_id": "456",
"ad_pod_id": "XYA",
"ad_type": "pre-roll",
"video_title": "SmackDown!",
"cursor_position": 30,
"total_length": 30,
"publisher": "WWE",
"load_type": "linear"
}val addVideoEvent = TCVideoAdEvent(ETCVideoAdMode.video_ad_complete, "YOUR_VIDEO_SESSION_ID")
addVideoEvent.adAssetID = "456"
addVideoEvent.adPodID = "839"
addVideoEvent.cursorPosition = 12
addVideoEvent.totalLength = 211
serverSide.execute(addVideoEvent)TCVideoAdEvent addVideoEvent = new TCVideoAdEvent(ETCVideoAdMode.video_ad_complete, "YOUR_VIDEO_SESSION_ID");
addVideoEvent.adAssetID = "456";
addVideoEvent.adPodID = "839";
addVideoEvent.cursorPosition = 12;
addVideoEvent.totalLength = 211;
serverSide.execute(addVideoEvent); TCVideoAdEvent *addVideoEvent = [[TCVideoAdEvent alloc] initWithMode: video_ad_complete andSessionId: @"YOUR_VIDEO_SESSION_ID"];
addVideoEvent.adAssetID = @"456";
addVideoEvent.adPodID = @"839";
addVideoEvent.cursorPosition = [[NSDecimalNumber alloc] initWithInt: 12];
addVideoEvent.totalLength = [[NSDecimalNumber alloc] initWithInt: 211];
[serverside execute: addVideoEvent];let addVideoEvent = TCVideoAdEvent(mode: video_ad_complete, andSessionId: "YOUR_VIDEO_SESSION_ID")
addVideoEvent?.adAssetID = "456"
addVideoEvent?.adPodID = "839"
addVideoEvent?.cursorPosition = 12
addVideoEvent?.totalLength = 211
serverSide?.execute(addVideoEvent)Saut de publicité vidéo
Cet événement est envoyé lorsque l'utilisateur clique sur le bouton skip ad.
{
"event_name": "video_ad_skip",
"user": {},
"video_session_id": "abcdef",
"ad_asset_id": "456",
"ad_pod_id": "XYA",
"ad_type": "pre-roll",
"video_title": "SmackDown!",
"cursor_position": 20,
"total_length": 30,
"publisher": "WWE",
"load_type": "linear"
}val addVideoEvent = TCVideoAdEvent(ETCVideoAdMode.video_ad_skip, "YOUR_VIDEO_SESSION_ID")
addVideoEvent.adAssetID = "456"
addVideoEvent.adPodID = "839"
addVideoEvent.cursorPosition = 12
addVideoEvent.totalLength = 211
serverSide.execute(addVideoEvent)TCVideoAdEvent addVideoEvent = new TCVideoAdEvent(ETCVideoAdMode.video_ad_skip, "YOUR_VIDEO_SESSION_ID");
addVideoEvent.adAssetID = "456";
addVideoEvent.adPodID = "839";
addVideoEvent.cursorPosition = 12;
addVideoEvent.totalLength = 211;
serverSide.execute(addVideoEvent); TCVideoAdEvent *addVideoEvent = [[TCVideoAdEvent alloc] initWithMode: video_ad_skip andSessionId: @"YOUR_VIDEO_SESSION_ID"];
addVideoEvent.adAssetID = @"456";
addVideoEvent.adPodID = @"839";
addVideoEvent.cursorPosition = [[NSDecimalNumber alloc] initWithInt: 12];
addVideoEvent.totalLength = [[NSDecimalNumber alloc] initWithInt: 211];
[serverside execute: addVideoEvent];let addVideoEvent = TCVideoAdEvent(mode: video_ad_skip, andSessionId: "YOUR_VIDEO_SESSION_ID")
addVideoEvent?.adAssetID = "456"
addVideoEvent?.adPodID = "839"
addVideoEvent?.cursorPosition = 12
addVideoEvent?.totalLength = 211
serverSide?.execute(addVideoEvent)Début de la pause publicitaire vidéo
Cet événement est envoyé lorsqu'une pause publicitaire commence à être lue pendant la lecture de la vidéo.
Un événement exemple est présenté comme suit :
{
"event_name": "video_ad_break_start",
"user": {},
"video_session_id": "abcdef",
"ad_asset_id": "456",
"ad_pod_id": "XYA",
"ad_type": "pre-roll",
"video_title": "SmackDown!",
"cursor_position": 0,
"total_length": 30,
"publisher": "WWE",
"load_type": "linear"
}val addVideoEvent = TCVideoAdEvent(ETCVideoAdMode.video_ad_break_start, "YOUR_VIDEO_SESSION_ID")
addVideoEvent.adAssetID = "456"
addVideoEvent.adPodID = "839"
addVideoEvent.cursorPosition = 12
addVideoEvent.totalLength = 211
serverSide.execute(addVideoEvent)TCVideoAdEvent addVideoEvent = new TCVideoAdEvent(ETCVideoAdMode.video_ad_break_start, "YOUR_VIDEO_SESSION_ID");
addVideoEvent.adAssetID = "456";
addVideoEvent.adPodID = "839";
addVideoEvent.cursorPosition = 12;
addVideoEvent.totalLength = 211;
serverSide.execute(addVideoEvent); TCVideoAdEvent *addVideoEvent = [[TCVideoAdEvent alloc] initWithMode: video_ad_break_start andSessionId: @"YOUR_VIDEO_SESSION_ID"];
addVideoEvent.adAssetID = @"456";
addVideoEvent.adPodID = @"839";
addVideoEvent.cursorPosition = [[NSDecimalNumber alloc] initWithInt: 12];
addVideoEvent.totalLength = [[NSDecimalNumber alloc] initWithInt: 211];
[serverside execute: addVideoEvent];let addVideoEvent = TCVideoAdEvent(mode: video_ad_break_start, andSessionId: "YOUR_VIDEO_SESSION_ID")
addVideoEvent?.adAssetID = "456"
addVideoEvent?.adPodID = "839"
addVideoEvent?.cursorPosition = 12
addVideoEvent?.totalLength = 211
serverSide?.execute(addVideoEvent)Fin de la pause publicitaire vidéo
Cet événement est envoyé après que l'utilisateur a entièrement regardé le pod de publicité vidéo. Notez que le cursor_position propriété a la même valeur que la total_length propriété.
{
"event_name": "video_ad_break_complete",
"user": {},
"video_session_id": "abcdef",
"ad_asset_id": "456",
"ad_pod_id": "XYA",
"ad_type": "pre-roll",
"video_title": "SmackDown!",
"cursor_position": 30,
"total_length": 30,
"publisher": "WWE",
"load_type": "linear"
}val addVideoEvent = TCVideoAdEvent(ETCVideoAdMode.video_ad_break_complete, "YOUR_VIDEO_SESSION_ID")
addVideoEvent.adAssetID = "456"
addVideoEvent.adPodID = "839"
addVideoEvent.cursorPosition = 12
addVideoEvent.totalLength = 211
serverSide.execute(addVideoEvent)TCVideoAdEvent addVideoEvent = new TCVideoAdEvent(ETCVideoAdMode.video_ad_break_complete, "YOUR_VIDEO_SESSION_ID");
addVideoEvent.adAssetID = "456";
addVideoEvent.adPodID = "839";
addVideoEvent.cursorPosition = 12;
addVideoEvent.totalLength = 211;
serverSide.execute(addVideoEvent); TCVideoAdEvent *addVideoEvent = [[TCVideoAdEvent alloc] initWithMode: video_ad_break_complete andSessionId: @"YOUR_VIDEO_SESSION_ID"];
addVideoEvent.adAssetID = @"456";
addVideoEvent.adPodID = @"839";
addVideoEvent.cursorPosition = [[NSDecimalNumber alloc] initWithInt: 12];
addVideoEvent.totalLength = [[NSDecimalNumber alloc] initWithInt: 211];
[serverside execute: addVideoEvent];let addVideoEvent = TCVideoAdEvent(mode: video_ad_break_complete, andSessionId: "YOUR_VIDEO_SESSION_ID")
addVideoEvent?.adAssetID = "456"
addVideoEvent?.adPodID = "839"
addVideoEvent?.cursorPosition = 12
addVideoEvent?.totalLength = 211
serverSide?.execute(addVideoEvent)Clic sur la publicité vidéo
Cet événement est envoyé lorsque l'utilisateur clique sur la add.
{
"event_name": "video_ad_click",
"user": {},
"video_session_id": "abcdef",
"ad_asset_id": "456",
"ad_pod_id": "XYA",
"ad_type": "pre-roll",
"video_title": "SmackDown!",
"cursor_position": 20,
"total_length": 30,
"publisher": "WWE",
"load_type": "linear"
}val addVideoEvent = TCVideoAdEvent(ETCVideoAdMode.video_ad_click, "YOUR_VIDEO_SESSION_ID")
addVideoEvent.adAssetID = "456"
addVideoEvent.adPodID = "839"
addVideoEvent.cursorPosition = 12
addVideoEvent.totalLength = 211
serverSide.execute(addVideoEvent)TCVideoAdEvent addVideoEvent = new TCVideoAdEvent(ETCVideoAdMode.video_ad_click, "YOUR_VIDEO_SESSION_ID");
addVideoEvent.adAssetID = "456";
addVideoEvent.adPodID = "839";
addVideoEvent.cursorPosition = 12;
addVideoEvent.totalLength = 211;
serverSide.execute(addVideoEvent); TCVideoAdEvent *addVideoEvent = [[TCVideoAdEvent alloc] initWithMode: video_ad_click andSessionId: @"YOUR_VIDEO_SESSION_ID"];
addVideoEvent.adAssetID = @"456";
addVideoEvent.adPodID = @"839";
addVideoEvent.cursorPosition = [[NSDecimalNumber alloc] initWithInt: 12];
addVideoEvent.totalLength = [[NSDecimalNumber alloc] initWithInt: 211];
[serverside execute: addVideoEvent];let addVideoEvent = TCVideoAdEvent(mode: video_ad_click, andSessionId: "YOUR_VIDEO_SESSION_ID")
addVideoEvent?.adAssetID = "456"
addVideoEvent?.adPodID = "839"
addVideoEvent?.cursorPosition = 12
addVideoEvent?.totalLength = 211
serverSide?.execute(addVideoEvent)Settings
Définition des propriétés des événements
Tous les événements de paramètres partagent les mêmes propriétés qui décrivent l'état actuel du contenu vidéo avec lequel un utilisateur interagit pendant la lecture.
video_session_id
String
Oui
Un ID unique qui lie tous les événements générés à partir d'une session de lecture spécifique. Ces événements incluent les événements de lecture, de contenu et d'annonce.
content_asset_id
String
Oui
Désigne l'ID unique de l'actif de contenu vidéo.
content_pod_id
String
Non
Désigne l'ID unique du pod de contenu vidéo.
ad_asset_id
String
Non
Désigne l'ID unique de l'actif d'annonce.
ad_pod_id
String
Non
Désigne l'ID unique du pod d'annonce.
ad_type
String
Non
Désigne le type d'annonce diffusée au moment de
l'événement. Les valeurs peuvent être 'pre-roll', ' mid-roll', ou
'post-roll'.
video_title
String
Non
Désigne le titre du contenu vidéo.
video_description
String
Non
Décrit brièvement l'actif de contenu vidéo.
keywords
Tableau [String]
Non
Désigne les mots-clés pertinents associés à la
catégorisation du contenu vidéo
season
String
Non
Désigne le numéro de saison, si applicable.
episode
String
Non
Désigne le numéro d'épisode, si applicable.
video_category
String
Non
Désigne le genre de l'actif de contenu vidéo.
program
String
Non
Désigne le nom du programme / spectacle dont
le contenu vidéo fait partie.
publisher
String
Non
Désigne l'éditeur / créateur / auteur de
l'actif de contenu vidéo.
digital
String
Non
Désigne la chaîne dans laquelle le contenu vidéo
est diffusé.
full_episode
Boolean
Non
Définir à true l'actif de contenu vidéo est un épisode complet.
livestream
Boolean
Non
Si le contenu vidéo est un livestream, ceci est défini sur
true.
airdate
ISO 8601
Date String
Non
Désigne la date originale de diffusion / publication
du contenu vidéo.
cursor_position
Entier
Oui
Désigne la position actuelle du curseur dans le
contenu vidéo en secondes. Cela n'inclut pas
les annonces jouées pendant cette durée.
En cas de livestreams, référez-vous à la documentation de la destination concernée pour les détails sur la façon de transmettre cette propriété.
total_length
Entier
Oui
La durée totale du contenu vidéo en
secondes. Cela n'inclut aucune annonce incluse
dans la lecture de cet actif de contenu.
Pour la lecture en livestream, cela doit être défini sur null.
bitrate
Entier
Oui
Désigne le débit binaire actuel en kbps.
framerate
Float
Non
Désigne la fréquence d'images en fps.
sound
Entier
Oui
Dénote le niveau sonore actuel de la vidéo
Obligatoire dans video_volume événement
full_screen
Boolean
Oui
Dénote le mode d'écran actuel de la vidéo.
Obligatoire dans video_fullscreen_on et video_full_screen_off events
ad_enabled
Boolean
Non
Indique si les publicités étaient activées
image_quality
String
Oui
Dénote la résolution de qualité actuelle de la vidéo.
Obligatoire dans video_quality événement
Reprise de la lecture
Événements de paramètres
Cette section détaille tous les événements de paramètres vidéo.
Pour plus d'informations sur chacune des propriétés associées à ces événements, reportez-vous à la Propriétés des événements de paramètres section.
Volume vidéo
Cet événement est envoyé lorsque l'utilisateur modifie le volume audio du lecteur vidéo.
Un événement exemple est présenté ci-dessous :
{
"event_name": "video_volume",
"user": {},
"video_session_id": "98765",
"content_asset_id": ["0133370", "123456"],
"content_pod_id": ["CAA", "CAB", "CAD"],
"ad_asset_id": ["ad1", "ad0", "ad2"],
"ad_pod_id": ["adCAA", "adCAB", "adCAD"],
"ad_type": "mid-roll",
"cursor_position": 420,
"total_length": 600,
"bitrate": 128,
"framerate": 60.00,
"video_player": "vimeo",
"sound": 120,
"full_screen": false,
"ad_enabled": false,
"image_quality": "hd720",
"livestream": true
}val settingVideoEvent = TCVideoSettingEvent(ETCVideoSettingMode.video_volume, "YOUR_VIDEO_SESSION_ID")
settingVideoEvent.contentAssetID = "456"
settingVideoEvent.imageQuality = "720"
serverSide.execute(settingVideoEvent)TCVideoSettingEvent settingVideoEvent = new TCVideoSettingEvent(ETCVideoSettingMode.video_volume, "YOUR_VIDEO_SESSION_ID");
settingVideoEvent.contentAssetID = "456";
settingVideoEvent.imageQuality = "720";
serverSide.execute(settingVideoEvent); TCVideoSettingEvent *settingVideoEvent = [[TCVideoSettingEvent alloc] initWithMode: video_volume andSessionId: @"YOUR_VIDEO_SESSION_ID"];
settingVideoEvent.contentAssetID = @"456";
settingVideoEvent.imageQuality = @"720";
[serverside execute: settingVideoEvent];let settingVideoEvent = TCVideoSettingEvent(mode: video_volume, andSessionId: "YOUR_VIDEO_SESSION_ID")
settingVideoEvent?.contentAssetID = "456"
settingVideoEvent?.imageQuality = "720"
serverSide?.execute(settingVideoEvent)Vitesse vidéo
Cet événement est envoyé lorsque l'utilisateur modifie la vitesse du lecteur vidéo.
Un événement exemple est présenté ci-dessous :
{
"event_name": "video_speed",
"user": {},
"video_session_id": "98765",
"content_asset_id": ["0133370", "123456"],
"content_pod_id": ["CAA", "CAB", "CAD"],
"ad_asset_id": ["ad1", "ad0", "ad2"],
"ad_pod_id": ["adCAA", "adCAB", "adCAD"],
"ad_type": "mid-roll",
"cursor_position": 420,
"total_length": 600,
"bitrate": 128,
"framerate": 60.00,
"video_player": "vimeo",
"sound": 120,
"full_screen": false,
"ad_enabled": false,
"image_quality": "hd720",
"livestream": true
}val settingVideoEvent = TCVideoSettingEvent(ETCVideoSettingMode.video_speed, "YOUR_VIDEO_SESSION_ID")
settingVideoEvent.contentAssetID = "456"
settingVideoEvent.imageQuality = "720"
serverSide.execute(settingVideoEvent)TCVideoSettingEvent settingVideoEvent = new TCVideoSettingEvent(ETCVideoSettingMode.video_speed, "YOUR_VIDEO_SESSION_ID");
settingVideoEvent.contentAssetID = "456";
settingVideoEvent.imageQuality = "720";
serverSide.execute(settingVideoEvent); TCVideoSettingEvent *settingVideoEvent = [[TCVideoSettingEvent alloc] initWithMode: video_speed andSessionId: @"YOUR_VIDEO_SESSION_ID"];
settingVideoEvent.contentAssetID = @"456";
settingVideoEvent.imageQuality = @"720";
[serverside execute: settingVideoEvent];let settingVideoEvent = TCVideoSettingEvent(mode: video_speed, andSessionId: "YOUR_VIDEO_SESSION_ID")
settingVideoEvent?.contentAssetID = "456"
settingVideoEvent?.imageQuality = "720"
serverSide?.execute(settingVideoEvent)Sous-titres activés
Cet événement est envoyé lorsque l'utilisateur active les sous-titres du lecteur vidéo.
Un événement exemple est présenté ci-dessous :
{
"event_name": "video_subtitle_on",
"user": {},
"video_session_id": "98765",
"content_asset_id": ["0133370", "123456"],
"content_pod_id": ["CAA", "CAB", "CAD"],
"ad_asset_id": ["ad1", "ad0", "ad2"],
"ad_pod_id": ["adCAA", "adCAB", "adCAD"],
"ad_type": "pre-roll",
"cursor_position": 420,
"total_length": 600,
"bitrate": 128,
"framerate": 60.00,
"video_player": "vimeo",
"sound": 120,
"full_screen": false,
"ad_enabled": false,
"image_quality": "hd720",
"livestream": true
}val settingVideoEvent = TCVideoSettingEvent(ETCVideoSettingMode.video_subtitle_on, "YOUR_VIDEO_SESSION_ID")
settingVideoEvent.contentAssetID = "456"
settingVideoEvent.imageQuality = "720"
serverSide.execute(settingVideoEvent)TCVideoSettingEvent settingVideoEvent = new TCVideoSettingEvent(ETCVideoSettingMode.video_subtitle_on, "YOUR_VIDEO_SESSION_ID");
settingVideoEvent.contentAssetID = "456";
settingVideoEvent.imageQuality = "720";
serverSide.execute(settingVideoEvent); TCVideoSettingEvent *settingVideoEvent = [[TCVideoSettingEvent alloc] initWithMode: video_subtitle_on andSessionId: @"YOUR_VIDEO_SESSION_ID"];
settingVideoEvent.contentAssetID = @"456";
settingVideoEvent.imageQuality = @"720";
[serverside execute: settingVideoEvent];let settingVideoEvent = TCVideoSettingEvent(mode: video_subtitle_on, andSessionId: "YOUR_VIDEO_SESSION_ID")
settingVideoEvent?.contentAssetID = "456"
settingVideoEvent?.imageQuality = "720"
serverSide?.execute(settingVideoEvent)Sous-titres désactivés
Cet événement est envoyé lorsque l'utilisateur désactive les sous-titres du lecteur vidéo.
Un événement exemple est présenté ci-dessous :
{
"event_name": "video_subtitle_off",
"user": {},
"video_session_id": "98765",
"content_asset_id": ["0133370", "123456"],
"content_pod_id": ["CAA", "CAB", "CAD"],
"ad_asset_id": ["ad1", "ad0", "ad2"],
"ad_pod_id": ["adCAA", "adCAB", "adCAD"],
"ad_type": "post-roll",
"cursor_position": 420,
"total_length": 600,
"bitrate": 128,
"framerate": 60.00,
"video_player": "vimeo",
"sound": 120,
"full_screen": false,
"ad_enabled": false,
"image_quality": "hd720",
"livestream": true
}val settingVideoEvent = TCVideoSettingEvent(ETCVideoSettingMode.video_subtitle_off, "YOUR_VIDEO_SESSION_ID")
settingVideoEvent.contentAssetID = "456"
settingVideoEvent.imageQuality = "720"
serverSide.execute(settingVideoEvent)TCVideoSettingEvent settingVideoEvent = new TCVideoSettingEvent(ETCVideoSettingMode.video_subtitle_off, "YOUR_VIDEO_SESSION_ID");
settingVideoEvent.contentAssetID = "456";
settingVideoEvent.imageQuality = "720";
serverSide.execute(settingVideoEvent); TCVideoSettingEvent *settingVideoEvent = [[TCVideoSettingEvent alloc] initWithMode: video_subtitle_off andSessionId: @"YOUR_VIDEO_SESSION_ID"];
settingVideoEvent.contentAssetID = @"456";
settingVideoEvent.imageQuality = @"720";
[serverside execute: settingVideoEvent];let settingVideoEvent = TCVideoSettingEvent(mode: video_subtitle_off, andSessionId: "YOUR_VIDEO_SESSION_ID")
settingVideoEvent?.contentAssetID = "456"
settingVideoEvent?.imageQuality = "720"
serverSide?.execute(settingVideoEvent)Plein écran activé
Cet événement est envoyé lorsque l'utilisateur active la vue plein écran du lecteur vidéo.
Un événement exemple est présenté ci-dessous :
{
"event_name": "video_fullscreen_on",
"user": {},
"video_session_id": "98765",
"content_asset_id": ["0133370", "123456"],
"content_pod_id": ["CAA", "CAB", "CAD"],
"ad_asset_id": ["ad1", "ad0", "ad2"],
"ad_pod_id": ["adCAA", "adCAB", "adCAD"],
"ad_type": "post-roll",
"cursor_position": 420,
"total_length": 600,
"bitrate": 128,
"framerate": 60.00,
"video_player": "vimeo",
"sound": 120,
"full_screen": false,
"ad_enabled": false,
"image_quality": "hd720",
"livestream": true
}val settingVideoEvent = TCVideoSettingEvent(ETCVideoSettingMode.video_fullscreen_on, "YOUR_VIDEO_SESSION_ID")
settingVideoEvent.contentAssetID = "456"
settingVideoEvent.imageQuality = "720"
serverSide.execute(settingVideoEvent)TCVideoSettingEvent settingVideoEvent = new TCVideoSettingEvent(ETCVideoSettingMode.video_fullscreen_on, "YOUR_VIDEO_SESSION_ID");
settingVideoEvent.contentAssetID = "456";
settingVideoEvent.imageQuality = "720";
serverSide.execute(settingVideoEvent); TCVideoSettingEvent *settingVideoEvent = [[TCVideoSettingEvent alloc] initWithMode: video_fullscreen_on andSessionId: @"YOUR_VIDEO_SESSION_ID"];
settingVideoEvent.contentAssetID = @"456";
settingVideoEvent.imageQuality = @"720";
[serverside execute: settingVideoEvent];let settingVideoEvent = TCVideoSettingEvent(mode: video_fullscreen_on, andSessionId: "YOUR_VIDEO_SESSION_ID")
settingVideoEvent?.contentAssetID = "456"
settingVideoEvent?.imageQuality = "720"
serverSide?.execute(settingVideoEvent)Plein écran désactivé
Cet événement est envoyé lorsque l'utilisateur désactive la vue plein écran du lecteur vidéo.
Un événement exemple est présenté ci-dessous :
{
"event_name": "video_fullscreen_off",
"user": {},
"video_session_id": "98765",
"content_asset_id": ["0133370", "123456"],
"content_pod_id": ["CAA", "CAB", "CAD"],
"ad_asset_id": ["ad1", "ad0", "ad2"],
"ad_pod_id": ["adCAA", "adCAB", "adCAD"],
"ad_type": "pre-roll",
"cursor_position": 420,
"total_length": 600,
"bitrate": 128,
"framerate": 60.00,
"video_player": "vimeo",
"sound": 120,
"full_screen": false,
"ad_enabled": false,
"image_quality": "hd720",
"livestream": true
}val settingVideoEvent = TCVideoSettingEvent(ETCVideoSettingMode.video_fullscreen_off, "YOUR_VIDEO_SESSION_ID")
settingVideoEvent.contentAssetID = "456"
settingVideoEvent.imageQuality = "720"
serverSide.execute(settingVideoEvent)TCVideoSettingEvent settingVideoEvent = new TCVideoSettingEvent(ETCVideoSettingMode.video_fullscreen_off, "YOUR_VIDEO_SESSION_ID");
settingVideoEvent.contentAssetID = "456";
settingVideoEvent.imageQuality = "720";
serverSide.execute(settingVideoEvent); TCVideoSettingEvent *settingVideoEvent = [[TCVideoSettingEvent alloc] initWithMode: video_fullscreen_off andSessionId: @"YOUR_VIDEO_SESSION_ID"];
settingVideoEvent.contentAssetID = @"456";
settingVideoEvent.imageQuality = @"720";
[serverside execute: settingVideoEvent];let settingVideoEvent = TCVideoSettingEvent(mode: video_fullscreen_on, andSessionId: "YOUR_VIDEO_SESSION_ID")
settingVideoEvent?.contentAssetID = "456"
settingVideoEvent?.imageQuality = "720"
serverSide?.execute(settingVideoEvent)Qualité vidéo
Cet événement est envoyé lorsque la qualité vidéo du lecteur est modifiée.
Un événement exemple est présenté ci-dessous :
{
"event_name": "video_quality",
"user": {},
"video_session_id": "98765",
"content_asset_id": ["0133370", "123456"],
"content_pod_id": ["CAA", "CAB", "CAD"],
"ad_asset_id": ["ad1", "ad0", "ad2"],
"ad_pod_id": ["adCAA", "adCAB", "adCAD"],
"ad_type": "mid-roll",
"cursor_position": 420,
"total_length": 600,
"bitrate": 128,
"framerate": 60.00,
"video_player": "vimeo",
"sound": 120,
"full_screen": false,
"ad_enabled": false,
"image_quality": "hd720",
"livestream": true
}val settingVideoEvent = TCVideoSettingEvent(ETCVideoSettingMode.video_quality, "YOUR_VIDEO_SESSION_ID")
settingVideoEvent.contentAssetID = "456"
settingVideoEvent.imageQuality = "720"
serverSide.execute(settingVideoEvent)TCVideoSettingEvent settingVideoEvent = new TCVideoSettingEvent(ETCVideoSettingMode.video_quality, "YOUR_VIDEO_SESSION_ID");
settingVideoEvent.contentAssetID = "456";
settingVideoEvent.imageQuality = "720";
serverSide.execute(settingVideoEvent); TCVideoSettingEvent *settingVideoEvent = [[TCVideoSettingEvent alloc] initWithMode: video_quality andSessionId: @"YOUR_VIDEO_SESSION_ID"];
settingVideoEvent.contentAssetID = @"456";
settingVideoEvent.imageQuality = @"720";
[serverside execute: settingVideoEvent];let settingVideoEvent = TCVideoSettingEvent(mode: video_quality, andSessionId: "YOUR_VIDEO_SESSION_ID")
settingVideoEvent?.contentAssetID = "456"
settingVideoEvent?.imageQuality = "720"
serverSide?.execute(settingVideoEvent)Partage de vidéo
Cet événement est envoyé lorsque la vidéo est partagée par l'utilisateur.
Un événement exemple est présenté ci-dessous :
{
"event_name": "video_share",
"user": {},
"video_session_id": "98765",
"content_asset_id": ["0133370", "123456"],
"content_pod_id": ["CAA", "CAB", "CAD"],
"cursor_position": 420,
"total_length": 600,
"bitrate": 128,
"framerate": 60.00,
"video_player": "vimeo",
"sound": 120,
"full_screen": false,
"ad_enabled": false,
"image_quality": "hd720",
"livestream": true
}val settingVideoEvent = TCVideoSettingEvent(ETCVideoSettingMode.video_share, "YOUR_VIDEO_SESSION_ID")
settingVideoEvent.contentAssetID = "456"
settingVideoEvent.imageQuality = "720"
serverSide.execute(settingVideoEvent)TCVideoSettingEvent settingVideoEvent = new TCVideoSettingEvent(ETCVideoSettingMode.video_share, "YOUR_VIDEO_SESSION_ID");
settingVideoEvent.contentAssetID = "456";
settingVideoEvent.imageQuality = "720";
serverSide.execute(settingVideoEvent); TCVideoSettingEvent *settingVideoEvent = [[TCVideoSettingEvent alloc] initWithMode: video_share andSessionId: @"YOUR_VIDEO_SESSION_ID"];
settingVideoEvent.contentAssetID = @"456";
settingVideoEvent.imageQuality = @"720";
[serverside execute: settingVideoEvent];let settingVideoEvent = TCVideoSettingEvent(mode: video_share, andSessionId: "YOUR_VIDEO_SESSION_ID")
settingVideoEvent?.contentAssetID = "456"
settingVideoEvent?.imageQuality = "720"
serverSide?.execute(settingVideoEvent)Reprise de la lecture
Chaque Video Playback Resumed l'événement doit être suivi par un événement Contenu vidéo en lecture ou un Annonce vidéo en lecture event, en fonction de l'asset vers lequel la lecture reprend.
Qualité vidéo
Commanders Act vous permet également de suivre et d'analyser la performance et la qualité de votre contenu vidéo pendant la lecture.
Chaque fois qu'un utilisateur change la qualité vidéo pendant la lecture, vous pouvez suivre un événement Video Quality Updated avec les propriétés suivantes :
bitrate: Dénote le débit binaire mis à jour enkbps.framerate: Dénote la fréquence d'images mise à jour enfps.startupTime: Dénote le moment où la qualité vidéo a été modifiée par l'utilisateur.droppedFrames: Indique si des images ont été perdues lors du changement de qualité vidéo.
Cycle de vie des événements
Le flux d'événements suivant montre comment vous pouvez implémenter la spécification vidéo de Commanders Act :
1. L'utilisateur appuie sur play sur un lecteur vidéo
cact("trigger","video_start", {
video_session_id: "12345",
content_asset_id: ["123"],
content_pod_id: ["BAA"],
ad_asset_id: ["ad1"],
ad_pod_id: ["adCAA"],
ad_type: "mid-roll",
cursor_position: 0,
total_length: 300,
bitrate: 128,
video_player: "youtube",
sound: 67,
full_screen: true,
ad_enabled: false,
image_quality: "hd1080",
});2. La lecture vidéo commence à jouer le contenu
cact("trigger","video_content_start", {
video_session_id: "12345",
content_asset_id: "123",
content_pod_id: "CAA",
video_title: "Raw is War!!",
video_description: "Sample description",
keywords: ["wrestling", "entertainment"],
season: "1",
episode: "90",
video_category: "entertainment",
program: "WWE",
publisher: "WWE",
cursor_position: 0,
total_length: 300,
channel: "ten",
full_episode: true,
livestream: false,
airdate: "2020-04-23",
});3. L'utilisateur regarde le contenu pendant 10 secondes suivi d'un heartbeat de 10 secondes
cact("trigger","video_content_playing", {
video_session_id: "12345",
content_asset_id: "123",
content_pod_id: "CAA",
video_title: "Raw is War!!",
video_description: "Sample description",
keywords: ["wrestling", "entertainment"],
season: "1",
episode: "90",
video_category: "entertainment",
program: "WWE",
publisher: "WWE",
cursor_position: 10,
total_length: 300,
channel: "ten",
full_episode: true,
livestream: false,
airdate: "2020-04-23",
})4. La lecture vidéo est mise en pause
cact("trigger","video_pause", {
video_session_id: "12345",
content_asset_id: "123",
content_pod_id: "CAA",
ad_asset_id: null,
ad_pod_id: null,
ad_type: null,
cursor_position: 11,
total_length: 300,
video_player: "youtube",
sound: 66,
bitrate: 128,
full_screen: true,
ad_enabled: false,
image_quality: "hd1080",
});5. L'utilisateur reprend la lecture vidéo.
cact("trigger","video_resume", {
video_session_id: "12345",
content_asset_id: "123",
content_pod_id: "CAA",
ad_asset_id: null,
ad_pod_id: null,
ad_type: null,
cursor_position: 11,
total_length: 300,
video_player: "youtube",
sound: 66,
bitrate: 128,
full_screen: true,
ad_enabled: false,
image_quality: "hd1080",
});6. Une pub (mid-roll) commence à être lue après que l'utilisateur a repris la lecture
cact("trigger","video_ad_start", {
video_session_id: "12345",
ad_asset_id: "ad1",
ad_pod_id: "adCAA",
ad_type: "mid-roll",
video_title: "Thums Up",
publisher: "Coca Cola",
cursor_position: 0,
total_length: 15,
load_type: "linear",
});7. L'utilisateur regarde complètement la publicité de 15 secondes. Commanders Act suit également les heartbeats de 10 secondes.
cact("trigger","video_ad_playing", {
video_session_id: "12345",
ad_asset_id: "ad1",
ad_pod_id: "adCAA",
ad_type: "mid-roll",
video_title: "Thums Up",
publisher: "Coca Cola",
cursor_position: 10,
total_length: 15,
load_type: "linear",
});8. La publicité vidéo est lue intégralement.
cact("trigger","video_ad_complete", {
video_session_id: "12345",
ad_asset_id: "ad1",
ad_pod_id: "adCAA",
ad_type: "mid-roll",
video_title: "Thums Up",
publisher: "Coca Cola",
cursor_position: 15,
total_length: 15,
load_type: "linear",
})9. La lecture du contenu vidéo reprend. Des heartbeats sont envoyés toutes les 10 secondes.
cact("trigger","video_content_playing", {
video_session_id: "12345",
content_asset_id: "123",
content_pod_id: "CAA",
video_title: "Raw is War!!",
video_description: "Sample description",
keywords: ["wrestling", "entertainment"],
season: "1",
episode: "90",
video_category: "entertainment",
program: "WWE",
publisher: "WWE",
cursor_position: 11,
total_length: 300,
channel: "ten",
full_episode: true,
livestream: false,
airdate: "2020-04-23",
})10. L'utilisateur termine le visionnage de l'intégralité du contenu vidéo.
cact("trigger","video_content_complete", {
video_session_id: "12345",
content_asset_id: "123",
content_pod_id: "CAA",
video_title: "Raw is War!!",
video_description: "Sample description",
keywords: ["wrestling", "entertainment"],
season: "1",
episode: "90",
video_category: "entertainment",
program: "WWE",
publisher: "WWE",
cursor_position: 300,
total_length: 300,
channel: "ten",
full_episode: true,
livestream: false,
airdate: "2020-04-23",
})11. La lecture vidéo se termine.
cact("trigger","video_complete", {
video_session_id: "12345",
content_asset_id: null,
content_pod_id: null,
ad_asset_id: "ad1",
ad_pod_id: "adCAA",
ad_type: null,
cursor_position: 300,
total_length: 300,
sound: 66,
bitrate: 128,
full_screen: true,
video_player: "youtube",
ad_enabled: false,
image_quality: "hd1080",
})FAQ
Qu'est-ce que les publicités pre-roll, mid-roll et post-roll ?
Les publicités qui apparaissent avant le début de la lecture vidéo sont appelées pre-roll ads.
Les publicités qui apparaissent au milieu de la lecture sont des mid-roll ads.
Les publicités qui apparaissent après la lecture vidéo sont appelées post-roll ads.
Ces publicités peuvent être une vidéo promotionnelle par les sponsors ou un contenu proposé par le fournisseur de contenu.
Mis à jour
Ce contenu vous a-t-il été utile ?