Denver Open Media running multiple playback servers

Events happening in the community are now at Drupal community events on www.drupal.org.
civicpixel's picture

Denver Open Media is now running multiple playback servers integrated with a single Open Media System. Two of our channels are being driven by Telvue Princeton servers, and thanks to the generous donation of time by Tightrope and Ray Tiley(raytiley), we started running our third channel in early October on a Tightrope/Cablecast server. The transition to using an additional playback server went remarkably well thanks to the Cablecast code already written by Darrick(darrick) at Davis Media Access and on-site support from Ray. Leo(lkacenja) was also able to apply the new scheduling logic in Open Media Timeslot scheduler to the server enabling it to be completely auto-scheduled, and we didn't have to deal with any file movement as the Cablecast can access files on external shares (our RAID in this case). For the record, we did have three issues that needed to be addressed regarding integrating the Cablecast into our OMP workflow:

  1. Cablecast requires a numeric ID at the beginning of all broadcast filenames (ex: 401-wgtv_youngchristianministryprogram.mpeg). This ID is generated by Cablecast when a show entry is created. Since we already had over 4000 shows in our library, we did not want to try and rename them all and deal with the ramifications of that so we setup a cablecast folder on our RAID, and wrote a small bit of code to take the cablecast ID on show insertion, and creates a symlink in the cablecast folder pointing back to the existing broadcast file.
  2. Cablecast requires files to be in a flat file system. Our file setup stores shows and derivative files by project, ie. /RAID/Words_Of_Peace/words_of_peace_episode_21.mpeg. Conveniently, the symlink solution for the ID issue resolved this as well, as the symlinks are stored in the flat cablecast folder.
  3. Cablecast (and apparently many other playback servers) does not support AC3 audio, which is the format we used on all our existing files. We discovered this at the end of our process, luckily Ray came up with a great solution for this by writing a standalone PHP script to check the audio format on files that appeared in the cablecast symlinks folder -- for files with AC3 audio, the script runs ffmpeg on them to generate a version with mpeg2 audio and stores that file in a separate cablecast_mpegs folder (Cablecast can look to multiple external folders to find files). The script continues to generate files as old content is auto-scheduled on the Cablecast, but this happens less frequently as we have been encoding all new files to follow the ACM standard specification, using this ffmpeg command:
    fmpeg -i /home/brian/briantesting145.mp4 -acodec mp2 -ar 48000 -ab 128k -vcodec mpeg2video -r 29.97 -f dvd -copyts -s 720x480 -g 15 -b 7000000 -maxrate 8000000 -minrate 5000000 -bufsize 835008 -packetsize 2048 -muxrate 10080000 acm-standard-test.mpeg

In the course of configuring this workflow and updating auto-scheduling, Leo also took the opportunity to start a new module to make playback server integration easier -- Open Media Playback Servers. This module is an ongoing effort to wrangle all playback server specific code into one place. Along with Open Media Airings, this module replaces Open Media Broadcast Sync and starts to move playback server specific code out of the Open Media Timeslot Scheduler server sub-modules. Open Media Playback servers provides a series of standard functions for interacting with supported playback servers -- currently these are limited to adding and updating schedule events, but more are planned and documented in the issue queue. At the moment the module includes support for Cablecast and Princeton servers and will soon support Synergy thanks to the work of Rich Vasquez, Stefan(stefanwray) & Kevin(kreynen). For more information on this module keep an eye on the project page.

The last part of the Cablecast integration involved configuring their Carousel product to pull some content from RSS feeds on our site. This included setting up a slide that pulls our upcoming classes as well as one that pulls upcoming shows for all three of our channels. We configured the auto-scheduler to leave 1 minute gaps between programming, which are filled by the content from the Carousel. This was a nice solution as anyone with a Drupal site that can generate RSS feeds (which is easy enough with views) can pull dynamic content into the Carousel.

Open Media Project

Group categories

Audience

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds:

Hot content this week