Minulla oli tarve näyttää kojelauta valvonnalla useilla toimiston näytöillä. On olemassa useita vanhoja Raspberry Pi Model B + -malleja ja hypervisori, jolla on lähes rajoittamaton määrä resursseja.
Ilmeisesti Raspberry Pi Model B+:ssa ei ole tarpeeksi satunnaisuutta pitämään selain jatkuvasti käynnissä ja hahmontamaan siinä paljon grafiikkaa, minkä vuoksi sivu on osittain buginen ja usein kaatuu.
Siellä oli melko yksinkertainen ja tyylikäs ratkaisu, jonka haluan jakaa kanssasi.
Kuten tiedät, kaikissa Raspberriesissa on melko tehokas videoprosessori, joka sopii erinomaisesti laitteistovideon dekoodaukseen. Niinpä syntyi idea käynnistää selain, jossa on kojelauta jossain muualla, ja siirtää vadelmaan valmis stream renderoidulla kuvalla.
Lisäksi tässä pitäisi olla yksinkertaistettu hallinta, koska tässä tapauksessa kaikki konfigurointi suoritetaan yhdellä virtuaalikoneella, joka on helpompi päivittää ja varmuuskopioida.
Ei ennemmin sanottu kuin tehty.
Palvelimen osa
Käytämme valmiina
Otamme käyttöön uuden virtuaalikoneen ja asennamme sen ensin siihen
apt-get update
apt-get install -y xserver-xorg nodm fluxbox
sed -i 's/^NODM_USER=.*/NODM_USER=ubuntu/' /etc/default/nodm
Käytämme ystävällisesti myös Xorgin konfiguraatiota
cat > /etc/X11/xorg.conf <<EOT
Section "Device"
Identifier "device"
Driver "vesa"
EndSection
Section "Screen"
Identifier "screen"
Device "device"
Monitor "monitor"
DefaultDepth 16
SubSection "Display"
Modes "1920x1080" "1280x1024" "1024x768" "800x600"
EndSubSection
EndSection
Section "Monitor"
Identifier "monitor"
HorizSync 20.0 - 50.0
VertRefresh 40.0 - 80.0
Option "DPMS"
EndSection
Section "ServerLayout"
Identifier "layout"
Screen "screen"
EndSection
EOT
systemctl restart nodm
Nyt asennamme Firefoxin, käytämme sitä järjestelmäpalveluna, joten ensinnäkin kirjoitamme sille yksikkötiedoston:
apt-get install -y firefox xdotool
cat > /etc/systemd/system/firefox.service <<EOT
[Unit]
Description=Firefox
After=network.target
[Service]
Restart=always
User=ubuntu
Environment="DISPLAY=:0"
Environment="XAUTHORITY=/home/ubuntu/.Xauthority"
ExecStart=/usr/bin/firefox -url 'http://example.org/mydashboard'
ExecStartPost=/usr/bin/xdotool search --sync --onlyvisible --class "Firefox" windowactivate key F11
[Install]
WantedBy=graphical.target
EOT
systemctl enable firefox
systemctl start firefox
Tarvitsemme Xdotoolia voidaksemme suorittaa firefoxin välittömästi koko näytön tilassa.
Parametrin käyttäminen -url
voit määrittää minkä tahansa sivun niin, että se avautuu automaattisesti selaimen käynnistyessä.
Tässä vaiheessa kioskimme on valmis, mutta nyt meidän on vietävä kuva verkon kautta muille monitoreille ja laitteille. Tätä varten käytämme mahdollisuuksia
Tätä varten tarvitsemme kaksi asiaa:
apt-get install -y make gcc ffmpeg
cd /tmp/
wget https://github.com/ccrisan/streameye/archive/master.tar.gz
tar xvf master.tar.gz
cd streameye-master/
make
make install
cat > /etc/systemd/system/streameye.service <<EOT
[Unit]
Description=streamEye
After=network.target
[Service]
Restart=always
User=ubuntu
Environment="DISPLAY=:0"
Environment="XAUTHORITY=/home/ubuntu/.Xauthority"
ExecStart=/bin/sh -c 'ffmpeg -f x11grab -s 1920x1080 -i :0 -r 1 -f mjpeg -q:v 5 - 2>/dev/null | streameye'
[Install]
WantedBy=graphical.target
EOT
systemctl enable streameye
systemctl start streameye
Koska kuvamme ei vaadi nopeaa päivitystä, määritin virkistystaajuuden: 1 kuva sekunnissa (parametri -r 1
) ja pakkauslaatu: 5 (parametri -q:v 5
)
Yritetään nyt mennä
Asiakkaan puolella
Täällä on silti helpompaa, kuten sanoin, käytämme Raspberry Pi Model B + -mallia.
Ensinnäkin, asennetaan se
Meidän on myös varattava enemmän muistia videosirullemme, tätä varten editoimme sisään /boot/config.txt
gpu_mem=128
Käynnistetään uusi järjestelmämme ja älä unohda alustaa pacman-avainrengasta, asenna
pacman -Sy omxplayer
On huomattava, että OMXPlayer voi toimia ilman x:ää, joten tarvitsemme vain kirjoittaa sille yksikkötiedoston ja suorittaa:
cat > /etc/systemd/system/omxplayer.service <<EOT
[Unit]
Description=OMXPlayer
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
Restart=always
ExecStart=/usr/bin/omxplayer -r --live -b http://your-vm:8080/ --aspect-mode full
[Install]
WantedBy=multi-user.target
EOT
systemctl enable omxplayer
systemctl start omxplayer
Parametrina -b http://your-vm:8080/
välitämme URL-osoitteen palvelimeltamme.
Siinä kaikki, palvelimeltamme tulevan kuvan pitäisi välittömästi ilmestyä yhdistetylle näytölle. Jos ongelmia ilmenee, suoratoisto käynnistetään automaattisesti uudelleen ja asiakkaat muodostavat yhteyden siihen uudelleen.
Bonuksena voit asentaa tuloksena olevan kuvan näytönsäästäjäksi kaikkiin toimiston tietokoneisiin. Tätä varten tarvitset
mode: one
selected: 0
programs:
"Monitoring Screen" mpv --really-quiet --no-audio --fs
--loop=inf --no-stop-screensaver
--wid=$XSCREENSAVER_WINDOW
http://your-vm:8080/ n
maze -root n
electricsheep --root 1 n
Nyt kollegasi ovat erittäin iloisia 🙂
Lähde: will.com