Create Video Engine Snapshot

This article will show how to create a snapshot of the Video Engine for us to analyze.

1. Download and Install

Please download this Tool called “Snapshot.exe”:
https://download.joy-event-media.de/d/AKLN8KTV

Please start the executable once to make sure, it starts without issues, before we continue to step 2.

If during startup the Tool asks for a NET installation, please install NET manually from this link. On the webpage, please select “Windows > Installers > x64”.
https://dotnet.microsoft.com/en-us/download/dotnet/5.0

2. Reproduction

Not please start PLAYDECK and reproduce the issue. DO NOT CLOSE PLAYDECK.

Now start the Tool “Snapshot.exe”. On the left side, right-click the first item you see, which IS NOT “MFFactory” and select “Save Snaphot”. As file format please use the pre-selected JSON format.

Now repeat this for every Item that is following. You will now have created a Snapshot of every Item, that is not MFFactory. So in the above Sample, we have 10 files in total.

3. ZIP’ing and Sending the Snapshots

Create a new ZIP File and add all Snapshots (*.json).

Upload the ZIP to our Download Server:
https://download.joy-event-media.de/

After uploading click the COPY Button and send the Download Link to [email protected].

4. Clean Up

You can now safely delete the Snapshots.


Video Engine Logging

This article will show how to enable detailed Video Engine Logs for us to analyze.


1. Enable Logging

In PLAYDECK goto Application Settings and activate “Enable Video Engine Logging”. PLAYDECK will now ask you to restart.


2. Reproduction

After restarting now please reproduce the Issue/Problem at hand. Please make a note of the current Date/Time (and let us know). After the Issue/Problem has occured, close PLAYDECK (or use Task Manager to terminate). Do NOT OPEN PLAYDECK again, otherwise the Logs will be lost, as they are being cleaned on every Start to reduce Upload Size.

Note: The shorter the Logs the better, as it is more easy to isolate the issue. Make sure to start PLAYDECK only to reproduce the issue and don’t let PLAYDECK run for a long time.


3. ZIP’ing and sending the Logs

Create a new ZIP File and add the following Folders:

c:\ProgramData\JoyEventMedia\Playdeck\crashs
c:\ProgramData\JoyEventMedia\Playdeck\logs
c:\ProgramData\JoyEventMedia\Playdeck\sdklogs

Note: The ProgramData Folder is hidden in Windows. You have to enter it manually into your File Explorer.

Note: To create a ZIP File in Windows, mark the above Folders with CTRL, then right-click on any marked Folder and select “Compress to ZIP File”.

Upload the ZIP to our Download Server:
https://download.joy-event-media.de/

After uploading click the COPY Button and send the Link to [email protected].
Please dont forget to send the Date/Time of the Issue/Problem occurance, so we can easily find it in the Logs.


4. Clean Up

You can now safely delete your ZIP File.

Also make sure to deactive the Setting “Enable Video Engine Logging” in PLAYDECK, as it will slow down your PLAYDECK performance. This setting is not meant to be enabled all the time.


Sending SCTE-35 to Stream Server

SCTE Marker are mainly used to insert Ads into the Video Output by signalling the Receiver (e.g. Streaming Server) at what time to insert Ads and with what Duration. This allows 3rd Party Systems to dynamically pick Ads from a Database. You can read more about SCTE-35 in general on this website.

We also recommend our general article on SCTE.

You can attach SCTE Marker to 4 different Objects in PLAYDECK:
– Clips (any Position)
– Blocks (Start and End)
– Overlays (Show and Hide)
– Actions Buttons

Instead of providing your with predefined SCTE Marker, we picked a different approach: You have to write your own SCTE Marker. This could mean a bit of a learning curve, but in the end, it is much more flexible. The advantage is, that you will always be compatible to all receiver. For gathering Clip duration and other “variables” we provide certain “placeholder”.


SCTE-35 Marker Examples

Let’s look at some SCTE-35 Sample. It represents the most used form of SCTE-35 called “Splicing”.

Note: The SCTE-35 Format presented here works best with Nimble Streamer (see below). Depending on your Stream Server, the Format might be different. Ask your Provider.

<SpliceInfoSection>
  <SpliceInsert
    spliceEventId="4157"
    outOfNetworkIndicator="1"
    spliceImmediateFlag="1">
    <Program />
    <BreakDuration
      autoReturn="1"
      duration="{clipduration}" />
  </SpliceInsert>
</SpliceInfoSection>

This will insert an Ad and return to your Program automatically after the given duration. The duration will be set automatically by PLAYDECK for your current running Clip. This can be exchanged with {blockduration} or a manual value. If you pick a manual value for duration, the formula is: CLIP DURATION multiplied by 90000 and rounded. The reason behind this is, that 90000 is default Timescale most SCTE Systems use. Example: The Clip is 12.4 seconds, so the SCTE duration would be 1116000.

Instead of sending a duration, you could also send 2 seperate SCTE Marker to Start/End the Ad. Those are called CUE-OUT (leaving your Program for Ad) and CUE-IN (return to your Program).

<SpliceInfoSection>
  <SpliceInsert
    spliceEventId="4157"
    outOfNetworkIndicator="1"
    spliceImmediateFlag="1">
    <Program />
  </SpliceInsert>
</SpliceInfoSection>

<SpliceInfoSection>
  <SpliceInsert
    spliceEventId="4157"
    outOfNetworkIndicator="0"
    spliceImmediateFlag="1">
    <Program />
  </SpliceInsert>
</SpliceInfoSection>

As you most likely have observed already, the only difference is “outOfNetworkIndicator” being 1 (CUE-OUT) and 0 (CUE-IN). The SCTE System itself will pair both Marker based on the “spliceEventId”.

Note: The supported placeholder are: {timestamp} {timestampunix} {airtimenext} {airtimenextunix} {plannednext} {plannednextunix} {clipid} {blockid} {blockduration} {clipduration}


Test SCTE-35 Marker locally

Open PLAYDECK. You dont need to load any Clips yet. Right-Click on any ACTION Button, create a new Action and select COMMANDS/SCTE:

Insert the SCTE-35 Sample Tag by clicking SCTE-35. Close the Popups with OK (twice):

We are now able to send a SCTE-35 Tag to any compatible Stream (UDP, DVB, SRT). If you click the Action now, nothing will happen, as we dont have a Stream yet.

Let’s create a Test UDP Stream, where we simply send the Output to a File, so we don’t have to hassle with Server Stuff (yet). Copy the Settings as follows and start the Stream with START NOW.

We want to send our Sample SCTE-35 Tag to the Stream now. So close Settings and click your Action Button several Times, then go back to Settings and stop your Stream with STOP NOW.

Your SCTE-35 Tags have been logged by PLAYDECK. You can check the Logs, if you go back to your SCTE-35 Code on the Action Button and click OPEN EVENT LOGS:

You can also make the SCTE-35 Tags visible, which are in your recorded Stream. For this, we need a separate Tool called “DVBInspector”. This Tool also needs JAVA Runtime, so download both:

This Tool requires JAVA Runtime. If it is not installed already, you can download here:
https://www.oracle.com/java/technologies/downloads/

Now unzip your “DVBinspector-1.18.0-dist.zip” (or similar) and start “DVBinspector-1.18.0.jar”. Then Drag+Drop your TS File onto the Application. Open the Tree as follows to view your SCTE Marker.


Test SCTE-35 Marker in Nimble Streamer

Nimble Streamer is our Streaming Service of choice. It is cost-efficient, easy to setup and maintain, but still has the depth of complexity for advanced use cases:

https://softvelum.com/nimble/

Install the 14-day Trial Version of Nimble to the same machine that PLAYDECK is running. This is not a necessity, but makes things simpler, as you don’t have to put up with a network setup. You will also be asked by Nimble to create an account with WMSPanel, which is a web based setup tool for Nimble, as the Nimble Streamer itself installs without User Interface.

INFO: For this SCTE-35 Sample to work, you DONT need to have “Nimble Live Transcoder” or “Nimble Advertizer” PlugIns, if you test this on a Live Installation. They are disabled in the Trial Installation by Default.

Once you got Nimble running, there is one more configuration you need to do manually. Open the Nimble Server Configuration file here:
c:\Program Files\Nimble Streamer\conf\nimble.conf

