This article will show how to use the Free Backup License, which comes with every PLAYDECK License. The Backup License functions as follows:
Can be used with ANY PLAYDECK License (Dongle, Shop, Offline)
Can be used on ANY PLAYDECK-PC in the same network
Multiple Clients are supported
24/7 operation is NOT supported (max 24h per session)
1. Setup
On your MAIN System (the one WITH the License), you don’t have to do anything: The BACKUP LICENSE SYSTEM is enabled by default. It will use the WebSocket Port 11411, so make sure this Port is not blocked:
On the CLIENT System (the one WITHOUT the License), you perform a regular PLAYDECK installation, nothing special here: PLAYDECK will not start in TRIAL MODE with the watermark:
Now we need to tell CLIENT PLAYDECK, where to find the MAIN PLAYDECK, by providing the IP address of MAIN. To receive the IP address of your MAIN, you can simply open the ABOUT BOX in PLAYDECK (Main Menu > License > About):
On your CLIENT, go to Application Settings, enter the IP address of MAIN PLAYDECK and click TEST IP NOW. The CLIENT now tests the Network connection and searches for a valid License on MAIN. If you don’t see the following INFO POPUP, please check your MAIN License and your Network connection between MAIN and CLIENT:
You can now enable the feature by clicking BACKUP-SYSTEM. PLAYDECK will restart now with the exact same License of MAIN. You can verify, the CLIENT is using the Backup License correctly in several Displays:
Note: If the CLIENT has a valid License itself, the License of MAIN will NOT be used.
2. Rules of Backup-License
The Backup-License is not meant for 24/7 operation, but to provide a fail-safe for immediate operation, e.g. in a live production, and without the need to buy a secondary license, just to have a backup system for some use cases.
For unattended 24/7 operation, you would need to purchase a secondary license. Please contact use at [email protected], if your next License is for Backup only, and we will provide you with a appropriate discount.
The MAXIMUM RUNTIME of your BACKUP LICENSE will be: – 2 hours, if the MAIN gets disconnected or closed – 24 hours, if then MAIN stays online
PALYDECK will terminate the CLIENT without prior warning. So please make sure, to bring the MAIN back online within the 2 hour window, or to restart both MAIN and CLIENT within the 24 hour window.
You can control the remaining RUNTIME in the Settings of the CLIENT:
This article will show how to create a Slideshow with Transitions and output on the same Monitor.
1. Creating the Show
Open the integrated File Explorer by clicking the right-arrow between the Playlists. The search for your images folder, select all images and add the to the Playlist by Drag Drop:
Select any Clip in the Playlist and press CTRL+A to select all Clips, then select the Icon for DURATION and enter a suitable duration for each image, e.g. 15 seconds:
While al Clips are still selected, click the Icon TRANSITION next and add any transition. In this case we use a smooth long Fade Transition:
At the bottom of the Playlist you can see the total duration of your Slideshow:
2. Playing the Slideshow
You simply double-click the first Clip (or use Buttons CUE+PLAY), then double-click the Preview Area (or right-click and select FULLSCREEN). Your Playout will now be maximized to your Monitor Size, at maximum Quality. And the Mouse Cursor will be hidden. Use ESC to exit Fullscreen.
Note: During Fullscreen, you can use the SPACE Key to pause/u-pause Playback.
You can also output the video signal on a second monitor, or send it to your TV. You could also send it via NDI to another PC and open the signal with PLAYDECK (use the free Backup License), or VCL Mediaplayer or any other 3rd party app:
We want to create an Action Button, which will CUE several Output Channel and PLAY them simultaneously (almost synced).
Create a new Action Button by clicking on it and select COMMANDS, then EDIT COMMANDS:
Add this Line under “COMMANDS – Internal”: <cue|1|1><cue|2|1><wait|1000><play|1|1><play|2|1>
This will CUE Channel 1 and 2 (1st Clip 1st Block), then wait 1000ms (for caching), then PLAY both Channel.
List of all Commands and where to add them
The List of all Commands can be quickly opened over PLAYDECK’s Main Menu:
Commands can be added to:
Action Buttons (Start, End)
Overlay Button (Start, End)
Clips (Any Time)
Blocks (Start, End)
Mostly via this Icon:
Send Commands from other Apps
We have a separate article on how to control PLAYDECK with Companion.
But what, if it is not Companion, but a different 3rd party App? First, you would need to enable TCP Commands. This will open PLAYDECK up to receive and execute Commands from external sources:
In your 3rd party app, connect to PLAYDECK via TCP and send one or multiple Commands. In this Sample we use Hercules to send a Command, which will start Streams 1 and 2:
This article will show how to use bitfocus Companion together with PLAYDECK. Companion has a ready-to-use module for PLAYDECK. This is the most comfortable way to connect PLAYDECK to your ATEM Mixer or STREAMDECK.
The Companion Module has been developed and is maintained by Semonov Nick. He is a Community Developer and also a great guy to work with.
4. You are done, if Companion shows a GREEN Checkmark for this Connection. If you cant get a Connection, please disable your Firewall or allow TCP Port 11411.
Button Page with Presets
We will use Companion Presets to quickly create a fresh Page of Buttons for a casual Playout Situation.
1. Create a new Page, then go to PRESETS and select PLAYDECK
2. For our Sample we specifically want to target Channel 1. You could also use LISTS, which are dynamic and use the visible Channel in PLAYDECK (Left and Right). You could also control your ASSETS (Streams, Recordings). Select CHANNEL 1 to continue
3. With Drag & Drop we create a simple Playout Solution: Play Control with some Overlays. The Buttons are added with FEEDBACKS, meaning: You will get a RED Button according to the PLAY STATE (CUE, Playing, Paused, Stopped).
4. The PLAY Button also shows the remaining Clip Time during Playout:
5. Some Buttons need more Information for you, like the START OVERLAY Button. It needs to know, which Overlay(s) should be started:
Custom Commands instead of Actions
We will add any PLAYDECK Command to a Companion Button. This is useful, if you are more of a “code” type of person or if there a new Commands in PLAYDECK, which are (not yet) available in Companion. Its also possible to add multiple Commands at the same time.
1. We create a new Button and add a new Action. We now select CUSTOM COMMAND and click DONE
2. In PLAYDECK we open the COMMANDS LIST to review, which Command we want to use
3. We decide that we want to start multiple Overlays on several Channel and after that start 2 Streams:
4. We wrap up all Commands into one Line and copy it into the COMMANDS Field. If we then press our Button, we start our Overlays and our Streams, as all Commands are executed in the written order.
5. Another good example is starting 2 Channel synchronized:
<cue|1><cue|2><wait|1000><play|1><play|2>
This will CUE both Channel, then wait 1 Second for CUE being ready (Clip Caching), then PLAY both Channel.
Custom Button Feedbacks
Instead of using the pre-defined Feedbacks (e.g. PLAY STATE), you can use Companion VARIABLES to use many more Feedbacks. In this example we will start a specific Block and show its remaining Time on the Button.
1. We add a new Block to Channel #1 in PLAYDECK and rename it “MAIN PROGRAM”
2. Now we add a new Button to Companion and assign the CONTROL PLAY FLEX Action to the Button.
3. The PLAY FLEX Action allows us to play a Block by Name (instead of ID). We use the PATTERN “b:main c#1” to start our Block, as described in the COMMANDS LIST (PLAYDECK > Main Menu > Documentation):
4. We now have a Block Play Button, but we also want the remaining Block Time to display, once the Block is playing. For this we need to add a custom Feedback to the Button, which will check “some” variable and do “something”:
5. We check against the current playing Block by searching for “block name” in the VARIABLE field and add our Block “Main Program” as VALUE:
6. We then add TEXT as new STYLE PROPERTY, since our intention is to show the remaining Block Time:
7. Add “$(Playdeck:channel_1_block_remain)” as BUTTON TEXT STRING, and our Button is finished:
8. But how did we receive our BUTTON TEXT STRING? Companion will show you all available VARIABLES you can use in PLAYDECK. You can then click the small COPY ICON to transport the Variable to your Buttons:
This article will show how to load and edit YouTube Videos.
1. Load YouTube into PLAYDECK
You can directly Drag Drop any YouTube URL from your Browser to PLAYDECK:
Or you can use the Stream Drag Drop Icon to paste/edit the URL:
Your YouTube Videos is ready to play out-of-the-box. The quality will be pre-selected dependent on your Playlist Video Format and the Formats provided from YouTube.
2. Update YouTube Driver
Should the added YouTube Clip be shown as UNPLAYABLE/RED in PLAYDECK, please update the integrated YouTube Driver. Chances are, YouTube made changes to its platform and you need a newer driver from us:
3. Change Quality, Video and Audio
YouTube Videos are always available in different qualities. You can switch Video Tracks by right-clicking the YouTube Video:
Note: YouTube provides combined Video+Audio Tracks, which are much faster. If you switch to non-combined Video Track, caching can take much longer and seeking can desync video/audio.
Please use this basic guidelines for your PLAYDECK System. While PLAYDECK can basically play any Codec on any Windows machine, we want you to have a good experience, which requires some rules of thumb.
PLAYDECK can be installed on any Windows 64-bit machine. This includes Windows Server Versions or Custom Cloud Builds.
PLAYDECK needs fast modern Hardware, if pushed to the Limit. It has to transcode any given Video Format and Framerate in Real-time into your selected Output Format. Ideally without any Frame Drops.
As with all Tasks, it all depends on your use case: Are you using the LITE Edition to operate one Full HD Channel in a Live Event for some Hours? Or are you using STUDIO to broadcast multiple UHD Channel to several receiver e.g. Streams, NDI, and all in a 24/7 manner?
One thing is certain: Without a powerful modern NVIDIA GPU you will likely be disappointed. Don’t try to run PLAYDECK over a Intel Onboard GPU, it is not designed for that. Your NVIDIA GPU should have ideally at least a Score of 8000 on the Passmark Scale.
All other PC components should not be much older than 2 years, just to meet modern driver standards, as we update PLAYDECK at least 4 times a year with the latest driver. You will want to utilize and profit from that, as all PLAYDECK updates are free of charge, as long as you have a valid license.
This is a EXAMLPE Spec, we used for our own PLAYDECK Systems:
If you use a dedicated Output Card (e.g. BM Decklink), you will not only offload resources to the Card and reduce overall System GPU/CPU load, but you will also benefit from:
More “true” Colors
Nearly Zero Frame Drops due to Frame Rate Control
Overall higher Picture Quality
Much more stable than HDMI over Desktop (no Windows-interference)
We support Output Cards from these Manufacturers (see complete List):
Blackmagic Design
AJA
Deltacast
Bluefish444
DekTect
Magewell
Osprey
Stream Labs
Yuan
ASIO Devices (eg DANTE)
CPU Usage = Stronger CPU needed
If you fall under one of the following categories, please plan a stronger CPU for your System:
– You are mostly using CPU Codecs, that can’t be GPU-decoded with PLAYDECK: ProRes, HAP, DNxHD – You use multiple NDI Outputs, as they are encoded on CPU only – You are heavily using Overlays in PLAYDECK, as they are also CPU-only – You are using multiple screen captures or web camera devices
Notebooks
If you are aiming for mobile productions, we go with the XMG ULTRA 17 or the Razor Blade Notebook and extend it with a Blackmagic Ultra Studio card via the thunderbolt interface. If in doubt, which manufacturer to go for, decide for a Gamer Notebook. Those are designed to run at maximum performance. Avoid buying Office-type Notebooks like Dell, which are designed for power saving and can seriously limit your playout performance.
Sometimes, in Live Productions, you have to send the Audio delayed compared to the Video, to compensate for the processing Lag of huge LCD Screens (Lipsync). Or add a Limiter/Gate to the Microphone Input Audio.
This is actually pretty fast to implement in PLAYDECK. You add the ADELAY Audio Filter to the Channel like this. In this example we set 600ms Delay for Audio Channel 1 and 2:
This can also be set to INPUTS to compensate for any incoming Lipsync Issue.
Copy Audio and Delay
You can also COPY the Audio Channel 1 and 2 to Audio Channel 3 and 4 and delay those. The use case here is, that the Audio Mixer Person has Live Preview Audio.
This needs to be done on the Playlist Level, so clear any Audio Filter in the Settings.
First, make sure to increase the Audio Channel for your Output Channel, otherwise all Audio Channel above 2 will not be processed:
The Right-Click any Playlist Item and select AUDIO CHANNEL MAPPING:
This will copy Audio Channel 1 and 2 to Audio Channel 3 and 4:
Now right-click the Playlist Item again, select AUDIO FILTER and add the ADELAY Filter, but only for Audio Channel 3 and 4:
More Audio Filter
For a complete List of all Audio Filter, click SHOW SAMPLES. This will open a TEXT FILE with Examples.
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).
This article will show how to enable detailed Video Engine Logs for us to analyze.
1. Enable Logging
In PLAYDECK go to 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 occurred, 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:
After uploading click the COPY Button and send the Link to [email protected]. Please donÄt forget to send the Date/Time of the Issue/Problem occurrance, so we can easily find it in the Logs.
4. Clean Up
You can now safely delete your ZIP File.
Also make sure to deactivate 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.
SCTE Marker are mainly used to insert Ads into the Video Output by signaling 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.
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.
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 separate SCTE Marker to Start/End the Ad. Those are called CUE-OUT (leaving your Program for Ad) and CUE-IN (return to your Program).
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”.
Open PLAYDECK. You don’t 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 don’t 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:
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:
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.
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. Go to “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, go to “MPEGTS Out” and click the “Add outgoing stream” Button, then add like this. Make sure you select you input stream 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. If you select “Apple HTTP Live Streaming” as Streaming Format, the output will be written to a file. You therefore need to specify a file target as “Stream URL” e.g. “c:\Users\Public\Documents\stream.m3u8”. Then use that File to stream using any Streaming Server. 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.
Once you posted that URL into CHROME, you will see your PLAYDECK stream playing immediately. Now let me show you how to monitor your SCTE Marker. In Chrome press F12 to open the Developer Tools. On top 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 isn’t 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 doesn’t 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 successful in Nimble, it will look like this:
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.
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.