నెట్‌వర్క్‌లో బహుళ పరికరాలకు స్క్రీన్‌ను ప్రసారం చేయండి

నెట్‌వర్క్‌లో బహుళ పరికరాలకు స్క్రీన్‌ను ప్రసారం చేయండి

నేను కార్యాలయంలోని అనేక స్క్రీన్‌లపై పర్యవేక్షణతో కూడిన డ్యాష్‌బోర్డ్‌ను ప్రదర్శించాల్సిన అవసరం ఉంది. మా వద్ద అనేక పాత రాస్ప్‌బెర్రీ పై మోడల్ B+ మరియు దాదాపు అపరిమిత మొత్తంలో వనరులతో కూడిన హైపర్‌వైజర్ ఉన్నాయి.

స్పష్టంగా, రాస్‌ప్బెర్రీ పై మోడల్ B+ బ్రౌజర్‌ను నిరంతరం రన్ చేసేలా చేయడానికి మరియు దానిలో పెద్ద మొత్తంలో గ్రాఫిక్‌లను అందించడానికి తగినంత యాదృచ్ఛికతను కలిగి ఉండదు, అందుకే పేజీ పాక్షికంగా ఇబ్బందికరంగా ఉంటుంది మరియు తరచుగా క్రాష్ అవుతుంది.

నేను చాలా సరళమైన మరియు సొగసైన పరిష్కారాన్ని కనుగొన్నాను, దానిని నేను మీతో పంచుకోవాలనుకుంటున్నాను.

మీకు తెలిసినట్లుగా, అన్ని రాస్ప్బెర్రీస్ చాలా శక్తివంతమైన వీడియో ప్రాసెసర్‌ను కలిగి ఉంటాయి, ఇది హార్డ్‌వేర్ వీడియో డీకోడింగ్‌కు అద్భుతమైనది. కాబట్టి మరెక్కడా డాష్‌బోర్డ్‌తో బ్రౌజర్‌ను ప్రారంభించాలనే ఆలోచన వచ్చింది మరియు రెండర్ చేసిన చిత్రంతో రెడీమేడ్ స్ట్రీమ్‌ను కోరిందకాయకు బదిలీ చేయండి.

అదనంగా, ఇది సరళీకృత నిర్వహణను కలిగి ఉండాలి, ఎందుకంటే ఈ సందర్భంలో అన్ని సెటప్‌లు ఒక వర్చువల్ మెషీన్‌లో నిర్వహించబడతాయి, ఇది నవీకరించడం మరియు బ్యాకప్ చేయడం సులభం అవుతుంది.

ఇక చెప్పేదేం లేదు.

సర్వర్ భాగం

మేము సిద్ధంగా ఉపయోగిస్తాము ఉబుంటు కోసం క్లౌడ్ ఇమేజ్. ఇన్‌స్టాలేషన్ అవసరం లేకుండా, మీరు వర్చువల్ మెషీన్‌ను త్వరగా అమలు చేయడానికి అవసరమైన ప్రతిదాన్ని ఇది కలిగి ఉంటుంది మరియు Cloud-Init మద్దతు తక్షణమే నెట్‌వర్క్‌ను సెటప్ చేయడానికి, ssh కీలను జోడించడానికి మరియు దానిని త్వరగా అమలు చేయడానికి సహాయపడుతుంది.

మేము ఒక కొత్త వర్చువల్ మెషీన్‌ని అమలు చేస్తాము మరియు ముందుగా దాన్ని దానిపై ఇన్‌స్టాల్ చేస్తాము Xorg, ఆమోదం и ఫ్లక్స్బాక్స్:

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

ఫైర్‌ఫాక్స్‌ని పూర్తి స్క్రీన్ మోడ్‌లో వెంటనే లాంచ్ చేయడానికి మాకు Xdotool అవసరం.
పరామితిని ఉపయోగించడం -url మీరు ఏదైనా పేజీని పేర్కొనవచ్చు, తద్వారా బ్రౌజర్ ప్రారంభమైనప్పుడు అది స్వయంచాలకంగా తెరవబడుతుంది.

ఈ దశలో, మా కియోస్క్ సిద్ధంగా ఉంది, కానీ ఇప్పుడు మేము ఇతర మానిటర్లు మరియు పరికరాలకు నెట్‌వర్క్ ద్వారా చిత్రాన్ని ఎగుమతి చేయాలి. ఇందుకోసం అవకాశాలను సద్వినియోగం చేసుకుంటాం మోషన్ JPEG, చాలా వెబ్ కెమెరాల నుండి స్ట్రీమింగ్ వీడియో కోసం తరచుగా ఉపయోగించే ఫార్మాట్.

దీన్ని చేయడానికి మనకు రెండు విషయాలు అవసరం: FFmpeg మాడ్యూల్ తో x11 గ్రాబ్, 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/, ప్రతిస్పందనగా మీరు మీ డెస్క్‌టాప్ యొక్క నిరంతరం నవీకరించబడిన స్క్రీన్‌షాట్‌ను చూస్తారు. గొప్ప! - అదే కావలసింది.

క్లయింట్ వైపు

ఇక్కడ ప్రతిదీ మరింత సులభం, నేను ఇప్పటికే చెప్పినట్లుగా, మేము రాస్ప్బెర్రీ పై మోడల్ B+ని ఉపయోగిస్తాము.

అన్నింటిలో మొదటిది, దానిపై ఇన్‌స్టాల్ చేద్దాం ఆర్చ్ లైనక్స్ ARM, దీని కోసం మేము అనుసరిస్తాము సూచనలను అధికారిక సైట్లో.

మేము మా వీడియో చిప్ కోసం మరింత మెమరీని కూడా కేటాయించాలి, దీని కోసం మేము ఎడిట్ చేస్తాము /boot/config.txt

gpu_mem=128

మన కొత్త సిస్టమ్‌ను బూట్ చేద్దాం మరియు ప్యాక్‌మ్యాన్ కీరింగ్‌ను ప్రారంభించాలని గుర్తుంచుకోండి, ఇన్‌స్టాల్ చేయండి OMX ప్లేయర్:

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

ఒక వ్యాఖ్యను జోడించండి