At the bottom of this file, add the following Lines and save the file.

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: You need to restart Nimble now by either restarting your PC or restarting the Windows Service “Nimble Streamer” manually.

Here are the lines again, but with comments for you (dont use these):

scte35_processing_enabled = true  // Enabled the SCTE module in general. Needed for all other Options
scte35_forwarding_enabled = true  // Allows passing through the SCTE-35 markers via Live Transcoder
hls_ad_scte35_forwarding_enabled = true  // Enables forwarding of SCTE-35 markers into HLS streams
hls_ad_marker_format = cue  // Sets Nimble to use CUE-OUT and CUE-IN markers
hls_ad_splice_out_cont_marker_enabled = true  // Enables automatic insertion of EXT-X-CUE-OUT-CONT

Now let’s set up your Streams in WMSPanel:
First we are going to define our incoming Stream. Goto “Nimble Streamer” in the Menu and select “MPEGTS In” and click the “Add UDP stream” Button, then add the incoming stream like this. You can use any other Port, should 5001 be in use already.

Next we are going to setup the outgoing stream format. We want to use HLS here to demonstrate the conversion of SCTE Marker from UDP to HLS. On the same page, goto “MPEGTS Out” and click the “Add outgoing stream” Button, then add like this. Make sure you select you input streeam as video and audio source.

Next we continue our setup in PLAYDECK. Got to the Stream Output Settings and change the Stream URL to “udp://127.0.0.1:5001”.

INFO: You can pick any preferred Video Codec. SCTE-35 will always be send. In this case I picked H.264 to let my NVIDIA GPU do the encoding, which will lower my CPU usage.

INFO: Please note, that PLAYDECK is not capable to directly stream HLS. Tho you “could” select “Apple HTTP Live Streaming” as Streaming Format and write to File e.g. “c:\Users\Public\Documents\stream.m3u8”. Then use that File to stream using any Streaming Server. But PLAYDECK is not able to write HLS SCTE Tags into the HLS Manifest file (the *.3u8 file).

Next we want PLAYDECK to automatically send SCTE, not just via a Button, but Clip related. So we insert any Clip and click the COMMANDS Icon in the Toolbar, then add a new Command, select PLAY TIME 0, then insert the SCTE-35 Sample:

INFO: You can also add SCTE Marker to Blocks, Overlays and Action Buttons.

Now let’s get things rolling: CUE and PLAY the Clip and start the Stream in the PLAYDECK Settings. Hop over to the WMSPanel and open from the Menu “Nimble Streamer” the option “Live Streams”. You will now see 1 running Live stream. Click on it and pick the question mark on the far right like this.

From the list of “URLs to play” select the one with the “playlist.m3u8” ending and click “Copy”. Now paste this URL into any Browser, that has an HLS Player integrated or installed. For this example we use the CHROME Browser with the follwing HSL Player Extension:
https://chromewebstore.google.com/detail/hls-player-m3u8-streaming/eakdijdofmnclopcffkkgmndadhbjgka

Once you posted that URL into CHROME, you will see your PLAYDECK stream playing immediatly. Now let me show you how to monitor your SCTE Marker. In Chrome press F12 to open the Developer Tools. Ontop click the “Network” Tab. You will now see several “chunks.m3u8”, which are part of you stream. Click on one of the Chunk files (also called HLS Manifest) and select “Preview” next to it. You will now see the HLS SCTE Tag. If it isnt there, click on another chunk, as we send the SCTE only on Clip Start.

That’s it! We reached our Test Goals. Upcoming are more information which might be relevant to dig into.


Additional Information

Logging in PLAYDECK

We log Incoming and Outgoing SCTE Tags separately. This gives you also the opportunity to test your outgoing SCTE by simply Looping your Output to an Input (SDI as well as Streams), and let PLAYDECK detect your SCTE. You can open the Log Files via the Main Menu:


Logging in Nimble Streamer

If anything goes wrong or doesnt happen as expected, a good start is to review the Nimble Log Files. The Log can be found here on Windows:
c:\Program Files\Nimble Streamer\log

Logging is enabled by default in the Nimble Trial addition, but in case you need to activate it, here are the flags for the “nimble.conf”.

log_access = file
logging = debug

