Friday, February 22, 2013

I developed a digital signage application for my employer some time ago, but we ended up using Mac Mini's at the time. With the advent of the Raspberry Pi computer I thought it might make a good candidate for DS, but I had a heck of a time when it first came out getting any kind of movie playlist working.

I tried VLC, some other media players, trying to find a way to make the built in omxplayer play a playlist, nothing. Nada. Nothing worked. I could not figure out how to make an unattended digital signage device.

So I gave up. For a couple months.

When I decided to revisit the issue, a little research showed that nobody had really solved the playlist issue, so I thought I'd try to find another way around it. And I did.

It was always easy enough to just have a script that plays videos in sequence using omxplayer, however this solution wasn't quite perfect because the stream would have a 1 second pause that would show the desktop while it switched videos. The solution turned out to be simply turning on the screen saver. May sound easy, but it took me a while to figure it out!

So other than a slight pause between videos, this solution works perfectly. Here's the steps to get it going:

WARNING! If you do this, the screen saver will kick in every 1
second of idle time, even if you move the mouse. Make sure you have SSH
enabled so you can remote into the system to disable this later if you
need to!

1. Set up Raspbian on your Pi device according to their instructions.
2. Make sure you're signed on as pi, not root, then from a command line enter:sudo apt-get install x11-xserver-utilsmkdir /home/pi/digitalsignagemkdir /home/pi/digitalsignage/moviesnano /home/pi/digitalsignage/piScreensaver.py

Here I'm using a python script to use the X11 xset command to turn the screen saver on:

import os,sys,time

def SetScreensaver(): time.sleep(15) # wait for the system to finish booting for x in range(0,5): # try turning it on once every minute for the next 5 # minutes just in case! os.system('xset -display :0.0 s 1 60 -dpms') # The -dpms turns the power save option off time.sleep(60) return

if __name__ == '__main__': SetScreensaver() sys.exit()

Press CTRL-O [ENTER] and CTRL-X to save and exit.

Then we create the player module:nano /home/pi/digitalsignage/piPlayer.py

Next you have to copy your MP4 video files to the /home/pi/digitalsignage/movies folder.
Once done, create the playlist. Let's say for this example we have "video1.mp4" and "weather.mp4", and you've uploaded them to the /home/pi/digitalsignage/movies folder. Type:

That's it! When your Pi reboots, it will come up with a full video playlist player and start automatically.

Now, I've actually wrapped some other functionality around it for my employer, such as having a web-based management program that will load new videos to the Pi then restart the playlist, that sort of thing, but if you're looking to set up the playlist functionality this should hopefully help!