From Avid Airspeed / DEKO to CasparCG in a week*


I've had quite the experience with CasparCG over the last week, and wanted to share it.

I work at a training facility, and for various reasons we still had a 10+ year old (I think) Airspeed classic and just as old DEKO as our playout/CG. Just before the holidays, the Airspeed died (smoke), and Avid (who I am not a fan of at all) were scraping the barrel to find anyone who could remember how to fix it.

I've had Caspar running as a spare time project for a couple of years, and more recently have used "get iNews to talk to Caspar" as my learn Python programming project.

Since our Avid setup is so old, its been a nightmare to find compatible replacements or upgrades that don't mean replacing the entire system, we cut our losses and this week we've deployed CasparCG 2.1b2 to replace both Airspeed and DEKO. My Python script searches through the iNews stories, extracts the production cues that would have talked to the Airspeed/DEKO and compiles a CasparCG xml run order to load into the client.

My iNews script does not use the CasparCG client iNews backend (I'm a beginner programmer, so no chance of reverse engineering that for me)

I don't think the code would be of any help to anyone since its written to mirror a very specific workflow, plus my programming is amateurish at best, but the basic function is: Pull NSML files from iNews over FTP, use the BeautifulSoup 4 library to scan the tags for the production cues, fill in the blanks in the boilerplate XML and write it to a CasparCG run order. I have a shell script as a launcher, which then re-scans in the background so we can load changes from iNews.

One killer feature for us has been the .psd producer which really sped up our deployment. It also means our students can create rich graphics using existing skills rather than have to learn AE or Flash - an advantage in a very tough and compressed schedule. I think I've found a bug in the producer which I will write up in another thread :)

Caspar has impressed quite a few colleagues doing demonstrations today, and solved a whole load of workflow and usability issues we've had too (no automation of lower thirds, limited video codec support since it all had to go in via Avid MCs transfer tool).

There are few things still to work on - the "time elapsed" counter in the client sometimes works, sometimes not, and I think thats some network oddity. It would be nice to scrape the absolute duration from a clip and count down rather than up.

I may look at (re)building a client in the future, but I have a lot of learning to do first!

*it wasn't quite a week, maybe 6 total spread over 2 years :)

Re: From Avid Airspeed / DEKO to CasparCG in a week*

Thanks for posting this interessting use case. While you are right, it's a very specific thing, but it shows to other users, that a little "thinking outside the box" can solve a lot and also that Caspar is quite a flexible beast. Keep up the good work.
Didi Kunz
CasparCG Client-Programmer, Template Maker & Live CG-Operator
Media Support, CH-5722 Gränichen, Switzerland
Problems? Guide to posting Bug reports & Feature requests

Re: From Avid Airspeed / DEKO to CasparCG in a week*

forbyd wrote:
12 Jan 2018, 22:06
I am from Brazil, work television company and I have workflow avid with 6+ years old here (air speed, deko, commands,inews, etc..), and your project look soo nice.
I Would like to know more details of the project if possible.
Thanks you.
Hi. I'm in the UK.

The system I have built has 2 generic i5 PCs (time and budget constraint, so not ideal) as an "A" & "B" Channel each, with some network storage for the content (again, not ideal) . We had to use two machines as the .psd producer emits garbage when an nvidia card wasn't installed in the machine, and they only had 2 PCIe slots. There is nothing special about the installation of Caspar Server itself. Each machine has a Decklink 4k Extreme and a Quadro 600 (a low end card, but our graphics requirements are very low-end). Performance is very good.

The client is a vanilla iMac in our gallery running the CasparCG Client, and also hosts my Python data scraper. We do not have iNews command - everything was manually played using Avid ControlAir before I installed Caspar.

The scraper uses the Beautiful Soup library, which can extract data and navigate tags in XML and HTML etc. The NSML in iNews (we are using 3.3) is close enough to XML that it works and we can search for things like production cues, and extract the data from them (names, titles, scores, weather), and feed them into a .psd template. VideoIDs and story names are populated the same way. This is then automatically turned into a group for the client, so our operator (a student in training) just has to press play for each event. The captions are automated based on a value the writer puts into the caption cue in iNews.

An example would be:

* CG 2line_caption ALICE WILLIAMS <---- avid production cue + first line of caption
Cafe Owner <--- 2nd line of caption
zin36 <---- special code for "In Point", in seconds (converted by the script to "ms" for Caspar)
zdur6 <-- "duration" - for how long to keep that on the screen.

the zin and zdur are part of a handful of new markups I created for passing timing or data through - this is probably the only major change on the iNews side compared to using the Airspeed/DEKO setup.

Beautiful soup looks at the NSML file from iNews, finds *CG 2line_ and puts all that data in the right place, and writes out CasparCG-friendly XML to a file.

We do this all the way through the run order until we run out of NSML to scrape, then launch the client.

General flow of the scraper is: Ask for a desired run order > open that folder over FTP and download all the NSML files inside > use the Beautiful soup library and use if <cue> "startswith" <name of template> then <write caption to Caspar rundown with this data> operations > sanity check things (does a caption have timing information?, is the video file there?, has someone put a football score in a weather graphic? and list where the problems are so they can be fixed > open the client and keep re-scraping in the background so you can re-load any changes from iNews if needed.

I can't release the code (yet) - strictly speaking its my employers code. That said its education not corporate so I don't think there would be any issue to eventually open source it as a starting point for others.

Even then, most of the script is very simple string matching and is built on examples from elsewhere. Start with Beautifulsoups documentation and go from there (assuming you have some Python knowledge first :)

If this was a clean-sheet design, I would probably do many things differently and have more appropriate machines (and more outputs!) to run this, but I have very limited time and resources (in the cost of commercial high-end broadcast technology context) to solve a major problem in a limited time.

I hope this gives you an idea of how the "magic" bit between iNews and Caspar can happen. There are likely other more efficient ways but this works very well.

Edit:(I noticed I repeat myself somewhat in the first post to this one - tired and have a head full of python and ACMP :)

Re: From Avid Airspeed / DEKO to CasparCG in a week*

frozen wrote:
13 Jan 2018, 16:36
I would be very interested to hear about this. I just spent a week in a facility where they are afraid to turn off their DEKOS because they might not come back up.. lol :)
I know that feeling!

We only removed our deko as part of this as we didn’t want two systems to operate at the same time. (Plus we stole the xkeys control panel to use on the Caspar client >_< )