Now open the log file and scan for “SCTE”. You might see something like this, which indicates you have a typo in your SCTE Marker in PLAYDECK:

[SCTE35] unsupported splice command type=6 for [mynewapp/mynewstream]

If your SCTE Marker parsed succesful in Nimble, it will look like this:

[SCTE35] splice_insert: event_id=4157 oon=1 immediate=1 pts_adjustment=0 pts=0 actual_pts=202593600 duration=2707200 data=0xfc....


Tool: TSDuck

This is a collection of tools and plugins with a large library to manipulate MPEG transport streams. With this you would be able to insert SCTE Marker outside of PLAYDECK based on an algorithm or other complex logic.

https://tsduck.io/


Tool: x9k3

This tool can also convert SCTE-35 Marker in UDP Streams or MPEG-TS Files into HLS SCTE Tags. This allows you to install a streaming server, which does not have automatic SCTE-35 to HLS conversion.

https://github.com/futzu/x9k3

Dante Virtual Soundcard


If you dont know DVS yet: It’s an Audio connection system for Ethernet (LAN).
https://www.getdante.com/products/software-essentials/dante-virtual-soundcard/

You can use DVS via ASIO or WDM:

  • With ASIO you can transmit up to 64 Audio Channel across all PLAYDECK output channel.
    It is the recommended method to use DVS with PLAYDECK.
  • With WDM you can transmit up 16 Audio Channel with one Stero Pair per PLAYDECK output channel.

DVS via ASIO

Start the ASIO Device by opening DVS, selecting ASIO and click START:

You can select the ASIO Device in PLAYDECK now:

PLAYDECK will now start to send all Audio Channel you have selected for that Output Channel, which can be up to 32 Audio Channel:

To use the ASIO Device for more than one Output Channel, you need to activate ASIO Device Splitting:

You will now receive multiple ASIO Devices, so you can assign one Device per PLAYDECK Output Channel:

The Splitting will be done by the Audio Channel you selected per Output Channel. So in the above example, we have set PLAYDECK Output Channel 1 and 2 to 8 Audio Channel and all other Output Channel to 2 Audio Channel.


DVS via WDM

Start the WDM Driver by opening DVS, selecting WDM and clicking on START:

This is the product page:
https://www.audinate.com/products/software/dante-virtual-soundcard

Once you installed DVS on the PLAYDECK machine, select WDM as Audio Interface and START:

You can now assign on DVS Audio Device (Stereo Pair) per PLAYDECK Output Channel:

Only the first to Audio Channel of that Output Channel are send, so make sure to have set your Audio Channel to 2:


Troubleshooting

Stuttering Video

If you assigned DANTE to the Channel in PLAYDECK and your Playback does not start or stutters very slow: You need DANTE CLOCK in your Network.

The Playout in PLAYDECK will not continue, unless the DANTE CLOCK is triggering the Playout. This behaviour CAN NOT be avoided.

Most Audio Mixer, which support DVS, will have a Clock integrated. Maybe it needs to be activated. Please also watch this Official Video from Dante for Dante clocking.

You can also create an artificial DANTE CLOCK by installing DANTE VIA on a SECOND PC in the Network (cant be installed on the same System as PLAYDECK). Once installed, it will automatically designate itself as the Leader Clock and connect to the DVS by itself without further user intervention.

hat everything is working as expected. It is simply a controlling and reporting tool:

If everything is setup correctly, you will see a GREEN LIGHT in the bottom right corner, indicating that your DVS is Clock-enabled and ready to use in PLAYDECK.

Once you see this GREEN LIGHT, PLAYDECK will now play all Clips correctly.


Bad Audio Quality

This most likely happens with the WDM Driver and different Audio Settings. Make sure to adjust the PLAYDECK Channel Audio Setting and DVS Audio Device Setting to the same Format. This avoids transcoding auf Audio and will result in a higher overall Audio Quality.


Audio Channel Mixing and Routing

If you work with Multichannel Audio, you might have to mix down your Audio Channel. See this article for how to work with multichannel audio.

Recording Format

In the Studio Edition, PLAYDECK allows you to record an incoming video signal and create clips from this signal while the recording is still in progress (edit-while-ingest). Alternatively, the recorded video signal can be played back with any time delay to prevent unwanted material from being broadcast. In the form of time-shifting, this can ensure that a show can be aired in the desired broadcast area at prime time.

