Les marqueurs SCTE servent principalement à insérer des publicités dans le flux vidéo en indiquant au récepteur (par exemple, un serveur de 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 la norme 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 certain 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 fournissons certains “ espaces réservés ”.
Veuillez noter que la fonction SCTE doit être activée dans vos options de streaming :

Exemples de marqueurs SCTE-35
Examinons quelques exemples de SCTE-35. Il s'agit de la variante la plus courante de la norme SCTE-35, appelée “ épissure ”.
Remarque : Le format SCTE-35 présenté ici fonctionne de manière optimale avec Nimble Streamer (voir ci-dessous). Selon votre serveur de streaming, le format peut varier. Renseignez-vous auprès de votre fournisseur.
Cela insérera une publicité et vous ramènera 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 90000 et arrondie. La raison en est que 90000 est l'échelle de temps par défaut utilisée par la plupart des systèmes SCTE. Exemple : le clip dure 12,4 secondes, la durée SCTE serait donc de 1116000.
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 de coupler 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. Faites un clic 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 flux compatible (UDP, DVB, SRT). Si vous cliquez sur « Action » pour l'instant, rien ne se passera, car nous n'avons pas encore de flux.
Créons un flux UDP de test, 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 flux en cliquant sur “ START NOW ”. N'oubliez pas d'activer SCTE-35 dans le champ « Paramètre » :

Nous souhaitons maintenant envoyer notre balise SCTE-35 d'exemple au flux. Fermez donc les paramètres et cliquez plusieurs fois sur le bouton d'action, puis retournez dans les paramètres et arrêtez votre flux en cliquant sur « ARRÊTER MAINTENANT ».
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 flux enregistré. Pour cela, il vous faut un outil distinct appelé “ DVBInspector ”. Cet outil nécessite également le runtime Java ; veuillez donc télécharger les deux :
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 ”. Glissez-déposez ensuite 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 de streaming de prédilection. Il est économique, facile à configurer et à entretenir, tout en offrant suffisamment de fonctionnalités avancées pour répondre aux besoins les plus 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. Ils 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 redémarrer Nimble dès maintenant, 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 le transfert des 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 vos flux dans WMSPanel :
Nous allons tout d'abord définir notre flux entrant. Rendez-vous dans “ Nimble Streamer ” dans le menu, sélectionnez “ MPEGTS In ”, puis cliquez sur le bouton “ Ajouter un flux UDP ” et configurez 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 de sortie. Nous souhaitons utiliser HLS ici pour illustrer la conversion du marqueur SCTE de UDP vers HLS. Sur la même page, accédez à “ MPEGTS Out ” et cliquez sur le bouton “ Ajouter un flux sortant ”, puis effectuez l'ajout comme suit. Veillez à sélectionner votre flux d'entrée comme source vidéo et audio.

Nous allons maintenant poursuivre la configuration dans PLAYDECK. Accédez aux paramètres de sortie du flux et remplacez l'URL du flux 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 laisser mon GPU NVIDIA se charger de l'encodage, ce qui réduira l'utilisation de mon processeur. Activez également SCTE-35 dans l'onglet “ 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 sera enregistré dans un fichier. Vous devez donc spécifier une destination de fichier comme “ URL de diffusion ”, par exemple “ c:\Users\Public\Documents\stream.m3u8 ”. Utilisez ensuite ce fichier pour diffuser le flux à l'aide de n'importe quel serveur de streaming. PLAYDECK n'est pas en mesure d'écrire des balises SCTE HLS dans le fichier manifeste HLS (le fichier *.3u8).
Nous souhaitons ensuite que PLAYDECK envoie automatiquement des signaux SCTE, non seulement via un bouton, mais aussi en fonction des clips. Pour cela, insérez n'importe quel clip, cliquez sur l'icône COMMANDES dans la barre d'outils, ajoutez une nouvelle commande, sélectionnez PLAY TIME 0, puis insérez l'exemple SCTE-35 :

INFO : Vous pouvez également ajouter des marqueurs SCTE aux blocs, aux superpositions et aux boutons d'action.
C'est parti : lancez la lecture du clip et démarrez la diffusion en direct dans les paramètres de PLAYDECK. Rendez-vous dans le WMSPanel et ouvrez l'option “ Live Streams ” dans le menu “ Nimble Streamer ”. Vous verrez alors un flux en direct en cours. Cliquez dessus et 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é. Dans 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 des fichiers chunk (également appelés manifeste HLS) et sélectionnez “ Aperçu ” à côté. Vous verrez alors la balise SCTE HLS. Si elle n'apparaît pas, cliquez sur un autre chunk, car nous n'envoyons le SCTE qu'au début du 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 flux), et de laisser PLAYDECK détecter vos balises SCTE. Vous pouvez ouvrir les fichiers journaux via le menu principal “ Logs ” :

Journalisation dans 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, le fichier journal se trouve 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 options à utiliser 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 de 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 les 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 marqueurs SCTE-35 présents dans les flux UDP ou les fichiers MPEG-TS en balises HLS SCTE. Cela vous permet de mettre en place un serveur de streaming qui ne dispose pas de conversion automatique SCTE-35 vers HLS.