Using SCTE for Inputs and Outputs

This article will explain how you can use SCTE for your projects. PLAYDECK supports SCTE-35, which are exclusively used in Streams and SCTE-104, which are exclusively used in SDI Device signals.

Scroll down for SCTE-104. We also recommend to follow-up with this article on sending SCTE-35 to Streaming Server.

In this article:
Using SCTE-35 in Streams
Using SCTE-104 in SDI


Using SCTE-35 in Streams

SCTE-35 Facts

  • Supported for Stream Inputs as well as Stream Outputs. Tested Stream Formats are UDP, DVB and SRT. The selection of the Video Codec does not influence SCTE transport. SCTE transport is always active and does not need to be enabled somewhere.
  • PLAYDECK can detect and display incoming SCTE-35 Marker. All incoming and outgoing Marker will be written to an Event Log.
  • PLAYDECK can forward incoming SCTE-35 Marker from Stream Input to Stream Output. Cross-Forwarding between UDP, DVB and SRT is supported, e.g. receiving SRT and forwarding to UDP.


SCTE-35 Testdrive

Let us dive into those topics a bit. As a test run we setup our own UDP signal loop. We stream Channel 1 to “udp://225.0.0.1:5001” via UDP:

And play the Stream in Channel 2:

Now we only need a way to send a SCTE-35 marker in Channel 1. So we setup a new Command Action and use the smallest detectable SCTE-35 Marker (of course you can use any other):
<SpliceInfoSection><SpliceInsert></SpliceInsert></SpliceInfoSection>

Make sure Channel 1 and Channel 2 are playing, then hit the Action Button. Then open the SCTE Event Log over the Main Menu > Documentation > SCTE:

You will see the outgoing Marker of your Action Button Click on Channel 1, and the detected incoming Marker on Channel 2:

We even go one step further and setup ANOTHER Stream from Channel 2 to Channel 3 to test the SCTE Forwarding and Cross-over Detection (UDP to SRT). We send Channel 2 to “srt://127.0.0.1:5000?mode=listener” and receive in Channel 3 at “srt://127.0.0.1:5000?mode=caller”:

If we now press our Action Button to send the SCTE-35 Marker, we detect it also in Channel 3:


Using SCTE-104 in SDI

SCTE-104 Facts

  • Supported for SDI Device Inputs as well as SDI Device Outputs, e.g. Blackmagic DeckLink. SCTE transport is always active and does not need to be enabled somewhere.
  • PLAYDECK can detect and display incoming SCTE-104 Marker. All incoming and outgoing Marker will be written to an Event Log.
  • PLAYDECK can forward incoming SCTE-104 Marker from SDI Input to SDI Output.


SCTE-104 Testdrive

Let us dive into those topics a bit. As a test run we setup our own SDI signal loop. We use our DeckLink Duo 2 and an SDI Loop Cable:

And play the SDI Input in Channel 2:

Now we only need a way to send a SCTE-104 marker in Channel 1. So we setup a new Command Action and use the smallest detectable SCTE-104 Marker (of course you can use any other):
<SCTE104><single_operation_message><data>data string</data></single_operation_message></SCTE104>

Make sure Channel 1 and Channel 2 are playing, then hit the Action Button. Then open the SCTE Event Log over the Main Menu > Documentation > SCTE:

You will see the outgoing Marker of your Action Button Click on Channel 1, and the detected incoming Marker on Channel 2:

We even go one step further and setup ANOTHER SDI Loop from Channel 2 to Channel 3 to test the SCTE Forwarding:

If we now press our Action Button to send the SCTE-104 Marker, we detect it also in Channel 3:



Ad Breaks to interrupt Playout

This article will show how to use a BREAK BLOCK to create Ad Breaks, that interrupt your regular Playout, and will return after.

In this article:
Using Break Blocks as Ad Breaks
Schedule Break Block
Using Action Buttons for Ad Breaks
Attach Overlays to the Break Block
Attach SCTE Marker to the Break Block


Using Break Blocks as Ad Breaks

This is fairly simple: You create a new Content Block in your Playlist with one difference: The Block ends as BREAK BLOCK (instead of STOP or PAUSE). For this we select the Block and click on the BLOCK END Icon (or Double-Click the Block end). Then we select BREAK BLOCK and choose RETURN TO LAST POSITION (or any other):

This BREAK BLOCK behaves like this: Once it reaches its end, it will return to the clip and position (or other), which was playing BEFORE entering the BREAK BLOCK from OUTSIDE. Meaning: You can jump from anywhere to anywhere in the BREAK BLOCK, and it will remember where to return to.