Closed Captions and Subtitles

“Closed captions” refers to the insertion of text information into a video image to provide viewers with a transcripton of dialogues or sound effects, for example. The subtitles are synchronised with the video image. In contrast to “open captions”, closed captions can be switched on or off as desired.
PLAYDECK supports the two standards EIA-608 and CEA-708 and the output via Blackmagic playout cards as well as AJA, Deltacast and NDI.

Download PDF with information on 608 and 708 Closed Captioning:

Settings for Closed Captions

PLAYDECK offers three different ways to handle closed captions:
These can either be embedded in the output only (variant 1), displayed on the previews in addition to being embedded (variant 2) or permanently displayed on all outputs (variant 3).
You can set the desired behaviour in this drop-down field.

Please note, that (unlike SRT subtitles) the CC previews are displayed in accordance to the modes “Roll Up”, “Paint on” and “Pop Up”. These are set during the encoding process of your Clips or Live Input. Here is a 3rd party YouTube Video with information on the display modes:

Different Types of Closed Captions

Embedded CC and ASS Tracks

PLAYDECK will detect any embedded CC and ASS tracks, which you can select:

External CC Files

You can use external CC files with these extensions:
– VideoName.scc
– VideoName.mcc
– VideoName.anc

These must have the same base name as the Video “VideoName.mp4” and will be loaded automatically.

Device Support

Closed Captions will be transported by:
– Input and Output Devices (Blackmagic Design, Deltacast, AJA)
– Streams, encoded into MPEG-2, H265 and MPEG4
– NDI Input/Output, as Internal Format
– Recordings, captured as seperate SCC (608) or ANC (708) file

Please note, that Closed Captions for NDI have no industry standard, thus we use our own transport protocol. You can use this for PLAYDECK only (System to System), not with other Apps.

SRT Subtitles

Subtitles are simple Pop Up Texts, which are loaded from external SRT Files. Subtitles are always rendered on the image and therefore also the output.

It is possible to have more than one SRT Files for one Video. All Files will be scanned, so you can select them:

The SRT Files can have any Name like “VideoName*.srt” and can be located in the Videos Folder or in one of the Subfolders “Subs” or “Subtitles”. For example if your Videos File is “VideoName.mp4”, then your SRT Files can be:
– VideoName.srt
– VideoName.en.srt
– Subs\VideoName Italian.srt
– Subtitles\VideoName French.srt

Production Window / Director View

In addition to the output of the two playlist channels, PLAYDECK provides a very convenient view for the director or other crew members: A preview of a single or both playlist channels including the various countdown timers is available for output via a playout card, via an output of the local graphics card or for playback via NDI.
In connection with a remote connection to a connected Blackmagic ATEM video mixer, a vMix system or NDI, the tally state (Preview/Program) is also displayed in the preview window.

Director View: Two-Channel view with clock, clip and block timers and tally lights activated
Director View: One-Channel view with clock, clip and block timers and tally light activated
Director View: One-Channel full-screen view with clip and block timers and tally light activated

Settings for Production Window / Producer View

Use the radio buttons to set whether you want to use the two-channel view or the one-channel view with time, or whether you prefer the full-screen variant.
Use the radio buttons in the bottom line to set the audio output of the Director View.

The settings for Device Output, Desktop Output and NDI Output correspond to those for Channel 1 and Channel 2.

Internal and External Keying

PLAYDECK supports both Internal and External Keying, given that the Output card supports it too. You can also output the key or fill signal seperatly.


Internal Keying

In Internal Keying mode, PLAYDECK will superimpose the video over an incoming signal on the same card:

Lets take the Decklink Duo 2 for example: It has 4 SDI Ports. We need to tell the Card, which 2 Ports will be used for Internal Keying with the help of Desktop Video Setup (Blackmagic’s own Setup-App):

The Decklink will now operate like this:

If we start PLAYDECK now, the INTERNAL Option becomes selectable as Device Output:

Once you activate the Device for Keying, PLAYDECK will automatically change your Background to TRANSPARENT and your Color Space to ARGB32 (to support Alpha Channel):

