Zapytała się mnie wczoraj koleżanka, czy znam jakieś rozwiązanie, co mogłoby usprawnić zarządzanie materiałami wyświetlanymi na telewizorach w salonie. Nic skomplikowanego, chodzi tylko o to by można było zdalnie zarządzać wyświetlaną treścią (odtwarzanie, zmiana filmu), bo obecnie pracownik włącza telewizor, i ręcznie uruchamia z podłączonego napędu flash materiał. Działa to relatywnie dobrze, ale gdy trzeba zmienić materiał, to zaczyna się „ręczna robota”.

Wyświetlanie materiałów promocyjnych na telewizorze

Rozwiązań, dzięki którym można wyświetlać materiał promocyjny na telewizorach (monitorach) w salonach/oddziałach jest sporo, wszystko zależy od dodatkowych wymagań, możliwości technicznych, i… finansowych.

Kilka lat temu, gdy jeszcze pracowałem na etacie w jednym z największych (jeśli nie największym) sklepów internetowych w Polsce, w salonach też mieliśmy telewizory, które wyświetlały wybrany przez nas materiał. Obraz był wyświetlany prosto z dedykowanego do tego celu komputera – mała i cicha jednostka, z odpowiednią liczbą portów DVI (tak, wtedy HDMI jeszcze nie był aż tak popularny).

Oczywiście w skrajnej sytuacji można wykorzystać do tego celu np. komputer w recepcji, na którym pracuje recepcjonistka – wystarczy telewizor podłączyć do komputera i ustawić tryb pracy na „rozszerz te ekrany”. Dzięki temu mamy jakby dwie przestrzenie robocze – na podstawowym monitorze normalnie można pracować, a to co chcemy wyświetlić na drugim monitorze (telewizorze) wystarczy przenieść „w prawo”, na drugi ekran.

Jest to rozwiązanie teoretycznie najprostsze, ale nie jestem jego zwolennikiem – nie dość, że tak naprawdę nigdy nie wiadomo co nam wyskoczy, i tym samym pojawi się na drugim ekranie, to jeszcze obraz jest zależny od działania komputera, na którym ktoś wykonuje normalną pracę. Można, ale…

Stąd wariant z dodatkowym, niezależnym urządzeniem jest jednak wariantem, na który ja bym się zdecydował (gdybym miał kilka salonów… w których chciałbym coś wyświetlać na ekranach ;-)). I o ile wariant z dodatkowym komputerem wydaje się najprostszy, to na potrzeby tego wpisu jest to rozwiązanie… za proste. No bo co to za filozofia uruchomić program do odtwarzania filmów na komputerze? ;-)

Raspberry Pi i OMXPlayer

I tu wkracza Raspberry Pi, czyli mikrokomputer za 35 $, który w aktualnej odsłonie (Raspberry Pi 3) ma wystarczająca moc by sprostać temu zadaniu. Mamy tu pełnoprawny system operacyjny (np. Raspbian bazujący na Debianie), dodatkowo WiFi, czyli internet bezprzewodowy, a całość może być zasilana z ładowarki od telefonu, czy też portu USB w telewizorze. Wręcz idealnie.

Tu również mamy przynajmniej kilka możliwych rozwiązań do wdrożenia, ale na potrzeby demonstracji postanowiłem skorzystać z programu OMXPlayer, którym można sterować bezpośrednio z konsoli (skrypty!):

OMXPlayer is a commandline OMX player for the Raspberry Pi. It was developed as a testbed for the XBMC Raspberry PI implementation and is quite handy to use standalone.

Podstawowe polecenie by odtworzyć film wygląda tak:

sudo omxplayer /home/patryk/film.mp4

Ale skoro ma to być film odtwarzany bez przerwy, to dodamy pętle (–loop), wymusimy wyjście obrazu na port HDMI (-o hdmi), wyłączymy – prewencyjnie – sterowanie z klawiatury (–no-keys), oraz wyczernimy ekran nad i pod filmem (-b), i na deser dołożymy jeszcze odświeżanie parametrów filmu (-r):

sudo omxplayer /home/patryk/film.mp4 -b -r --loop -o hdmi --no-keys

Ale by móc w konsoli wykonywać w tym czasie również inne operacje możemy całość uruchomić „w tle”, w ramach wirtualnej konsoli, korzystając z programu Screen:

screen -dmS omx sudo omxplayer /home/patryk/film.mp4 -b -r --loop -o hdmi --no-keys

W jakieś wyszukane zatrzymywanie odtwarzania nie będziemy się bawić, a potraktujemy całość z grubej rury:

sudo killall -s 9 omxplayer

I jeśli chodzi o podstawy, to właściwie tyle…

Skrypt zarządzający

I choć przedstawione rozwiązanie będzie działać, to od razu pomyślałem o tym, by ubrać je w jakiś skrypt, który wspomógłby zarządzanie odtwarzaniem, a przy okazji od razu wstawiłbym tam fragment odpowiedzialny za pobieranie nowej wersji pliku z internetu (ręcznie, lub za pomocą CRONa).

I tak powstał prosty skrypt, który automatyzuje wyświetlanie filmów telewizorze z wykorzystaniem Raspberry Pi (nie mylić z miniDLNA, które wprawdzie również służy do wyświetlania m.in. filmów na telewizorze, ale trochę w innym kontekście ;-)):

#!/bin/bash
### BEGIN INIT INFO
# Provides: omxplayer-demo
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time
# Description: Enable service provided by daemon.
### END INIT INFO

# Nazwa skryptu:
NAME=omxplayer-demo
SCRIPTNAME=/etc/init.d/$NAME