Schedule Break Block

You can schedule the Break Block like an other Block Type by selecting the Block and clicking the SCHEDULE Icon:

In this example we start our Break Interruption every day at 11:00 o’clock and will repeat this every 2 and half hours for the remaining of the day. There will be no Ad Breaks between 0:00 and 11:30.


Using Action Buttons for Ad Breaks

Instead of scheduled Break Blocks, you can also use Action Buttons. For this simply click and empty Action Button and select to play the related Ad Block:

You get the same selection for “returning” as for Block Ends. If you select “<Do nothing>”, the Block End will be used, like in our example above. If you select any other Option, the Return method of the Action will be used over the Block End method. This gives new options:

  • You could use both return methods, depending if the Break Block starts via scheduling or via Action Button
  • If started via Action Button, you can leave the Break Block EARLY and still return


The second option is perfect for looping Break Blocks, as your return to the previous playout, if you click the Action Button a second time.


Attach Overlays to the Break Block

Oftentimes you want Overlays to start automatically together with your Break Block Content. We therefore recommend the following articles:


Attach SCTE Marker to the Break Block

If you want to signal your Streaming Server or Broadcasting System to insert Ads for the duration of your Break Block, we recommend to following articles:


Create L-Band Ads via second Channel

This article will show how to use how to utilize the second Channel to create L-Band advertisements.


1. L-Band Specifications

Every Station has their own specs on the size, so we just borrow this sample from News18:

The principal is always the same: We “shrink” our main content proportionally to make room for Ads in the remaining area. After shrinking, we leave some overlap to not risk black background. Our final shrink-size is: 1520×855 Pixel.


2. Scale Channel 1 and send to Channel 2

We assume with have our Main Video Content on Channel 1. So we enable the Output Scaler in the Settings to our shrunk size of 1520×855 Pixel. Then we send our scaled Content as NDI signal:

We now loop our NDI signal to Input 1:

We then add Input 1 to the Playlist of Channel 2, by Drag Drop of the Input Icon to the Playlist. We now have the Video Content in L-Band size:


3. Add the Clean Feed for Switching

Since our Final Output will run over Channel 2, we also want our Clean Feed to be selectable in the Channel 2 Playlist. For this, we can simply copy the Channel without the Output Scaler. Use another Input and set Channel 1 as Source:

Then also add that Input to Channel 2. I already renamed both Inputs in the Playlist to be more distinguishable:

You can now quickly switch between L-Bands and Clean Feed.


4. Use Overlays for L-Bands

You can use PLAYDECK Overlays for your L-Bands. For simplicity, we use this transparent PNG over the Video signal. But these can be more complex. See this article on how to create Overlay groups and fade them together.

Click on any empty Overlay Button, then add our Sample PNG:

We now want our Overlay to ONLY play with the Playlist Clip for the “L-Band Feed” Input. For this we select the L-Band Clip and click the Overlay Icon, then add our new Overlay for the whole duration of the Clip:

Our L-Band Overlay will now automatically start together with the L-Band Feed:

Note: Overlays that are assigned to Clips always have a slight reaction delay. This can be overcome by finetuning Playlist and Overlay Fade Times. You could also split the L-Band Feed and Clean Feed to Channel 2 and 3 and use an external Mixer for Transitions.

Setup Device Reference Signal (GenLock)


Introducing a Reference Signal will force the Output Hardware to send Frames based on the Reference Clock.


1. Multichannel SYNC as a use case

If you plan to synchronize multiple channel, you should connect an external clock to your device, then CUE all Channel via LINK (or Commands) and UNPAUSE all Channel. This will start all Channel (almost) SYNC, while the Reference Clock will make sure, that all Channel STAY SYNC. This is only guaranteed for all Channel, that output over the same Device.

This article shows, how to use Action Buttons to start multiple Channel in SYNC.


2. Providing a Reference Signal (GenLock)

Please check with your manufacturer, if your Output Card supports a Reference Input. In this example we use “Blackmagic DeckLink Duo 2”:

If none of your other hardware generates a Clock Signal, you can use separate hardware to generate such a signal, like the Blackmagic Sync Generator.


3. Setting the Reference Input in PLAYDECK

Some Devices need specific reference input settings, like AJA Devices. In this Example, we set the AJA Reference Input to “external” for the Device:

If you click on SHOW HELP, you will see all other Options, that can be set for each device manufacturer.

External Overlays with ClassX (and other)

This article will show how to trigger external Overlay Engine during your Playout.


1. Create external Overlay with ClassX

