Streaming layar ka sababaraha alat dina jaringan

Streaming layar ka sababaraha alat dina jaringan

Abdi peryogi nampilkeun dasbor kalayan ngawaskeun sababaraha layar di kantor. Simkuring gaduh sababaraha buah prambus Pi Modél B heubeul + sarta hypervisor kalawan jumlah ampir taya sumberdaya.

Tétéla Raspberry Pi Modél B + teu boga cukup randomness pikeun ngajaga browser terus ngajalankeun sarta ngajadikeun angka nu gede ngarupakeun grafik di dinya, naha éta kajadian yén kaca sawaréh glitchy sarta mindeng ngadat.

Kuring mendakan solusi anu saderhana sareng elegan, anu kuring hoyong bagikeun sareng anjeun.

Sakumaha anjeun terang, sadaya buah prambus gaduh prosesor pidéo anu cukup kuat, anu saé pikeun decoding pidéo hardware. Janten ideu muncul pikeun ngaluncurkeun browser nganggo dasbor di tempat anu sanés, sareng nransferkeun aliran anu siap-siap sareng gambar anu dipasihkeun ka buah prambus.

Tambih Deui, ieu kedah gaduh manajemén saderhana, sabab dina hal ieu sadaya setelan bakal dilakukeun dina hiji mesin virtual, anu bakal langkung gampang pikeun ngapdet sareng nyadangkeun.

Geuwat dikerjakeun saatos dicarioskeun.

Bagian server

Urang bakal ngagunakeun siap Gambar Awan pikeun Ubuntu. Tanpa merlukeun instalasi, ngandung sagalana nu peryogi pikeun gancang nyebarkeun mesin virtual, jeung rojongan Cloud-Init mantuan pikeun instan nyetél jaringan, nambahkeun konci ssh tur gancang nempatkeun kana operasi.

Urang nyebarkeun hiji mesin virtual anyar jeung mimiti sagala install dina eta Xorg, nodm и kotak aksés:

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

Urang ogé bakal ngagunakeun config pikeun Xorg, bageur nawaran reureuh di dikabulkeun kami Diego Ongaro, ngan nambahan resolusi anyar 1920 × 1080, sabab sadaya monitor urang bakal ngagunakeun éta:

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

Ayeuna kami bakal masang Firefox, kami bakal ngajalankeun éta salaku jasa sistem, janten hayu urang nyerat file unit pikeun sakaligus:

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

Urang peryogi Xdotool pikeun ngaluncurkeun Firefox langsung dina modeu layar pinuh.
Ngagunakeun parameter -url Anjeun tiasa netepkeun halaman mana waé supados dibuka sacara otomatis nalika browser dimimitian.

Dina tahap ieu, kios urang geus siap, tapi ayeuna urang kudu ngekspor gambar ngaliwatan jaringan ka monitor jeung alat lianna. Jang ngalampahkeun ieu kami bakal ngamangpaatkeun kasempetan Gerak JPEG, format nu leuwih mindeng dipaké pikeun ngalirkeun data video ti lolobana kaméra web.

Jang ngalampahkeun ieu urang peryogi dua hal: FFmpeg kalawan modul x11 rebut, pikeun moto gambar ti X jeung streamEye, anu bakal ngadistribusikaeun ka klien kami:

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

Kusabab gambar urang henteu meryogikeun apdet gancang, kuring netepkeun laju refresh: 1 pigura per detik (parameter -r 1) jeung kualitas komprési: 5 (parameter -q:v 5)

Ayeuna hayu urang coba mun balik ka http://your-vm:8080/, dina respon anjeun bakal nempo hiji screenshot terus diropéa tina desktop Anjeun. Hebat! - éta naon diperlukeun.

bagian klien

Di dieu sagalana malah leuwih basajan, sakumaha kuring geus ngomong, urang bakal ngagunakeun buah prambus Pi Modél B +.

Anu mimiti, hayu urang install dina eta Arch Linux Ubuntu ARM, pikeun ieu urang nuturkeun parentah dina situs wéb resmi.

Urang ogé kedah nyayogikeun langkung seueur mémori pikeun chip vidéo urang, pikeun ieu kami bakal ngédit /boot/config.txt

gpu_mem=128

Hayu urang boot sistem anyar urang jeung, remembering mun initialize keyring pacman, install OMXPlayer:

pacman -Sy omxplayer

Anu penting nyaéta OMXPlayer tiasa jalan tanpa X, janten sadayana anu urang peryogikeun nyaéta nyerat file unit pikeun éta sareng jalankeun:

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

Salaku parameter -b http://your-vm:8080/ kami ngalirkeun URL ti server kami.

Éta sadayana, gambar ti server kami kedah langsung muncul dina layar anu disambungkeun. Upami aya masalah, aliranna bakal otomatis dibalikan deui sareng klien bakal nyambung deui.

Salaku bonus, anjeun tiasa masang gambar anu dihasilkeun salaku screensaver dina sadaya komputer di kantor. Pikeun ieu anjeun peryogi 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

Ayeuna kolega anjeun bakal bagja pisan :)

sumber: www.habr.com

Tambahkeun komentar