Дэлгэцийг сүлжээгээр дамжуулан олон төхөөрөмж рүү дамжуулах

Дэлгэцийг сүлжээгээр дамжуулан олон төхөөрөмж рүү дамжуулах

Би оффисын хэд хэдэн дэлгэц дээр хяналтын самбарыг харуулах шаардлагатай болсон. Хэд хэдэн хуучин Raspberry Pi Model B + ба бараг хязгааргүй нөөцтэй гипервизор байдаг.

Raspberry Pi Model B+ нь хөтчийг байнга ажиллуулж, дотор нь маш олон график үзүүлэхэд хангалттай санамсаргүй байдал байхгүй тул хуудас нь хэсэгчлэн алдаатай, ихэвчлэн гацдаг.

Маш энгийн бөгөөд гоёмсог шийдэл байсан бөгөөд би та бүхэнтэй хуваалцахыг хүсч байна.

Та бүхний мэдэж байгаагаар бүх бөөрөлзгөнө нь нэлээд хүчирхэг видео процессортой бөгөөд энэ нь техник хангамжийн видео кодыг тайлахад тохиромжтой. Тиймээс өөр газар хяналтын самбар бүхий хөтөчийг ажиллуулж, зурагтай бэлэн урсгалыг бөөрөлзгөнө рүү шилжүүлэх санаа гарч ирэв.

Дээрээс нь энэ нь хялбаршуулсан менежменттэй байх ёстой, учир нь энэ тохиолдолд бүх тохиргоог нэг виртуал машин дээр хийх бөгөөд үүнийг шинэчлэх, нөөцлөхөд хялбар байдаг.

Хэлэхээс өмнө хийсэн.

Серверийн хэсэг

Бид бэлэн хэрэглэдэг Ubuntu-д зориулсан Cloud Image. Суулгах шаардлагагүй, энэ нь виртуал машиныг хурдан байрлуулахад шаардлагатай бүх зүйлийг агуулдаг CloudInit-ийн дэмжлэг Сүлжээг шууд тохируулах, ssh товчлууруудыг нэмж, хурдан ажиллуулахад тусалдаг.

Бид шинэ виртуал машин байрлуулж, юуны түрүүнд түүн дээр суулгана Xorg, nodm и урсгалын хайрцаг:

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

Бид мөн Xorg-ийн тохиргоог ашиглах болно олгосон биднийг Диего Онгаро, зөвхөн шинэ тогтоол нэмж байна 1920 × 1080, учир нь манай бүх мониторууд үүнийг ашиглах болно:

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

Одоо бид Firefox-г суулгах болно, бид үүнийг системийн үйлчилгээ болгон ажиллуулах болно, тиймээс нэг зүйл бол түүнд зориулж нэгж файл бичих болно:

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

Firefox-ыг нэн даруй бүтэн дэлгэцийн горимд ажиллуулахын тулд бидэнд Xdotool хэрэгтэй.
Параметр ашиглах -url хөтөч эхлэхэд автоматаар нээгдэхийн тулд та дурын хуудсыг зааж өгч болно.

Энэ үе шатанд манай ТҮЦ бэлэн болсон, гэхдээ одоо бид сүлжээгээр дамжуулан бусад дэлгэц, төхөөрөмж рүү зургийг экспортлох шаардлагатай байна. Үүний тулд бид боломжуудыг ашиглах болно Хөдөлгөөн JPEG, ихэнх вэбкамераас видео дамжуулахад илүү өргөн хэрэглэгддэг формат.

Үүний тулд бидэнд хоёр зүйл хэрэгтэй: FFmpeg модультай x11grab, x-ээс зураг авахад зориулагдсан ба урсгал нүд, үүнийг манай үйлчлүүлэгчдэд түгээх болно:

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

Манай зураг хурдан шинэчлэх шаардлагагүй тул би сэргээх хурдыг зааж өгсөн: секундэд 1 кадр (параметр -r 1) ба шахалтын чанар: 5 (параметр -q:v 5)

Одоо тийшээ очихыг хичээцгээе http://your-vm:8080/, хариуд нь та ширээний дэлгэцийн байнга шинэчлэгдсэн дэлгэцийн агшинг харах болно. Агуу их! - юу хэрэгтэй байсан.

Үйлчлүүлэгч тал

Миний хэлсэнчлэн энд илүү хялбар хэвээр байна, бид Raspberry Pi Model B + ашиглах болно.

Юуны өмнө үүнийг суулгаж үзье ArchLinux ARM, үүний тулд бид дагаж мөрддөг зааварчилгаа албан ёсны вэбсайт дээр.

Мөн бид видео чипдээ илүү их санах ойг хуваарилах шаардлагатай бөгөөд үүний тулд бид засварлах болно /boot/config.txt

gpu_mem=128

Шинэ системээ ачаалъя, pacman түлхүүрийн бөгжийг эхлүүлэх, суулгахаа бүү мартаарай OMXPlayer:

pacman -Sy omxplayer

Сонирхолтой нь, OMXPlayer нь xгүйгээр ажиллах боломжтой тул бидэнд хэрэгтэй зүйл бол түүнд зориулж нэг нэгж файл бичиж, ажиллуулах:

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

Параметр болгон -b http://your-vm:8080/ Бид серверээсээ url-г дамжуулж байна.

Ингээд л манай серверийн зураг холбогдсон дэлгэц дээр нэн даруй гарч ирэх ёстой. Ямар нэгэн асуудал гарвал дамжуулалтыг автоматаар дахин эхлүүлж, үйлчлүүлэгчид түүнтэй дахин холбогдох болно.

Урамшууллын хувьд та оффисын бүх компьютерт дэлгэцийн амраагч болгон суулгаж болно. Үүний тулд танд хэрэгтэй болно 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

Одоо танай хамт олон маш их баяртай байх болно 🙂

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх