Content Displays
My work had a need to replace our existing content displays with a few considerations. They had to run 24/7 and be able to manage anywhere. I landed on a solution that uses headless Raspberry Pis to receive a RTMP stream from a server computer on the network. This solution was affordable, expandable and easily managed and, most importantly, open source.
The server stream is handled by OBS with content loaded from a Google Drive folder. That way the content can be updated from any device on any network. OBS has a native media playlist feature however for my use case that would not be useful. OBS only loads the files into RAM when the scene is selected. If the contents of the loaded folder is changed while the scene is active, OBS will not reload the file. This meant I had to use another playback software that would.
I opted for Max. Partly for my familiarity with the software, ease of working with video and relatively lightness compared to game engines that would offer similar features. There are four Google Drive folders: ads, sizzle, events, and weddings. Mostly the system collates the first two, which contains posters for upcoming events and glamor shots of the church. This system auto-updates every time a change is made to any of the folders, solving our problem with OBS. Using Streamdecks running Bitfocus Companion, any staff member has the ability to change what folder is being played. This gives our events team the ability to sell our screens to clients, allowing myself to preload the other two folders with content and switched to the day of. This keeps in line with the design goals of being easy to manage and accessible.
Max sends video the OBS via syphon, keeping the overall load to minimum. OBS then broadcasts that content to a RTMP server on the same device which is then distributed to the content displays around campus. Additionally, OBS broadcasts its output to NDI, which can be then picked up by our service stream computer to use as prerolls.
The displays themselves are connected to a Raspberry Pi Zero. They are configured with a script to auto-launch VLC on the command line to the local RTMP server on launch. No management required at all. As long as the Pi and TV has power and WiFi, they will work automatically. Here is a rundown of how I set up the script.
A couple of possible questions: why not use the VLC app on a smart TV to do the same thing? There’s no way to automatically load a VLC session on Google TV into the stream on start up, requiring someone to find the remote and interact with the clunky TV interface. Using a $20 Pi is more consistent. Additionally, I can set up the script to automatically reconnect on connection lost and hold the image while it is disconnected. Overall, I think it's the most elegant approach.
Why Max? Because I think it's cool. But also for the file handling. No other piece of software that I know of will automatically update when the directory changes. Mostly because all the software that can handle video like that is not what I like to call “directory-based”. Propresenter, Resolume, Madmapper, only cares for the files themselves, not the folder in which they reside. It does not matter what you add to that folder, as long as the linked files are not moved. Not only is Max cheaper than all of those other pieces of software but it is also infinitely customizable. The reason I am able to a streamdeck to control playback is because you can set UDP commands to do literally anything. Other pieces of software have predetermined UDP addresses that control certain parameters. Even if I could get another piece of software at act exactly like my Max patch, there is no guarantee there will also be a way to control it easily over the network.