Übertragung von SCTE-35 an den Stream-Server

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
Marker SCTE-35 lokal testen
Marker „SCTE-35“ 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 den Optionen Ihres Stream aktiviert sein muss:


Beispiele für SCTE-35-Marker

Sehen wir uns ein Beispiel für SCTE-35 an. Es handelt sich dabei 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}


Marker SCTE-35 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 Popups mit „OK“ (zweimal):

Wir können nun ein SCTE-35-Tag an jedes kompatible Stream-Gerät (UDP, DVB, SRT) senden. Wenn Sie jetzt auf „Aktion“ klicken, passiert nichts, da wir noch kein Stream-Gerät 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. Kopieren Sie die Einstellungen wie folgt und starten Sie den Stream mit “START NOW”. Vergessen Sie nicht, SCTE-35 unter „Parameter“ zu aktivieren:

Wir möchten nun unser Test-Tag „SCTE-35“ an das Stream senden. Schließen Sie dazu die Einstellungen und klicken Sie mehrmals auf die Aktionsschaltfläche. Kehren Sie anschließend zu den Einstellungen zurück und stoppen Sie Ihr Stream mit „STOP NOW“.

Deine SCTE-35-Tags wurden von PLAYDECK protokolliert. Du kannst die Protokolle einsehen, indem du über die Aktionsschaltfläche zu deinem SCTE-35-Code zurückkehrst und auf „EVENT-PROTOKOLLE ÖFFNEN“ klickst:

Sie können auch die SCTE-35-Tags sichtbar machen, die sich in Ihrer aufgezeichneten Stream-Datei befinden. 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 anschließend Ihre TS-Datei per Drag & Drop auf die Anwendung. Öffnen Sie die Baumstruktur wie folgt, um Ihren SCTE-Marker anzuzeigen.


Marker „SCTE-35“ 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:

https://softvelum.com/nimble/

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 anzulegen, einem webbasierten Konfigurationstool für Nimble, da sich das Nimble Streamer selbst ohne Benutzeroberfläche installiert.

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 nun 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  // Das SCTE-Modul allgemein aktiviert. Wird für alle anderen Optionen benötigt
scte35_forwarding_enabled = true  // Ermöglicht die Weiterleitung der SCTE-35-Marker ü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  // Legt fest, dass Nimble CUE-OUT- und CUE-IN-Marker verwendet
hls_ad_splice_out_cont_marker_enabled = true  // Aktiviert das automatische Einfügen von EXT-X-CUE-OUT-CONT

Nun richten wir Ihr Streams in WMSPanel ein:
Zunächst definieren wir unseren eingehenden Stream-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 ausgehenden Streams 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”. Fügen Sie dann wie folgt hinzu. Achten Sie darauf, Ihren Eingangsstream als Video- und Audioquelle auszuwählen.

Als Nächstes setzen wir unsere Einrichtung in PLAYDECK fort. Rufen Sie die Stream-Ausgabeeinstellungen auf 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 als Streaming-Format “Apple HTTP Live Streaming” 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 einem Clip. 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-Sample ein:

INFO: Sie können SCTE-Marker auch zu Blöcken, Overlays und Aktionsschaltflächen hinzufügen.

Jetzt geht’s los: 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“. Sie sehen nun einen laufenden Live-Stream. Klicken Sie darauf und wählen Sie 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 Sie diese URL in Chrome eingegeben haben, wird Ihr 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” aus. Sie sehen nun das HLS-SCTE-Tag. Sollte es nicht vorhanden sein, klicken Sie auf einen anderen Chunk, da wir das SCTE nur zu Beginn eines Clips 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-Signale zu testen, indem Sie Ihren Ausgang einfach auf einen Eingang zurückschleifen (sowohl SDI als auch Streams) und PLAYDECK Ihre SCTE-Signale erkennen lassen. Sie können die Protokolldateien über das Hauptmenü “Logs” öffnen:


Protokollierung in Nimble Streamer

Wenn etwas schiefgeht oder nicht wie erwartet funktioniert, empfiehlt es sich zunächst, die Nimble-Protokolldateien zu überprüfen. Das Protokoll finden Sie unter Windows 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 Einträge 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.

https://tsduck.io/


Tool: x9k3

Dieses Tool kann außerdem SCTE-35-Marker in UDP-Streams- oder MPEG-TS-Dateien in HLS-SCTE-Tags umwandeln. Auf diese Weise können Sie einen Streaming-Server einrichten, der keine automatische Konvertierung von SCTE-35 nach HLS unterstützt.

https://github.com/futzu/x9k3