Pag-stream sa screen sa daghang mga aparato sa network

Pag-stream sa screen sa daghang mga aparato sa network

Kinahanglan nako nga magpakita usa ka dashboard nga adunay pag-monitor sa daghang mga screen sa opisina. Adunay daghang mga daan nga Raspberry Pi Model B + ug usa ka hypervisor nga adunay hapit walay kutub nga kantidad sa mga kapanguhaan.

Dayag nga ang Raspberry Pi Model B+ walay igo nga randomness aron mapadayon ang browser nga kanunay nga nagdagan ug naghatag daghang mga graphic niini, tungod niini mahitabo nga ang panid partially buggy ug kanunay nga nahagsa.

Adunay usa ka yano ug elegante nga solusyon, nga gusto nakong ipaambit kanimo.

Sama sa imong nahibal-an, ang tanan nga mga Raspberry adunay usa ka medyo kusgan nga processor sa video, nga maayo alang sa pag-decode sa video sa hardware. Mao nga ang ideya mitungha sa paglansad sa usa ka browser nga adunay usa ka dashboard sa laing lugar, ug ibalhin ang usa ka andam nga sapa nga adunay usa ka gihubad nga litrato sa raspberry.

Dugang pa, kini kinahanglan nga gipasimple nga pagdumala, tungod kay sa kini nga kaso ang tanan nga pag-configure himuon sa usa ka virtual nga makina, nga labi kadali nga i-update ug i-backup.

Wala dayon gisulti kay nahuman.

Server nga bahin

Gigamit namon ang andam Cloud Image alang sa Ubuntu. Wala magkinahanglan og pag-instalar, kini naglangkob sa tanan nga imong gikinahanglan aron dali nga ma-deploy ang usa ka virtual machine, ug Suporta sa CloudInit makatabang sa pag-set up dayon sa usa ka network, pagdugang sa mga yawe sa ssh ug dali nga magamit kini.

Nag-deploy kami og bag-ong virtual machine ug una sa tanan i-install kini niini Xorg, nodm ΠΈ kahon sa flux:

apt-get update
apt-get install -y xserver-xorg nodm fluxbox
sed -i 's/^NODM_USER=.*/NODM_USER=ubuntu/' /etc/default/nodm

Gamiton usab namo ang config para sa Xorg, buotan gihatag kanato Diego Ongaro, nagdugang lamang ug bag-ong resolusyon 1920 Γ— 1080, tungod kay ang tanan namong mga monitor mogamit niini:

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

Karon among i-install ang Firefox, among ipadagan kini isip serbisyo sa sistema, mao nga sa usa ka butang magsulat kami og unit file alang niini:

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

Kinahanglan namon ang Xdotool aron makadagan dayon ang firefox sa full screen mode.
Paggamit sa parameter -url mahimo nimong ipiho ang bisan unsang panid aron awtomatiko kini nga maablihan kung magsugod ang browser.

Niini nga yugto, andam na ang among kiosk, apan karon kinahanglan namong i-export ang imahe sa network ngadto sa ubang mga monitor ug device. Sa pagbuhat niini, atong gamiton ang mga posibilidad Paglihok JPEG, usa ka pormat nga mas kasagarang gigamit sa pag-streaming sa video gikan sa kadaghanang mga webcam.

Alang niini kinahanglan nato ang duha ka butang: FFmpeg uban sa module x11 kuha, alang sa pagkuha sa mga hulagway gikan sa X's ug streamEye, nga mag-apod-apod niini sa among mga kliyente:

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

Tungod kay ang among litrato wala magkinahanglan og paspas nga pag-update, akong gipiho ang refresh rate: 1 frame kada segundo (parameter -r 1) ug kalidad sa compression: 5 (parameter -q:v 5)

Karon atong sulayan ang pag-adto sa http://your-vm:8080/, agig tubag imong makita ang kanunay nga gi-update nga screenshot sa desktop. Nindot! - unsa ang gikinahanglan.

Kliyente nga bahin

Kini mas sayon ​​dinhi, sama sa akong giingon, atong gamiton ang Raspberry Pi Model B +.

Una sa tanan, atong i-install kini Arko sa ARM sa Linux, tungod niini among gisunod mga instruksyon sa opisyal nga site.

Kinahanglan usab namon nga maggahin og dugang nga memorya alang sa among video chip, alang niini among i-edit /boot/config.txt

gpu_mem=128

Atong i-boot ang atong bag-ong sistema ug ayaw kalimot sa pag-initialize sa pacman keyring, i-install OMX Player:

pacman -Sy omxplayer

Talagsaon, ang OMXPlayer mahimong molihok nga wala ang X, mao nga ang kinahanglan namon mao ang pagsulat sa usa ka file sa yunit alang niini ug pagdagan:

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

Ingon usa ka parameter -b http://your-vm:8080/ gipasa namo ang url gikan sa among server.

Kana lang, ang usa ka litrato gikan sa among server kinahanglan nga makita dayon sa konektado nga screen. Sa kaso sa bisan unsa nga mga problema, ang sapa awtomatik nga i-restart ug ang mga kliyente magkonektar pag-usab niini.

Isip bonus, mahimo nimong i-install ang resulta nga hulagway isip screensaver sa tanang kompyuter sa opisina. Alang niini kinahanglan nimo MPV ΠΈ XScreenSaver:

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

Karon ang imong mga kauban malipay kaayo πŸ™‚

Source: www.habr.com

Idugang sa usa ka comment