SCTE-Marker werden hauptsächlich dazu verwendet, Werbung in den Videoausgang einzufügen, indem sie dem Empfänger (z. B. einem Streaming-Server) signalisieren, zu welchem Zeitpunkt und mit welcher Dauer Werbung eingefügt werden soll. Dies ermöglicht es Systemen von Drittanbietern, Werbung dynamisch aus einer Datenbank auszuwählen. Weitere Informationen zu SCTE-35 im Allgemeinen finden Sie hier auf dieser Website.
In diesem Artikel:
→ Einleitung
→ Beispiele für SCTE-35-Marker
→ SCTE-35-Marker lokal testen
→ SCTE-35-Marker in Nimble Streamer testen
→ Weitere Informationen
Einleitung
Wir empfehlen außerdem unser allgemeiner Artikel über SCTE.
Sie können SCTE-Marker in PLAYDECK an vier verschiedene Objekte anbringen:
– Clips (beliebige Position)
– Blöcke (Anfang und Ende)
– Overlays (Ein- und ausblenden)
– Aktionsschaltflächen
Anstatt Ihnen vordefinierte SCTE-Marker zur Verfügung zu stellen, haben wir uns für einen anderen Ansatz entschieden: Sie müssen Ihre eigenen SCTE-Marker erstellen. Das mag zunächst etwas Einarbeitungszeit erfordern, bietet aber letztendlich viel mehr Flexibilität. Der Vorteil ist, dass Sie immer mit allen Empfängern kompatibel sind. Zum Erfassen der Clip-Dauer und anderer “Variablen” stellen wir bestimmte “Platzhalter” zur Verfügung.
Bitte beachten Sie, dass SCTE in Ihren Stream-Optionen aktiviert sein muss:

Beispiele für SCTE-35-Marker
Sehen wir uns ein Beispiel für SCTE-35 an. Es handelt sich um die am häufigsten verwendete Form von SCTE-35, die als “Splicing” bezeichnet wird.
Hinweis: Das hier vorgestellte SCTE-35-Format funktioniert am besten mit Nimble Streamer (siehe unten). Je nach Ihrem Stream-Server kann das Format abweichen. Fragen Sie Ihren Anbieter.
Dadurch wird eine Werbung eingefügt und das Programm nach Ablauf der angegebenen Dauer automatisch fortgesetzt. Die Dauer wird von PLAYDECK automatisch für den aktuell abgespielten Clip festgelegt. Diese kann durch {blockduration} oder einen manuell eingegebenen Wert ersetzt werden. Wenn Sie einen manuellen Wert für die Dauer wählen, lautet die Formel: CLIP-DAUER multipliziert mit 90000 und gerundet. Der Grund dafür ist, dass 90000 die Standard-Zeitskala ist, die die meisten SCTE-Systeme verwenden. Beispiel: Der Clip ist 12,4 Sekunden lang, daher wäre die SCTE-Dauer 1116000.
Anstatt eine Dauer zu senden, könnten Sie auch zwei separate SCTE-Marker zum Starten bzw. Beenden der Werbung senden. Diese werden als CUE-OUT (Übergang von Ihrer Sendung zur Werbung) und CUE-IN (Rückkehr zu Ihrer Sendung) bezeichnet.
Wie Sie wahrscheinlich bereits bemerkt haben, besteht der einzige Unterschied darin, dass “outOfNetworkIndicator” den Wert 1 (CUE-OUT) bzw. 0 (CUE-IN) annimmt. Das SCTE-System selbst ordnet beide Marker anhand der “spliceEventId” einander zu.
Hinweis: Die folgenden Platzhalter werden unterstützt: {timestamp} {timestampunix} {airtimenext} {airtimenextunix} {plannednext} {plannednextunix} {clipid} {blockid} {blockduration} {clipduration}
SCTE-35-Marker lokal testen
Öffne PLAYDECK. Du musst noch keine Clips laden. Klicke mit der rechten Maustaste auf eine beliebige ACTION-Schaltfläche, erstelle eine neue Aktion und wähle COMMANDS/SCTE:

Fügen Sie das SCTE-35-Beispiel-Tag ein, indem Sie auf „SCTE-35“ klicken. Schließen Sie die Popup-Fenster mit „OK“ (zweimal):

Wir können nun ein SCTE-35-Tag an jeden kompatiblen Stream (UDP, DVB, SRT) senden. Wenn Sie jetzt auf die Aktion klicken, passiert nichts, da wir noch keinen Stream haben.
Erstellen wir einen Test-UDP-Stream, bei dem wir die Ausgabe einfach in eine Datei schreiben, damit wir uns (vorerst) nicht mit Server-Angelegenheiten herumschlagen müssen. Übernehmen Sie die folgenden Einstellungen und starten Sie den Stream mit “START NOW”. Vergessen Sie nicht, SCTE-35 unter „Parameter“ zu aktivieren:

Wir möchten nun unser Beispiel-SCTE-35-Tag an den Stream senden. Schließe dazu die Einstellungen und klicke mehrmals auf die Aktionsschaltfläche. Kehre anschließend zu den Einstellungen zurück und beende deinen Stream mit „JETZT BEENDEN“.
Ihre SCTE-35-Tags wurden von PLAYDECK protokolliert. Sie können die Protokolle einsehen, indem Sie über die Schaltfläche „Aktion“ zu Ihrem SCTE-35-Code zurückkehren und auf „EVENT-PROTOKOLLE ÖFFNEN“ klicken:

Sie können auch die SCTE-35-Tags sichtbar machen, die in Ihrem aufgezeichneten Stream enthalten sind. Dazu benötigen wir ein separates Tool namens “DVBInspector”. Dieses Tool benötigt außerdem die JAVA-Laufzeitumgebung, laden Sie also beides herunter:
Für dieses Tool ist die JAVA-Laufzeitumgebung erforderlich. Falls diese noch nicht installiert ist, können Sie sie hier herunterladen:
https://www.oracle.com/java/technologies/downloads/
Entpacken Sie nun Ihre Datei “DVBinspector-1.18.0-dist.zip” (oder ähnlich) und starten Sie “DVBinspector-1.18.0.jar”. Ziehen Sie dann Ihre TS-Datei per Drag & Drop auf die Anwendung. Öffnen Sie die Baumstruktur wie folgt, um Ihren SCTE-Marker anzuzeigen.

SCTE-35-Marker in Nimble Streamer testen
Nimble Streamer ist unser bevorzugter Streaming-Dienst. Er ist kostengünstig, einfach einzurichten und zu warten, bietet aber dennoch die nötige Komplexität für anspruchsvolle Anwendungsfälle:
Installieren Sie die 14-tägige Testversion von Nimble auf demselben Rechner, auf dem PLAYDECK läuft. Dies ist zwar nicht zwingend erforderlich, vereinfacht die Sache jedoch, da Sie sich so nicht mit einer Netzwerkeinrichtung herumschlagen müssen. Nimble fordert Sie außerdem auf, ein Konto bei WMSPanel zu erstellen, einem webbasierten Konfigurationstool für Nimble, da der Nimble Streamer selbst ohne Benutzeroberfläche installiert wird.
INFO: Damit dieses SCTE-35-Beispiel funktioniert, benötigen Sie KEINE Plug-ins “Nimble Live Transcoder” oder “Nimble Advertizer”, wenn Sie es in einer Live-Installation testen. In der Testversion sind diese standardmäßig deaktiviert.
Sobald Nimble läuft, müssen Sie noch eine weitere Konfiguration manuell vornehmen. Öffnen Sie die Konfigurationsdatei des Nimble-Servers hier:
c:\Programme\Nimble Streamer\conf\nimble.conf
Fügen Sie am Ende dieser Datei die folgenden Zeilen ein und speichern Sie die Datei.
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
Wichtig: Sie müssen Nimble jetzt neu starten, indem Sie entweder Ihren PC neu starten oder den Windows-Dienst “Nimble Streamer” manuell neu starten.
Hier sind die Zeilen noch einmal, diesmal jedoch mit Kommentaren für dich (bitte verwende diese nicht):
scte35_processing_enabled = true // Aktiviert das SCTE-Modul generell. Wird für alle anderen Optionen benötigt
scte35_forwarding_enabled = true // Ermöglicht die Weiterleitung von SCTE-35-Markern über den Live-Transcoder
hls_ad_scte35_forwarding_enabled = true // Aktiviert die Weiterleitung von SCTE-35-Markern in HLS-Streams
hls_ad_marker_format = cue // Stellt Nimble so ein, dass CUE-OUT- und CUE-IN-Marker verwendet werden
hls_ad_splice_out_cont_marker_enabled = true // Aktiviert das automatische Einfügen von EXT-X-CUE-OUT-CONT
Nun richten wir Ihre Streams in WMSPanel ein:
Zunächst definieren wir unseren eingehenden Stream. Gehen Sie im Menü zu “Nimble Streamer”, wählen Sie “MPEGTS In” aus und klicken Sie auf die Schaltfläche “UDP-Stream hinzufügen”. Fügen Sie dann den eingehenden Stream wie folgt hinzu. Sie können einen beliebigen anderen Port verwenden, falls Port 5001 bereits belegt ist.

