Saya mempunyai keperluan untuk memaparkan papan pemuka dengan pemantauan pada beberapa skrin di pejabat. Terdapat beberapa Raspberry Pi Model B + lama dan hypervisor dengan jumlah sumber yang hampir tidak terhad.
Nampaknya Raspberry Pi Model B+ tidak mempunyai cukup rawak untuk memastikan penyemak imbas sentiasa berjalan dan menghasilkan banyak grafik di dalamnya, yang menyebabkan halaman itu sebahagiannya buggy dan sering ranap.
Terdapat penyelesaian yang agak mudah dan elegan, yang saya ingin kongsikan dengan anda.
Seperti yang anda ketahui, semua Raspberi mempunyai pemproses video yang cukup berkuasa, yang bagus untuk penyahkodan video perkakasan. Maka tercetus idea untuk melancarkan penyemak imbas dengan papan pemuka di tempat lain, dan memindahkan strim siap sedia dengan gambar yang diberikan kepada raspberi.
Selain itu, ini sepatutnya memudahkan pengurusan, kerana dalam kes ini semua konfigurasi akan dilakukan pada satu mesin maya, yang lebih mudah untuk dikemas kini dan disandarkan.
Tidak lebih awal berkata daripada selesai.
Bahagian pelayan
Kami menggunakan sedia
Kami menggunakan mesin maya baharu dan pertama sekali memasangnya padanya
apt-get update
apt-get install -y xserver-xorg nodm fluxbox
sed -i 's/^NODM_USER=.*/NODM_USER=ubuntu/' /etc/default/nodm
Kami juga akan menggunakan konfigurasi untuk Xorg, sila
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
Sekarang kami akan memasang Firefox, kami akan menjalankannya sebagai perkhidmatan sistem, jadi untuk satu perkara kami akan menulis fail unit untuknya:
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
Kami memerlukan Xdotool untuk menjalankan firefox serta-merta dalam mod skrin penuh.
Menggunakan parameter -url
anda boleh menentukan mana-mana halaman supaya ia dibuka secara automatik apabila penyemak imbas bermula.
Pada peringkat ini, kiosk kami sudah sedia, tetapi kini kami perlu mengeksport imej melalui rangkaian ke monitor dan peranti lain. Untuk melakukan ini, kami akan menggunakan kemungkinan
Untuk ini kita memerlukan dua perkara:
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
Memandangkan gambar kami tidak memerlukan kemas kini pantas, saya menyatakan kadar penyegaran: 1 bingkai sesaat (parameter -r 1
) dan kualiti mampatan: 5 (parameter -q:v 5
)
Sekarang mari kita cuba pergi ke
Pihak pelanggan
Ia masih lebih mudah di sini, seperti yang saya katakan, kami akan menggunakan Raspberry Pi Model B +.
Pertama sekali, mari pasangkannya
Kami juga perlu memperuntukkan lebih banyak memori untuk cip video kami, untuk ini kami akan mengeditnya /boot/config.txt
gpu_mem=128
Mari kita but sistem baru kami dan jangan lupa untuk memulakan pacman keyring, pasang
pacman -Sy omxplayer
Hebatnya, OMXPlayer boleh berfungsi tanpa x, jadi apa yang kita perlukan ialah menulis fail unit untuknya dan jalankan:
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
Sebagai parameter -b http://your-vm:8080/
kami menghantar url dari pelayan kami.
Itu sahaja, gambar dari pelayan kami harus segera muncul pada skrin yang disambungkan. Sekiranya berlaku sebarang masalah, strim akan dimulakan semula secara automatik dan pelanggan akan menyambung semula kepadanya.
Sebagai bonus, anda boleh memasang gambar yang terhasil sebagai penyelamat skrin pada semua komputer di pejabat. Untuk ini anda perlukan
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
Sekarang rakan sekerja anda akan sangat gembira π
Sumber: www.habr.com