# Dostępne parametry:
COMMANDS="{start|stop|restart|update|enable|disable|install|uninstall}"

# Instalacja
f_install()
{
 sudo cp -r $0 /etc/init.d/$NAME
 sudo insserv $NAME
 sudo ln -s /etc/init.d/$NAME /usr/local/bin/$NAME
 sudo /etc/init.d/$NAME start
 exit 0
}

# Dezinstalacja
f_uninstall()
{
 sudo /etc/init.d/$NAME stop
 sudo update-rc.d $NAME remove
 sudo rm /etc/init.d/$NAME
 sudo rm /bin/$NAME
 exit 0
}

# Start
f_start()
{
 screen -dmS omx sudo omxplayer /home/patryk/film.mp4 -b -r --loop -o hdmi --no-keys
}

# Stop
f_stop()
{
 sudo killall -s 9 omxplayer
}

# Aktywacja automatycznego uruchamiania z systemem 
f_enable()
{ 
 sudo systemctl enable $NAME
}

# Dezaktywacja automatycznego uruchamiania z systemem 
f_disable()
{
 sudo systemctl disable $NAME
} 

# Pobieranie pliku z serwera
f_download()
{
 sudo wget -O /home/patryk/film.mp4 "https://adres.serwera/film.mp4"
}

case "$1" in
 start)
 f_start
 ;;
 stop)
 f_stop
 ;;
 restart)
 f_stop
 f_start
 ;;
 update)
 f_download
 f_stop
 f_start
 ;;
 enable)
 f_enable
 ;;
 disable)
 f_disable
 ;;
 install)
 f_install
 ;;
 uninstall)
 f_uninstall
 ;;
 *)
 echo "Use: "$SCRIPTNAME $COMMANDS
 exit
 ;;
esac

exit 0

Na początek instalujemy skrypt za pomocą polecenia:

sudo ./omxplayer-demo install

Co spowoduje skopiowanie skryptu do katalogu „/etc/init.d”, dodanie linku symbolicznego w „/usr/local/bin” dla wygodniejszej dalszej obsługi, oraz ustawienie startu skryptu wraz z systemem (w tle). Później, zamiast „install” możecie dać „uninstall” by odinstalować skrypt.

Pamiętajcie tylko, by na początku nadać utworzonemu skryptowi atrybut wykonywalności:

sudo chmod +x omxplayer-demo

W skrypcie ważne są 2 lokalizacje – z filmem do odtwarzania:

/home/patryk/film.mp4

Oraz adres serwera by pobierać nowe wersje filmu (możecie pominąć, jeśli nie planujecie zdalnej aktualizacji):

https://adres.serwera/film.mp4

Więc tu musicie zmienić ścieżki wedle własnych potrzeb.

Dalsza obsługa jest banalna – skrypt uruchomi odtwarzanie filmu po każdym uruchomieniu Raspberry Pi. Możecie tym zarządzać za pomocą poleceń:

sudo omxplayer enable
sudo omxplayer disable

W każdej chwili można też ręcznie zatrzymać lub rozpocząć odtwarzanie:

sudo omxplayer start
sudo omxplayer stop
sudo omxplayer restart

Ostatnim poleceniem jest aktualizacja filmu do odtwarzania:

sudo omxplayer update

W tym momencie skrypt połączy się ze wskazanym adresem i pobierze znajdujący się tam film, który zastąpi dotychczas odtwarzany.

Możecie też to zautomatyzować, np. za pomocą CRONa ustawiając automatyczne pobieranie nowej wersji filmu np. codziennie, o 3 w nocy:

0 3 * * * root /usr/local/bin/omxplayer-demo update >/dev/null 2>&1

Oczywiście jest to dość prosty przykład na zastosowanie Raspberry Pi jako urządzenia zarządzającego automatycznym odtwarzaniem materiałów wideo na podłączonych ekranach (monitory lub telewizory), i wersja produkcyjna jest trochę bardziej rozbudowana, zgodnie z dodatkowymi wymaganiami (dodatkowe mechanizmy autoryzujące, powiadomienia na e-mail, sterowanie z połączonego pilota Bluetooth…).

Zgłoś błąd na stronie

Potrzebujesz profesjonalnej pomocy? Skontaktuj się z nami!

WebInsider poleca księgowość wFirma
WebInsider korzysta z VPSa w HitMe.pl
WebInsider poleca VPSy DigitalOcean
WebInsider poleca serwis Vindicat
Napisz komentarz
wipl_napisz-komentarz_01Jeśli informacje zawarte na tej stronie okazały się pomocne, możesz nam podziękować zostawiając poniżej swój komentarz.

W tej formie możesz również zadać dodatkowe pytania dotyczące wpisu, na które - w miarę możliwości - spróbujemy Ci odpowiedzieć.
Linki partnerskie
Niektóre z linków na tej stronie to tzw. "linki partnerskie", co oznacza, że jeśli klikniesz na link i dokonasz wymaganej akcji (np. zakup/rejestracja) możemy otrzymać za to prowizję. Pamiętaj, że polecamy tylko te produkty i usługi, z których sami korzystamy, i uważamy, że są tego na prawdę warte... :-)
Znaki towarowe i nazwy marek
W niektórych wpisach (oraz innych miejscach na stronie) mogą być przedstawione/użyte znaki towarowe i/lub nazwy marek, które stanowią własność intelektualną tych podmiotów, a zostały użyte wyłącznie w celach informacyjnych.

Potrzebujesz profesjonalnej pomocy? Skontaktuj się z nami!