I was lookin to set up some digital signage, nothing too fancy, basically a scaled up digital picture frame with a few extra features. It’s also important that it works well stand-alone.
This is what I came up with
There are more options than I expected but two really stood out to me, xibo and concerto. Both are built with php/mysql.
My first attempt was xibo on ubuntu 12.04, which only ended in tears. I tried again with 10.04 and had some success. The client (display) is written with python for linux, .NET for windows. I got everything set up and running, but not running well. I want it to play a video that’s just over 5 minutes in length. The .NET client hangs at the end of the video and doesn’t progress to the next slide. I was unable to get the python client to play video well at all.
Moving on.
I eventually found a simplified install guide for concerto. It isn’t very complicated at all, but the instructions could have been better.
Concerto Overview – http://www.concerto-signage.org/deploy
One thing I like about Concerto is the flexibility. It’s very simple to have it geographically distributed over the internet or a VPN or WAN, or across multiple buildings at a single site, or limited to a single stand-alone machine that’s both server and client.
I wanted the frontend and backend to be the same machine, so I installed the backend and used chromium in app mode for the display.
Official instructions – http://www.concerto-signage.org/help_pages/30
Better instructions – https://groups.google.com/forum/?fromgroups=#!topic/concerto-digital-signage/NJbhl0CwshQ
A few things to note about concerto.
- the screens (displays) are identified by MAC address
- you have to import templates before you can create a screen (http://www.concerto-signage.org/help_pages/38)
- changing a screen’s size or template will disassociate everything
the URL for viewing a screen is http://127.0.0.1/?mac=00:00:DE:AD:BE:EF assuming 127.0.0.1 is the concerto server’s IP address and 00:00:DE:AD:BE:EF is the MAC address you entered for the screen
I found an excellent guide for building a browser kiosk. Arch linux wiki has an interesting page too.
http://www.alandmoore.com/blog/2011/11/05/creating-a-kiosk-with-linux-and-x11-2011-edition/
https://wiki.archlinux.org/index.php/Creating_a_Web_Kiosk
I also wanted to be able to trigger a video to play on demand. I was able to get xbindkeys to run a script. arch linux has an excellent guide for xbindkeys.
https://wiki.archlinux.org/index.php/Xbindkeys
I was able to get mplayer to play full screen
mplayer -vo xv -fs -stop-xscreensaver -zoom /opt/test.mpg
.xbindkeysrc
[bash]
#start video
"bash /opt/launchvid.sh"
grave
#kill session
"kill `ps aux | grep .xsession | grep -v dbus | grep -v grep | awk ‘{print $2}’`"
control + 0
[/bash]
.xsession
[bash]
xset s off
xset -dpms
matchbox-window-manager -use_titlebar no &
/usr/bin/xbindkeys &
while true; do
rsync -qr –delete –exclude=’.Xauthority’ /opt/kiosk/ $HOME/
chromium-browser –app=http://127.0.0.1/screen/?mac=00:00:DE:AD:BE:EF
done
[/bash]
launchvid.sh
[bash]
#!/bin/sh
if ps ax | grep -v grep | grep mplayer > /dev/null
then
killall mplayer
else
mplayer -vo xv -fs -stop-xscreensaver -zoom /opt/test.mpg
fi
[/bash]