Documentation

PlyCast - Free Playout Automation Client


  • Version: V1.0.4.3-rc
  • Author: PlyCast
  • Update: 26. Dec 2022

Please use the forum to report issues, bugs or feature notes >


Getting Started

These requirements are necessary for the smooth running of the software:

  1. System requirements
    • Windows 10/11 64bit
    • Intel Processor (recommended)
    • 8GB RAM
    • OpenGL 4.5 is required
    • Disable User Account Control (UAC)
  2. Required Third-Party Software
  3. To avoid problems, PlyCast should be started in the logged-in user's home folder.
    Not in the Programs folder!

Informal

  • The PlyCast Package includes the following third-party software (All third-party providers use their own license terms):
  • PlyCast is visualized by the Icons8 icons.
  • Please do not delete any files in the root folder.
  • PlyCast automatically registers a new file extension ".plyt"

THE SOFTWARE (PLYCAST) IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


Setup CasparCG

The basic prerequisite for the smooth operation of PlyCast is the correct configuration of CasparCG - The Heart of PlyCast. These configurations must be configured correctly before the first start.

The CasparCG system requirements also apply to PlyCast.

The CasparCG configuration file is called casparcg.config and is located in the PlyCast folder videoserver (~\videoserver\casparcg.config)

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <paths>
    <media-path>media/</media-path>
    <log-path>log/</log-path>
    <data-path>data/</data-path>
    <template-path>template/</template-path>
  </paths>
  <lock-clear-phrase>secret</lock-clear-phrase>
  <channels>
    <channel>
      <video-mode>1080i5000</video-mode>
      <consumers>
        <screen/>
        <system-audio/>
      </consumers>
    </channel>
  </channels>
  <controllers>
    <tcp>
      <port>5250</port>
      <protocol>AMCP</protocol>
    </tcp>
  </controllers>
  <amcp>
    <media-server>
      <host>localhost</host>
      <port>8000</port>
    </media-server>
  </amcp>
</configuration>

The video-mode Node, will set also PlyCast Source Frame.

<video-mode>1080i5000</video-mode>
Please be sure to read the CasparCG instructions

Setup PlyCast

Before PlyCast can be started for the first time, PlyCast must be configured.

The configuration file is called plycast.config and is located in the Root-PlyCast directory. PlyCast sends emails in case of master errors and supports MySQL/MariaDB for external log storage.

<?xml version="1.0" encoding="utf-8"?>
<PlyCastInstance MailAlert="0" UseMySql="0" PlayChannel="1" AutoSave="5" ListMode="1" DisableLogo="0" DisableCG="0" ShowControl="1" ChapterSupport="1">

  <InstanceName>Primary BroadCast</InstanceName>

  <EmergencyPlaylist></EmergencyPlaylist>

  <mailto></mailto>
  <frommail></frommail>
  <smtp_server></smtp_server>
  <smtp_username></smtp_username>
  <smtp_password></smtp_password>
  <smtp_port></smtp_port>
  <smtp_ssl></smtp_ssl>

  <msg_videoerver>
    <![CDATA[<h4>Video Server is not connected!</h4>]]>
  </msg_videoerver>
  <msg_stop>
    <![CDATA[<h4>PlyCast Server was stopped!</h4>]]>
  </msg_stop>
  <msg_shutdown>
    <![CDATA[<h4>PlyCast Server was Shutdown!</h4>]]>
  </msg_shutdown>
  <msg_emergencyloaded>
    <![CDATA[<h4>Emergency Playlist was loaded!</h4>]]>
  </msg_emergencyloaded>

  <mysql_server></mysql_server>
  <mysql_database></mysql_database>
  <mysql_tablename></mysql_tablename>
  <mysql_port></mysql_port>
  <mysql_username></mysql_username>
  <mysql_password></mysql_password>
  <mysql_sslmode></mysql_sslmode>

</PlyCastInstance>
Attribute Setup
<PlyCastInstance MailAlert="0" UseMySql="0" PlayChannel="1" AutoSave="5" ListMode="1" DisableLogo="0" DisableCG="0" ShowControl="1" ChapterSupport="1"> ...
Attribute Description
MailAlert 1 Activate
0 Disable
UseMySql 1 Activate
0 Disable
PlayChannel [1 .. ] The PlayChannel is based on the CasparCG configuration: <channels>...</channels>
AutoSave [1 .. ] in Minutes
ListMode 0 Normal
1 CleanUp every hour
2 CleanUp constantly
DisableLogo 0 Activate
1 Disable
DisableCG 0 Activate
1 Disable
ShowControl 1 Activate
0 Disable
ChapterSupport 1 Activate
0 Disable
More in the section "Playlist Management"
Node Setup
<InstanceName>Name</InstanceName> ...
Node Description
InstanceName The name of the current PlyCast Instance
EmergencyPlaylist Complete File Path to the Emergency Playlist (.plyt).
Disabled if empty.
smtp_password
mysql_sslmode
Must be Base64 encoded!
smtp_ssl True
False
mysql_sslmode none will work or use a cert

HTML based e-mail messages. Use CDATA! <![CDATA[...]]>

Node Description
msg_videoerver As soon as CasparCG (VideoServer) is no longer connected.
msg_stop As soon as the PlyCast stops.
msg_shutdown Once PlyCast has closed.
msg_emergencyloaded Once PlyCast has loaded the emergency list.

Logs

PlyCast creates log files and saves them in order on a daily basis. The log files are located in the logs folder (~\logs). The log files are saved as comma-separated txt files (UTF-8).

Log-Folder Short Acces from Menu:

  • Tools
  • Folders
  • Logs


Logo Configuration

<?xml version="1.0" encoding="utf-8"?>
<Logos>
  <Logo>
    <LogoName>Logo 1</LogoName>
    <LogoUri>C:\Users\PlyCast\Logo1.mov</LogoUri>
    <LogoDelay>0</LogoDelay>
    <LogoMix>16</LogoMix>
    <AutoOn>*</AutoOn>
    <AutoOff>W_</AutoOff>
    <PlayLayer>5</PlayLayer>
  </Logo>
  <Logo>
    <LogoName>Logo 2</LogoName>
    <LogoUri>https://plycast.com/downloads/testhtml/</LogoUri>
    <LogoDelay>0</LogoDelay>
    <LogoMix>16</LogoMix>
    <AutoOn>*</AutoOn>
    <AutoOff>W_</AutoOff>
    <PlayLayer>6</PlayLayer>
  </Logo>
</Logos>
Nodes Description
LogoName Name of Logo
LogoUri The Location of the Logo (Url or Filepath)
LogoDelay [1 ... ] in Seconds
LogoMix [25 ... ] in Full-Frames (Fade Duration)
AutoOn [*,One,Two] Text separated by a comma. * = All Clip Names
AutoOff [*,One,Two] Text separated by a comma.
PlayLayer [2 ...] Played layer
AutoOn/AutoOff: The logo is automatically faded in or out during a match. The whole path is searched for a match. Use *(Asterisk) to match every File (AutoOn Only).
Test Files/URL

TGA information: In order to be able to use TGAs, an alpha channel is required and the image must be saved as 32bit.


CG

Images, movies-files with an alpha channel, HTML5 links with transparency or a Python Script can be used as a CG. Several CGs are possible and can also be changed in the playlist. The CG layers are emptied again at each OnAir event.

  • The CG layer can be added or removed manually or automatically via FileMatch.
The CG configuration file is called cg.xml and is located in the PlyCast folder cg (~\cg\). In the Tools menu, the logo configuration can also be carried out during operation. However, PlyCast must apply the changes. Automatic confirmation occurs after saving the file.

Any layer can be used for the cg: A uniform layer structure is an advantage. Example: Logo layer 10, CG layers: 5-9.

Important PlyCast only processes layers 1-24: Layer 1 is used as playout layer


CG Configuration

<?xml version="1.0" encoding="utf-8"?>
<CGs>
  <CG>
    <CGName>CG 1</CGName>
    <CGUri>https://plycast.com/downloads/testhtml/</CGUri>
    <CGUpTime>00:00:00.000</CGUpTime>
    <CGDowntime>00:03:20.000</CGDowntime>
    <CGDuration>00:00:30.000</CGDuration>
    <CGMix>16</CGMix>
    <PostURL>True</PostURL>
    <CGLayer>20</CGLayer>
    <AutoOn>*</AutoOn>
    <AutoOff>W_</AutoOff>
  </CG>
