Les marqueurs SCTE servent principalement à insérer des publicités dans le flux vidéo en indiquant au récepteur (par exemple, un serveur Streaming) à quel moment insérer les publicités et pendant combien de temps. Cela permet à des systèmes tiers de sélectionner dynamiquement des publicités à partir d'une base de données. Pour en savoir plus sur le protocole SCTE-35 en général sur ce site web.
Dans cet article :
→ Introduction
→ Exemples de marqueurs SCTE-35
→ Tester localement le marqueur SCTE-35
→ Test du marqueur SCTE-35 dans Nimble Streamer
→ Informations complémentaires
Introduction
Nous vous recommandons également notre article général sur la SCTE.
Vous pouvez associer un marqueur SCTE à 4 objets différents dans PLAYDECK :
– Clips (n'importe quelle position)
– Blocs (début et fin)
– Superpositions (Afficher et masquer)
– Boutons d'action
Au lieu de vous fournir un marqueur SCTE prédéfini, nous avons opté pour une approche différente : vous devez créer votre propre marqueur SCTE. Cela peut demander un petit temps d'adaptation, mais au final, cette solution offre beaucoup plus de flexibilité. L'avantage est que vous serez toujours compatible avec tous les récepteurs. Pour recueillir la durée des clips et d'autres “ variables ”, nous mettons à votre disposition certains “ espaces réservés ”.
Veuillez noter que la fonction SCTE doit être activée dans les options de votre Stream :

Exemples de marqueurs SCTE-35
Examinons quelques exemples de SCTE-35. Il s'agit de la forme la plus couramment utilisée du SCTE-35, appelée “ Splicing ”.
Remarque : Le format SCTE-35 présenté ici fonctionne de manière optimale avec le Nimble Streamer (voir ci-dessous). Selon votre serveur Stream, le format peut varier. Renseignez-vous auprès de votre fournisseur.
Cela permettra d'insérer une publicité et de revenir automatiquement à votre programme une fois la durée indiquée écoulée. La durée sera définie automatiquement par PLAYDECK en fonction du clip en cours de lecture. Vous pouvez la remplacer par {blockduration} ou par une valeur saisie manuellement. Si vous choisissez une valeur manuelle pour la durée, la formule est la suivante : DURÉE DU CLIP multipliée par 90 000, puis arrondie. En effet, 90 000 correspond à l'échelle de temps par défaut utilisée par la plupart des systèmes SCTE. Exemple : si le clip dure 12,4 secondes, la durée SCTE sera de 1 116 000.
Au lieu d'envoyer une durée, vous pouvez également envoyer deux marqueurs SCTE distincts pour marquer le début et la fin de la publicité. Ceux-ci sont appelés « CUE-OUT » (passage de votre émission à la publicité) et « CUE-IN » (retour à votre émission).
Comme vous l’avez sans doute déjà remarqué, la seule différence réside dans la valeur de “ outOfNetworkIndicator ”, qui peut être 1 (CUE-OUT) ou 0 (CUE-IN). Le système SCTE se charge lui-même d’associer les deux marqueurs en fonction de l“” spliceEventId ».
Remarque : Les variables de remplacement prises en charge sont les suivantes : {timestamp} {timestampunix} {airtimenext} {airtimenextunix} {plannednext} {plannednextunix} {clipid} {blockid} {blockduration} {clipduration}
Tester localement le marqueur SCTE-35
Ouvrez PLAYDECK. Vous n'avez pas besoin de charger de clips pour l'instant. Cliquez avec le bouton droit sur n'importe quel bouton ACTION, créez une nouvelle action et sélectionnez COMMANDES/SCTE :

Insérez la balise d'échantillon SCTE-35 en cliquant sur SCTE-35. Fermez les fenêtres contextuelles en cliquant deux fois sur « OK » :

Nous sommes désormais en mesure d'envoyer une balise SCTE-35 à n'importe quel Stream compatible (UDP, DVB, SRT). Si vous cliquez sur « Action » pour l'instant, rien ne se passera, car nous ne disposons pas encore d'un Stream.
Créons un test UDP Stream, dans lequel nous nous contenterons d’enregistrer la sortie dans un fichier, afin de ne pas avoir à nous occuper (pour l’instant) des aspects liés au serveur. Copiez les paramètres ci-dessous et lancez le Stream en cliquant sur “ START NOW ”. N’oubliez pas d’activer le SCTE-35 avec « Paramètre » :

Nous souhaitons maintenant envoyer notre étiquette « Sample SCTE-35 » au Stream. Fermez donc les paramètres et cliquez plusieurs fois sur le bouton d'action, puis revenez dans les paramètres et arrêtez votre Stream à l'aide de la commande « STOP NOW ».
Vos balises SCTE-35 ont été enregistrées par PLAYDECK. Vous pouvez consulter les journaux en revenant à votre code SCTE-35 via le bouton « Action », puis en cliquant sur « OUVRIR LES JOURNAUX D'ÉVÉNEMENTS » :

Vous pouvez également afficher les balises SCTE-35 présentes dans votre fichier Stream enregistré. Pour cela, vous aurez besoin d’un outil distinct appelé “ DVBInspector ”. Cet outil nécessite également le runtime Java ; veuillez donc télécharger les deux éléments suivants :
Cet outil nécessite le runtime Java. S'il n'est pas encore installé, vous pouvez le télécharger ici :
https://www.oracle.com/java/technologies/downloads/
Décompressez maintenant votre fichier “ DVBinspector-1.18.0-dist.zip ” (ou similaire) et lancez “ DVBinspector-1.18.0.jar ”. Ensuite, glissez-déposez votre fichier TS dans l'application. Ouvrez l'arborescence comme suit pour afficher votre marqueur SCTE.

Test du marqueur SCTE-35 dans Nimble Streamer
Nimble Streamer est notre service Streaming de prédilection. Il est économique, facile à configurer et à entretenir, tout en offrant suffisamment de fonctionnalités avancées pour répondre aux cas d'utilisation complexes :
Installez la version d'essai de 14 jours de Nimble sur la même machine que celle sur laquelle PLAYDECK est en cours d'exécution. Ce n'est pas obligatoire, mais cela simplifie les choses, car vous n'avez pas à vous soucier de la configuration réseau. Nimble vous demandera également de créer un compte sur WMSPanel, un outil de configuration en ligne dédié à Nimble, car le Nimble Streamer s'installe sans interface utilisateur.
INFO : Pour que cet exemple SCTE-35 fonctionne, vous n'avez PAS besoin des plug-ins “ Nimble Live Transcoder ” ou “ Nimble Advertizer ” si vous le testez sur une installation en production. Ceux-ci sont désactivés par défaut dans la version d'essai.
Une fois que Nimble est opérationnel, il vous reste un réglage à effectuer manuellement. Ouvrez le fichier de configuration du serveur Nimble à l'emplacement suivant :
c:\Program Files\Nimble Streamer\conf\nimble.conf
À la fin de ce fichier, ajoutez les lignes suivantes et enregistrez le fichier.
scte35_processing_enabled = true
scte35_forwarding_enabled = true
hls_ad_scte35_forwarding_enabled = true
hls_ad_marker_format = cue
hls_ad_splice_out_cont_marker_enabled = true
Important : Vous devez maintenant redémarrer Nimble, soit en redémarrant votre PC, soit en redémarrant manuellement le service Windows “ Nimble Streamer ”.
Voici à nouveau les lignes, mais avec des commentaires à votre intention (ne les utilisez pas) :
scte35_processing_enabled = true // Active le module SCTE de manière générale. Nécessaire pour toutes les autres options
scte35_forwarding_enabled = true // Permet de transmettre les marqueurs SCTE-35 via Live Transcoder
hls_ad_scte35_forwarding_enabled = true // Active le transfert des marqueurs SCTE-35 vers les flux HLS
hls_ad_marker_format = cue // Configure Nimble pour qu’il utilise les marqueurs CUE-OUT et CUE-IN
hls_ad_splice_out_cont_marker_enabled = true // Active l'insertion automatique de EXT-X-CUE-OUT-CONT
Configurons maintenant votre Streams dans WMSPanel :
Nous allons tout d'abord définir notre flux entrant Stream. Accédez à “ Nimble Streamer ” dans le menu, sélectionnez “ MPEGTS In ”, puis cliquez sur le bouton “ Add UDP stream ” et ajoutez le flux entrant comme suit. Vous pouvez utiliser n'importe quel autre port si le port 5001 est déjà utilisé.

Nous allons maintenant configurer le format du flux sortant. Nous souhaitons utiliser le protocole HLS ici pour illustrer la conversion du marqueur SCTE de UDP vers HLS. Sur la même page, rendez-vous dans la section “ MPEGTS Out ” et cliquez sur le bouton “ Ajouter un flux sortant ”, puis procédez comme suit. Veillez à sélectionner votre flux d'entrée comme source vidéo et audio.

Nous allons maintenant poursuivre notre configuration dans PLAYDECK. Accédez aux paramètres de sortie du Stream et remplacez l'URL du Stream par “ udp://127.0.0.1:5001 ”.
INFO : Vous pouvez choisir le codec vidéo de votre choix. Dans ce cas précis, j'ai opté pour le H.264 afin de confier l'encodage à ma carte graphique NVIDIA, ce qui permettra de réduire la charge sur mon processeur. Activez également le SCTE-35 dans la section “ Paramètres ”.

INFO : Veuillez noter que PLAYDECK ne prend pas en charge la diffusion directe en HLS. Si vous sélectionnez “ Apple HTTP Live Streaming ” comme format de diffusion, le flux de sortie sera enregistré dans un fichier. Vous devez donc spécifier un emplacement de fichier comme “ URL de diffusion ”, par exemple “ c:\Users\Public\Documents\stream.m3u8 ”. Utilisez ensuite ce fichier pour diffuser le flux via n’importe quel serveur de streaming. PLAYDECK ne peut pas écrire de balises SCTE HLS dans le fichier manifeste HLS (le fichier *.3u8).
Ensuite, nous souhaitons que PLAYDECK envoie automatiquement des signaux SCTE, non seulement via un bouton, mais également en fonction des clips. Pour cela, nous insérons n’importe quel clip, puis nous cliquons sur l’icône COMMANDES dans la barre d’outils. Nous ajoutons ensuite une nouvelle commande, sélectionnons PLAY TIME 0, puis insérons l’échantillon SCTE-35 :

INFO : Vous pouvez également ajouter des marqueurs SCTE aux blocs, aux superpositions et aux boutons d'action.
Bon, c'est parti : lancez la lecture du clip et activez le Stream dans les paramètres de PLAYDECK. Rendez-vous dans le WMSPanel et ouvrez, depuis le menu “ Nimble Streamer ”, l'option “ Live Streams ”. Vous verrez alors apparaître un flux en direct. Cliquez dessus, puis sélectionnez le point d'interrogation situé à l'extrême droite, comme ceci.

Dans la liste des “ URL à lire ”, sélectionnez celle qui se termine par “ playlist.m3u8 ” et cliquez sur “ Copier ”. Collez ensuite cette URL dans n'importe quel navigateur disposant d'un lecteur HLS intégré ou installé. Pour cet exemple, nous utilisons le navigateur CHROME avec l'extension de lecteur HLS suivante :
https://chromewebstore.google.com/detail/hls-player-m3u8-streaming/eakdijdofmnclopcffkkgmndadhbjgka
Une fois que vous aurez saisi cette URL dans Chrome, vous verrez immédiatement votre flux PLAYDECK se lancer. Je vais maintenant vous montrer comment surveiller votre marqueur SCTE. Dans Chrome, appuyez sur F12 pour ouvrir les outils de développement. En haut, cliquez sur l’onglet “ Réseau ”. Vous verrez alors plusieurs fichiers “ chunks.m3u8 ”, qui font partie de votre flux. Cliquez sur l’un de ces fichiers “ chunk ” (également appelés « manifeste HLS ») et sélectionnez « Aperçu » à côté. Vous verrez alors apparaître la balise SCTE HLS. Si elle n’apparaît pas, cliquez sur un autre fichier « chunk », car nous n’envoyons la balise SCTE qu’au début de chaque clip.

Et voilà ! Nous avons atteint nos objectifs de test. Vous trouverez ci-dessous des informations supplémentaires qui pourraient vous intéresser.
Informations complémentaires
Connexion à PLAYDECK
Nous enregistrons toutes les balises SCTE entrantes et sortantes. Cela vous permet également de tester vos balises SCTE sortantes en bouclant simplement votre sortie vers une entrée (SDI ou Streams), et de laisser PLAYDECK détecter vos balises SCTE. Vous pouvez ouvrir les fichiers journaux via le menu principal “ Logs ” :

Connexion à Nimble Streamer
Si un problème survient ou si quelque chose ne se passe pas comme prévu, la première chose à faire est de consulter les fichiers journaux de Nimble. Sous Windows, ces fichiers se trouvent ici :
c:\Program Files\Nimble Streamer\log
La journalisation est activée par défaut dans la version d'essai de Nimble, mais si vous devez l'activer, voici les paramètres à définir dans le fichier “ nimble.conf ”.
log_access = fichier
logging = débogage
Ouvrez maintenant le fichier journal et recherchez “ SCTE ”. Vous pourriez voir quelque chose comme ceci, ce qui indique qu’il y a une faute de frappe dans votre marqueur SCTE dans PLAYDECK :
[SCTE35] Commande de raccordement non prise en charge (type=6) pour [mynewapp/mynewstream]
Si votre marqueur SCTE a été analysé avec succès dans Nimble, il se présentera comme suit :
[SCTE35] splice_insert : event_id=4157 oon=1 immediate=1 pts_adjustment=0 pts=0 actual_pts=202593600 duration=2707200 data=0xfc....
Outil : TSDuck
Il s'agit d'une suite d'outils et de plugins dotée d'une vaste bibliothèque permettant de manipuler des flux de transport MPEG. Grâce à elle, vous pourrez insérer des marqueurs SCTE en dehors de PLAYDECK en vous appuyant sur un algorithme ou une autre logique complexe.
Outil : x9k3
Cet outil permet également de convertir les balises SCTE-35 présentes dans les fichiers UDP Streams ou MPEG-TS en balises SCTE HLS. Cela vous permet de mettre en place un serveur de streaming qui ne dispose pas de conversion automatique de SCTE-35 vers HLS.