The Image shows PLAYDECK Overlays Sample: Create Overlay > HTML > Screen-Title.html.


External Keying

In External Keying mode, PLAYDECK generates both Fill and Key signals and the keying is made by an external keyer:

Lets take the Decklink Duo 2 for example: It has 4 SDI Ports. We need to tell the Card, which 2 Ports will be used for External Keying with the help of Desktop Video Setup (Blackmagic’s own Setup-App):

The Decklink will now operate like this:

If we start PLAYDECK now, the EXTERNAL Option becomes selectable as Device Output:

Once you activate the Device for Keying, PLAYDECK will automatically change your Background to TRANSPARENT and your Color Space to ARGB32 (to support Alpha Channel):

The Image shows PLAYDECK Overlays Sample: Create Overlay > HTML > Screen-Title.html.

Supported Input/Output Devices


We basically support all cards of the following manufacturers, since we always include the latest drivers. But because of the vast amount of cards out there, we only tested the most common ones.


Blackmagic Design

Important: Needs Version 14.5+ of Blackmagic Desktop Video Setup.

  • DeckLink 4K Extreme 12G
  • DeckLink 8K Pro
  • DeckLink Duo 2
  • Intensity Pro 4K
  • DeckLink Mini Monitor / Mini Recorder
  • DeckLink Quad 1 / 2 / HDMI Recorder
  • DeckLink SDI 4K
  • DeckLink Studio 2 / 4K
  • Ultra Studio HD Mini / 4K Mini / 4K Extreme 3 / Monitor 3G
  • DeckLink IP/SDI HD

AJA

  • Corvid 24 R1
  • Corvid 44
  • Corvid 88
  • KONA LHi
  • KONA IP

Deltacast

  • DELTA-3G-e 22
  • DELTA-3G-elp-d 8c
  • DELTA-3G-elp-key 11

Bluefish444

  • Epoch 4K Neutron
  • Epoch 4K Supernova S+
  • Epoch Neutron
  • Epoch Supernova CG
  • KRONOS K8

DekTec

  • DTA-2144B

Magewell

  • Pro Capture Quad HDMI
  • Pro Capture Quad SDI

Osprey

  • Osprey 915
  • Osprey 925
  • Osprey 927
  • Osprey 935
  • Osprey 945
  • Osprey 914
  • Osprey 924
  • Osprey 944
  • Osprey 1214
  • Osprey 1215
  • Osprey 1225
  • Osprey 1227
  • Osprey 1245
  • Osprey 1285
  • Osprey M15
  • Osprey M14
  • Osprey M24
  • Osprey M25

Stream Labs

  • Alpha HD
  • MH4LM
  • MS4
  • MSP2

Yuan

  • SC550N1

Setup RustDesk unattended Access for Remote Support


RustDesk is a free Remote Destop Software, which we use to login to remote systems. The main advantage of RustDesk over other Remote Desktop Connections is, that is does interfere with installed GPUs (eg. installing a Virtual GPU), therefore not interfering with PLAYDECK during Remote Access.


1. To get started, download our customized RustDesk from our website. This version will use our private RustDesk server (and not the public server) to protect your data and improve the connection speed.
https://get.remote-joy-event-media.de/

2. Once you start RustDesk for the first time, you will need to install it. Please deactivate “Install virtual display driver”, which might interfere with PLAYDECK.


3. After re-starting RustDesk, you will not need to activate “Start Service”. This is important to elevate priviliges to e.g. open the device manager. After that you need to setup a permanent password: Click on the Edit Icon next to “One-time Password”.


4. Then click on “Unlock Security Settings” and scroll down.


5. Please send us your ID together with your permanent password to [email protected]


6. (Optional) If possible, please start RustDesk on a secondary PC (No need to install) and test the connection to the System you have setup for remote support. Now thru this remote connection, on the secondary system, please try to:

– Open Device Manager
– Open Task Manager
– Open NVidia Panel
– Copy any File to this Folder: c:\Program Files (x86)\JoyEventMedia\Playdeck\

These tests make sure, that all needed support actions can be done remotely. If is likely, that any Anti-Malware or other Protection software breaks the connection. In that case please de-activate those Tools temporarily for the remote support session.

1 2 3 4