We use ClassX Liveboard as an example to show, how to work with external Overlays. This sample can be easily copied to any other solution, like: CasparCG, Singular.live.

ClassX Liveboard is a professional CG Playout Solution for automating dynamic overlay contents. You can register for a Demo Version on their website.

After installation of LiveBoard, you can simply add Videos, GFX and other Contents via the user interface. There you also name the Contents with a unique identifier, e.g. “MyLowerThird” for later reference.

LiveBoard allows to connect via TCP and send Commands to show/hide certain Contents. A complete list of Commands is always found in the Window installation path:
C:\Program Files\…\ClassX_Applications_v6\remotecontroltester\commands

For now, these 2 Commands are enough for us:

  • LBC_PLAYCONTENT “MyLowerThird”
  • LBC_STOPCONTENT “MyLowerThird”


Lets enable our TCP in PLAYDECK to talk to LiveBoard. The default Port of LiveBoard is 301. Enabling this will show CONNECTED, if the LiveBoard Server is running. Otherwise PLAYDECK will try to connect every 5 seconds, so you can start LiveBoard before or after PLAYDECK:


2. Add Commands to PLAYDECK

You can now add the above Commands to:

  • Clips
  • Blocks
  • Actions
  • Other Overlays


For our Sample we want the external Overlay to show together with a specific Clip. We select this Clip in the Playlist and click the COMMANDS Icon, then add our 2 LiveBoard Commands from above. In this case with start the Overlay 5 seconds into the Clip and show it for 10 seconds in total:


3. Mixing Video Content and Overlays

If you don’t use an external Mixer to mix the Overlays with Alpha Channel over your PLAYDECK playout, you can also use Internal Keying, where you feed the Overlay Signal into PLAYDECK, and have your Output Hardware mix both Layer. See this article on Internal Keying.

If you want to mix on a software level, you can use vMix on the same System as ClassX and PLAYDECK.

Automate Overlay Lower Third with Clips

This article will show how to use how to create Overlays Groups and bind them to Clips or schedule them.


1. Create some Overlays

Lets create our own custom “lower third” composed of a background GFX and Text and group them together.

Click on an empty Overlay Button to open the Editor, then add some Background GFX. Close the Editor, right-click the Overlay Button and position your Background to the bottom area. We also right-click in the video preview and disable “Channel Name”:

We add another Text Overlay and use {blockname} as text placeholder for our title text. Then add another Text Overlay and use {clipname} as text placeholder. Then some positioning and it looks like this:

Now lets group then together: Right-click an empty Overlay Button and select “Create Overlay Group”. Then add our 3 previous Overlays and order them bottom-up:

We now have a functioning Overlay Button for the Lower Third with dynamic Text Content. Not lets automate this Group with the Clip. Select the related Clip and click on the Overlays Icon, then add our Overlay Group to that Clip, starting 5 Seconds into the Clip and showing for 10 Seconds:


2. Automate Overlay with Blocks

Since there is no Overlay Icon with Blocks, you use a Command to start/stop the Overlay:


3. Schedule Overlay

You can show/hide Overlays independent of Content by entering start time and duration. Right-click on the Overlay and click “Autostart” and later “Change Duration”:

ST 2110 Device Setup

For High Quality and Lag-free network operation, we recommend using High-end network hardware (router, switch) as well as high speed ethernet cables (Cat6+).

In this article:
BlackMagic 2110/IP Cards
AJA 2110/IP Cards
Deltacst 2110/IP Cards


BlackMagic 2110/IP Cards

BlackMagic Devices can be configured with the Tools given by the manufacturer:
Blackmagic Desktop Video Setup:


AJA 2110/IP Cards

PLAYDECK allows to assign a network configuration file, which will be loaded upon PLAYDECK start.

Structure of Configuration File (JSON)