</CGs>
Nodes Description
CGName Name of the CG
CGUri The Location of the CG (Url or Filepath)
CGUpTime [hh:mm:ss.fff] Starts CG on Current File Time-Position
CGDowntime [hh:mm:ss.fff] Starts CG on Current File Time-Duration-Position
CGDuration [hh:mm:ss.fff] Duration of CG (will FadOut after)
CGMix [25 ... ] in Full-Frames (Fade Duration)
PostURL [True/False]
URL Only: If True, keywords in the URL will be replaced.
Example: https://www.example.com?token=%UID%&filename=%FILE%&category=%CAT%

The PostURL values are URL encoded! It is recommended to check the maximum string length on the web server.

Keyword Description
%UID% Generates a unique GUID
It is recommended to always deliver the UID in order not to receive a page from the cache.
%FULLFILE% Current full file path
%FILE% Current file name including file extension
%CAT% Current Category (NAME;COLOR)
%NEXTCOMMENT% The next comment is passed
CGLayer [2 ...] Played layer
AutoOn [*,One,Two] Text separated by a comma. * = All Clip Names
AutoOff [*,One,Two] Text separated by a comma.
AutoOn/AutoOff: The CG is automatically faded in or out during a match. The whole path is searched for a match. Use *(Asterisk) to match every File (AutoOn Only).
Test Files/URL

TGA information: In order to be able to use TGAs, an alpha channel is required and the image must be saved as 32bit.


Playlist Management

The playlist can be operated as usual with the mouse.

  • Simply add files to the list by dragging and dropping them from Explorer.
  • Copy, cut, delete and paste are performed with the usual combinations.
  • PlyCast can be closed. The last File in CasparCG will play until the End.

Shortcuts

Shortcut Description
MEDIA-KEY: PLAY/PAUSE Take Selected Item
MEDIA-KEY: JUMP NEXT Cue/Onair Next Item
F5 Clean Playlist
ESCAPE Clear All Selected Playlist Items
ENTER Sets Event Properties
CTRL + C Copy Playlist Item
CTRL + X Cut Playlist Item
CTRL + V Paste Playlist Item
CTRL + S Save Current Playlist
DELETE Delete Selected Playlist Item
LEFT SHIFT + DRAGDROP Random Files
SHIFT + MOUSE Select Up/Down
CTRL + MOUSE Select Multiple Playlist Items
ARROW UP/DOWN Select Items Up and Down

Expired Files

PlyCast can display a message when a file has expired. This feature is perfect for ads that should only run within a certain time.

  • FileName_EX2022-06-01.mp4
  • Use _EX followed by Date YYYY-MM-DD

Events

Events are permanently implemented playlist functions. They are the basic functionality of PlyCast and cannot be modified or enhanced. In order to be able to edit a function, the function must first be selected in the playlist. Then you can modify them with a double click. Just right click in the Playlist and load the Function from the menu.

Events Description
Stop The playlist is stopped until it is started again with a take. This mode is written to the playlist and remains unchanged even on reboot.
Take Cancels the current Item and immediately starts the selected one.
CleanUp Remove "AS RUN" Items
Comment Creates a playlist item for Comments
GoTo It creates a playlist item to go to a specific comment. If an error shows, the comment was deleted or renamed. "GoTo" will set ListMode temporarily to 0 and back if no GoTo/Loop is inside anymore.
Fixed Event Creates a playlist item and Start at the given Date and Time.
If the fixed event was created in a template, it will only be included in the playlist if the date is greater than the current date. Otherwise, it automatically becomes a follow-item as if the fixed event was previously an "AS RUN" item.
Stop Event Stops the playlist (black is shown) until the duration has been reached: All channels are reset.
Wait Event Creates a playlist item and waits until the duration has been reached: All channels stay as they are.

Chapters

PlyCast supports chapters that are integrated within a file. When importing (drag & drop), the file is automatically segmented. The addition of a corner bracket simplifies that the segmentation was successful.

  • Import > TestFile.mp4
  • Segmentation > TestFile.mp4 [Name Od Chapter], TestFile.mp4 [Name Od Chapter], TestFile.mp4 [Name Od Chapter] ...
  • Remove > TestFile.mp4 (in Playlist Only)

The main file will be removed from the playlist after import.

The activation and deactivation can be changed temporarily in the "Tools" menu. On restart, however, the configuration data is taken over again.
Test Files
Create Chapters