Als Nächstes richten wir das Format des Ausgangsstroms ein. Wir möchten hier HLS verwenden, um die Konvertierung von SCTE-Markern von UDP zu HLS zu demonstrieren. Gehen Sie auf derselben Seite zu “MPEGTS Out” und klicken Sie auf die Schaltfläche “Ausgehenden Stream hinzufügen”, dann fügen Sie ihn wie folgt hinzu. Stellen Sie sicher, dass Sie Ihren Eingangsstream als Video- und Audioquelle auswählen.

Als Nächstes setzen wir die Einrichtung in PLAYDECK fort. Gehen Sie zu den Stream-Ausgabeeinstellungen und ändern Sie die Stream-URL in “udp://127.0.0.1:5001”.
INFO: Sie können einen beliebigen Videocodec auswählen. In diesem Fall habe ich H.264 gewählt, damit meine NVIDIA-GPU die Codierung übernimmt, was die CPU-Auslastung senkt. Aktivieren Sie außerdem SCTE-35 unter “Parameter”.

INFO: Bitte beachten Sie, dass PLAYDECK nicht in der Lage ist, HLS direkt zu streamen. Wenn Sie “Apple HTTP Live Streaming” als Streaming-Format auswählen, wird die Ausgabe in eine Datei geschrieben. Sie müssen daher als “Stream-URL” ein Dateiziel angeben, z. B. “c:\Users\Public\Documents\stream.m3u8”. Verwenden Sie diese Datei anschließend, um den Stream über einen beliebigen Streaming-Server abzuspielen. PLAYDECK kann keine HLS-SCTE-Tags in die HLS-Manifestdatei (die *.3u8-Datei) schreiben.
Als Nächstes möchten wir, dass PLAYDECK SCTE automatisch sendet – nicht nur über eine Schaltfläche, sondern auch in Verbindung mit Clips. Dazu fügen wir einen beliebigen Clip ein, klicken in der Symbolleiste auf das Symbol „COMMANDS“, fügen einen neuen Befehl hinzu, wählen „PLAY TIME 0“ aus und fügen dann das SCTE-35-Beispiel ein:

INFO: Sie können SCTE-Marker auch zu Blöcken, Overlays und Aktionsschaltflächen hinzufügen.
So geht’s: Starten Sie den Clip mit “CUE” und “PLAY” und aktivieren Sie den Stream in den PLAYDECK-Einstellungen. Wechseln Sie zum WMSPanel und öffnen Sie im Menü „Nimble Streamer“ die Option „Live Streams“. Du siehst nun einen laufenden Live-Stream. Klicke darauf und wähle das Fragezeichen ganz rechts aus, wie hier gezeigt.