{
    "protocol":"2110",
    "network2110":
    { // this part configures the parameters of the device itself, the connectors (SFP) with IP configurations
        "ptpPreferredGMID":"00-00-00-00-00-00-00-00",
        "ptpDomain":0,
        "setup4k":"false",
        "multiSDP":"false",
        "audioCombine":"false",
        "rxMatchOverride":0,
        "sfps":
        [   // the configuration itself for each of the connectors
            {
                "designator":"sfp1",
                "ipAddress":"192.16.45.8",
                "subnetMask":"255.255.0.0",
                "gateWay":"255.255.255.255",
                "enable":"true"
            },
            {
                "designator":"sfp2",
                "ipAddress":"192.16.45.9",
                "subnetMask":"255.255.0.0",
                "gateWay":"255.255.255.255",
                "enable":"true"
            }
        ]
    },
    "receiveVideo2110":
    [ // this part is to receive a video feed where you set the connector, the source address
      // and its port for both the connectors.
        {
            "stream":"video1",
            ...
        },
        {
            "stream":"video2",
            ...
        }
    ],
    "receiveAudio2110":
    [ // this part is to receive an audio feed where you set the connector, the source address
      // and its port for both the connectors.
        {
            "stream":"audio1",
            ...
        },
        {
            "stream":"audio2",
            ...
        }
    ],
    "receiveAnc2110":
    [  // this part is to receive the ancillary data where you set the connector, the source address
       // and its port for both the connectors.
        {
            "stream":"anc1",
            ...
        },
        {
            "stream":"anc2",
            ...
        }
    ],
    "transmitVideo2110":
    [  // this part is to send a video signal where you set the connector, the destination address
       // and its port for both the connectors.
        {
            "stream":"video3",
            ...
        },
        {
            "stream":"video4",
            ...
        }
    ],
    "transmitAudio2110":
    [  // this part is to send an audio signal where you set the connector, the destination address
       // and its port for both the connectors.
        {
            "stream":"audio3",
            ...
        },
        {
            "stream":"audio4",
            ....
        }
    ],
    "transmitAnc2110":
    [  // this part is to send ancilary data where you set the connector, the destination address
       // and its port for both the connectors.
        {
            "stream":"anc3",
            ...
        },
        {
            "stream":"anc4",
            ...
        }
    ]
}


Sample Configuration File

You can download this sample JSON File.


Assign Configuration to PLAYDECK

The Configuration will be loaded while starting PLAYDECK and will be assigned to all Inputs and Outputs (if assigned).

For INPUTS, edit the full path to your JSON File in this Registry Key:
HKEY_CURRENT_USER\Software\Medialooks\MFormats\MFLive\AJA2\aja.ip_config

For OUTPUTS, edit the full path to your JSON File in this Registry Key:
HKEY_CURRENT_USER\Software\Medialooks\MFormats\MFRenderer\AJA2\aja.ip_config


Deltacast 2110/IP Cards

PLAYDECK allows to assign a network configuration file, which will be loaded upon PLAYDECK start.

Structure of Configuration File (JSON)

{
    "tx2110Setup":
    {
        "ethPort":0,
        "DHCP":"true",
        "ipAddress":"127.0.0.1",
        "subnetMask":"255.255.255.0",
        "gateWay":"127.0.0.1",
        "ipAddressMulticast":"239.1.32.32",
        "udpPort":16
    },

    "rx2110Setup":
    {
        "ethPort":0,
        "DHCP":"true",
        "ipAddress":"127.0.0.1",
        "subnetMask":"255.255.255.0",
        "gateWay":"127.0.0.1",
        "ipAddressMulticast":"239.1.32.32",
        "udpPort":16
    }
}


Sample Configuration File

You can download this sample JSON File.


Assign Configuration to PLAYDECK

The Configuration will be loaded while starting PLAYDECK and will be assigned to all Inputs and Outputs (if assigned).

For INPUTS, edit the full path to your JSON File in this Registry Key:
HKEY_CURRENT_USER\Software\Medialooks\MFormats\MFLive\MFDeviceDC\dc.ip_config

For OUTPUTS, edit the full path to your JSON File in this Registry Key:
HKEY_CURRENT_USER\Software\Medialooks\MFormats\MFRenderer\DC\dc.ip_config

Setup of DVB compatible Streams

This article will show how to properly setup a new DVB compatible Stream.


1. Setup of basic Stream Settings

At first, DVB Streams are created like any other Stream in PLAYDECK, by going into the Settings and entering the appropriate Stream Info. In this case we use a local UDP URL for Testing, a High Framerate of 60 FPS, a medium Video Bitrate of 6 MBit/s, the standardized MPEG-2 Video Codec, a High Quality Audio with AAC Codec and 96 KHz Sample Rate and 320 KBit/s Bitrate:

There are 2 types of DVB Streaming:

  • Regular DVB Streaming via UDP (udp://…)
  • SRT DVB Streaming via SRT (srt://…)


2. Additional DVB Settings

DVB Streams rarely work out-of-the-box like other Stream Formats (e.g. RTMP), because the need specific additional Settings, which we walk-thru now. You can also use this official DVB Spec PDF as Reference.


PCR

PCR stands for “Program Clock Reference”, which is send by our DVB encoder. It’s kind of a “heartbeat” for the DVB Stream. If your network connection between PLAYDECK and DVB receiver is not reliable and stable, you will easily get PCR errors on your receiver. The PING from PLAYDECK to DVB receiver should never be higher than 20ms, even in peak times (e.g. other traffic).


MUXRATE

You should always set the Muxrate with this Formula:

MUXRATE = (VIDEO BITRATE + AUDIO BITRATE) * 1.25

So in our Sample above with have (rounded): 8 Mbit/s. We set the MUXRATE to PLAYDECK via the OPTIONS field of our Video Codec:

As a result, the resulting Bitstream will be of the MUXRATE value and non-video and non-audio parts are filled with null-packets.


CLOSED CAPTIONS + SCTE-35

Both don’t need to be activated specifically, as they are automatically enabled by PLAYDECK.


INFORMATION TAGS

There are several informative fields, which are unique to DVB:

  • service_name (any text value)
  • service_provider (any text value)
  • service_id (any number – default is 1)
  • service_type (possible values: digital_tv, mpeg2_digital_hdtv, advanced_codec_digital_sdtv, advanced_codec_digital_hdtv, hevc_digital_hdtv – default is digital_tv)
  • transport_stream_id (any number – default is 1)
  • original_network_id (any number – default is 1)
  • pmt_start_pid (numbers between 16 to 7936 – default is 129)
  • start_pid (numbers between 256 to 3840 – default is 1024)
  • pes_payload_size (any number – default is 2930 bytes)
  • mpegts_flags (possible values: resend_headers, pat_pmt_at_frames, latm)
  • start_timecode (possible values: auto, disabled, local_time OR custom text like “10:00:00:00” – default is auto)
  • tables_version (any number – default is 0)

These values are also entered into the OPTIONS field of our Video Codec. You simply use a SPACE between options. Add as many options as you like/need:


Insert Input Streams into Playlist

This article will show how to insert Streams into your Playlist.

In this article:
Insert Stream (SRT, RTMP, UDP, …)
Insert YouTube Video
Insert Website Video


Insert Stream (SRT, RTMP, UDP, …)

You can directly Drag Drop any YouTube URL from your Browser to PLAYDECK:

To insert a new Stream into your Playlist, simply Drag Drop the STREAM Icon onto the Playlist. A new Popup will appear, where you can enter the Stream URL:

Your Stream will be scanned by PLAYDECK now. If the PLAYDECK could connect to your Stream successfully, the Text will be shown in WHITE. You can now play the Stream and/or can double-click the INFO icon to view more information about the Stream, like Video format and codec:

If the Stream can NOT be connected, it will appear in RED:

If you made a typo, you can quickly re-edit the URL by right-clicking and selecting CHANGE URL:


Insert YouTube Video

You can insert YouTube Links via Drag Drop or in the same manner as insert as Input Stream. See this article on more information about YouTube.


Insert Website Video

You can insert some Websites per Drag Drop directly into the Playlist or via the STREAM Icon. We use TWITCH in this example. Click SHOW HELP to get more info about what Websites can be used:


Move License to another PC

This article will show how to move your License from one System to another System.

In this article:
Shop License
Dongle License
Offline License
Backup License


Shop License

You can move your License via a simple Check-In/Out System. On the System with the active License, go into your License Manager:

First, we want to deactivate the current License: Select the TRIAL Edition and click ACTIVATE, then confirm the restart query:

After restarting PLAYDECK, we can now move the freed License back to your Online License Pool. Re-open the License Manager. Now login to your PLAYDECK ACCOUNT. Use the email address and password, which you used during CHECKOUT in the SHOP. Use the FORGOT PASSWORD button, if you need to reset your password:

We can now move the License from you LEFT Side to the RIGHT Side with a Button Click (CHECK LICENSE BACK INTO THE POOL). This means, that the License becomes UNAVAILABLE on the current System and becomes AVAILABLE on ANY other System:

The next Screen shows the OTHER PC after logging into the License Manager. You simply reverse the Process now: Select the License on the RIGHT Side and move it with the Button to the Left Side (CHECK LICENSE FROM POOL TO LOCAL PC). PLAYDECK will now offer to activate the License and restart:


Dongle License

Simply detach the USB Dongle and attach it to another PC, then start PLAYDECK on that PC. Please note, that if you detach the Dongle while PLAYDECK is still running, PLAYDECK will close immediately and without prior notice. It is recommended to close PLAYDECK regularly to ensure, that all Data is saved properly.


Offline License

The Offline License is bound to the PLAYDECK System ID and can NOT be moved to another System by the Customer. Please write us at [email protected] to receive a new Offline License.


Backup License

We have a separate article on how to use the Backup License.

1 2 3 4