With FFMPEG, for example, chapters can be created. It is important that the TIMEBASE is 1/1000. This means: The start and end points must be specified in milliseconds.

FFMpeg Command
ffmpeg -y -i "NoChapterTest.mp4" -i "Chapters.txt" -map_metadata 1 -codec copy "ChapterTest.mp4"

Example Chapters.txt
;FFMETADATA1

[CHAPTER]
TIMEBASE=1/1000
START=0
END=5000
title=Chapter 1

[CHAPTER]
TIMEBASE=1/1000
START=5000
END=10000
title=Chapter 2

Categories

Plycast has the possibility to set categories (name and color). The Category configuration file is called cats.xml and is located in the PlyCast Root folder. PlyCast must apply the changes. Automatic confirmation occurs after saving the file.

<?xml version="1.0" encoding="utf-8" ?>
<Categories>
	<item name="Live" color="#ffc75f" automatch="show"></item>
	<item name="Ads" color="#ff6f91" automatch="wj,w"></item>
</Categories>

A category can be reselected with right-click or the complete playlist can be recategorized in the "Tools" menu.

Nodes Description
name Name of the Category
color Color of the Category (HTML HEX, including hashtag): #ff6f91, #ff9671, #f9f871, #2c73d2.
Depending on the background color, PlyCast automatically changes the text color from black to white.
automatch PlyCast automatically searches for a match (comma separated) to assign the category. The complete path is searched. But only when importing clips.

Plug-Ins

This section will be edited shortly. Changes are pending in version V1.0.4.3-rc.

With plug-ins you can expand PlyCast according to your needs. Plug-ins can deliver files or perform other miscellaneous tasks. Plug-ins are saved as Python scripts in the plugins folder where is located in the PlyCast Root-folder (~\plugins)

Visit our Plugin Directory >

Install PlugIns: File > Import Plugins

This is a simple Plug-In example.

import sys, glob, random, os, socket

def InitGui():
    GuiLoader = "SingleFile"
    print(GuiLoader, end = '')

def InitLoad():
    print("LOAD: "+sys.argv[2])
    f = open("cue.txt", "a")
    f.write("Now the file has more content!")
    f.close()
    print("", end = '')

def Cue():
    print("CUE")
    f = open("cue.txt", "a")
    f.write("Now the file has more content!")
    f.close()

def OnAir():
    print("PLAY")
    f = open("play.txt", "a")
    f.write("Now the file has more content!")
    f.close()

if sys.argv[1] == "cue":
    Cue()

if sys.argv[1] == "onair":
    OnAir()

if sys.argv[1] == "load":
    InitLoad()

if sys.argv[1] == "gui":
    InitGui()

PlyCast sends 4 commands to the plugin.

Command Description Playout List Manager
gui Comma-separated fields that can be filled in when pasting or double-clicking. X X
load Loads is executed when inserted into the playlist. Loads can send files back to the playlist. To do this, a return value with the complete file path (comma separated) must be returned. Important! (end = '') ath the end when print. X
cue Can't return Files but Fired your Code at Cue. X
onair Can't return Files but Fired your Code at OnAir. X
Note PlyCast runs the following command in the background:
python.exe "[gui,load,onair,cue]" "[gui-command-1]" "[gui-command-2]" ...
Files

Templates

Templates make working with PlyCast easier. You can prepare individual programs or entire days in them. The plug-ins and functions are only executed when they are imported into the main playlist.

How to create a template:

  • File
  • Create Template...

Templates are independent files that can also be opened directly from Explorer. In order to use a template, it simply has to be dragged and dropped into the playlist.

Note "LOAD" Event on Plugins will not fire in Template-Mode.

Support

We do not offer support, but we have opened a forum where all questions and answers will be posted.
Visit the forum >

Don’t forget to Rate PlyCast at Facebook


Changelog

Version 1.0.4.2-rc (20 Nov, 2022)

  • Featrue Category support has been enabled and integrated.
  • Info The second menu "Tools" has been deleted.
  • Bug-Fix The right-click error has been fixed.

Version 1.0.4.1-rc (18 Nov, 2022)

  • Bug-Fix Jumping Functions

Version 1.0.4.0-rc (15 Nov, 2022)

  • Updated New Core