Wählen Sie aus der Liste “Zu spielende URLs” diejenige mit der Endung “playlist.m3u8” aus und klicken Sie auf “Kopieren”. Fügen Sie diese URL nun in einen beliebigen Browser ein, der über einen integrierten oder installierten HLS-Player verfügt. In diesem Beispiel verwenden wir den Chrome-Browser mit der folgenden HLS-Player-Erweiterung:
https://chromewebstore.google.com/detail/hls-player-m3u8-streaming/eakdijdofmnclopcffkkgmndadhbjgka
Sobald du diese URL in Chrome eingegeben hast, wird dein PLAYDECK-Stream sofort abgespielt. Nun zeige ich Ihnen, wie Sie Ihren SCTE-Marker überwachen können. Drücken Sie in Chrome die Taste F12, um die Entwicklertools zu öffnen. Klicken Sie oben auf die Registerkarte “Netzwerk”. Sie sehen nun mehrere “chunks.m3u8”-Dateien, die Teil Ihres Streams sind. Klicken Sie auf eine der Chunk-Dateien (auch HLS-Manifest genannt) und wählen Sie daneben “Vorschau”. Sie sehen nun das HLS-SCTE-Tag. Falls es nicht vorhanden ist, klicken Sie auf einen anderen Chunk, da wir das SCTE nur am Clip-Start senden.

Das war’s! Wir haben unsere Testziele erreicht. In Kürze folgen weitere Informationen, die für euch interessant sein könnten.
Weitere Informationen
Anmeldung bei PLAYDECK
Wir protokollieren alle ein- und ausgehenden SCTE-Tags. Dies gibt Ihnen zudem die Möglichkeit, Ihre ausgehenden SCTE-Tags zu testen, indem Sie einfach Ihren Ausgang auf einen Eingang zurückschleifen (sowohl SDI als auch Streams) und PLAYDECK Ihre SCTE-Tags erkennen lassen. Sie können die Protokolldateien über das Hauptmenü “Logs” öffnen:

Protokollierung in Nimble Streamer
Sollte etwas schiefgehen oder nicht wie erwartet funktionieren, empfiehlt es sich zunächst, die Nimble-Protokolldateien zu überprüfen. Unter Windows finden Sie das Protokoll hier:
c:\Programme\Nimble Streamer\log
Die Protokollierung ist in der Nimble-Testversion standardmäßig aktiviert. Falls Sie sie jedoch aktivieren müssen, finden Sie hier die Einstellungsoptionen für die Datei “nimble.conf”.
log_access = file
logging = debug
Öffne nun die Protokolldatei und suche nach “SCTE”. Möglicherweise siehst du etwas Ähnliches wie hier, was darauf hindeutet, dass dein SCTE-Marker in PLAYDECK einen Tippfehler enthält:
[SCTE35] Nicht unterstützter Splice-Befehl vom Typ 6 für [mynewapp/mynewstream]
Wenn Ihr SCTE-Marker in Nimble erfolgreich geparst wurde, sieht das Ergebnis wie folgt aus:
[SCTE35] splice_insert: event_id=4157 oon=1 immediate=1 pts_adjustment=0 pts=0 actual_pts=202593600 duration=2707200 data=0xfc....
Tool: TSDuck
Dies ist eine Sammlung von Tools und Plugins mit einer umfangreichen Bibliothek zur Bearbeitung von MPEG-Transportströmen. Damit können Sie SCTE-Marker außerhalb von PLAYDECK auf der Grundlage eines Algorithmus oder einer anderen komplexen Logik einfügen.
Tool: x9k3
Dieses Tool kann außerdem SCTE-35-Marker in UDP-Streams oder MPEG-TS-Dateien in HLS-SCTE-Tags umwandeln. So können Sie einen Streaming-Server einrichten, der keine automatische Konvertierung von SCTE-35 nach HLS unterstützt.