Tujuan: menerima televisi DTT secara lokal dengan Raspberry Pi yang dilengkapi dengan TV HAT tuner DVB-T2 dan/atau kunci RTL-SDR.
Uji dengan 2 alat: dvblast dan mumudvb .
Di direktori conf/dvblast dan conf/mumudvb terdapat konfigurasi multipleks DTT yang tersedia di Paris dengan alamat siaran multicast untuk setiap saluran.
Pertama-tama kami akan membatasi rentang IP multicast ke loop lokal agar tidak membanjiri jaringan jika switch tidak dioptimalkan untuk multicast (lihat IGMP Snooping).
ip route add 239.10.10.0/24 dev lo src 127.0.0.1Kemudian untuk memeriksa rute kartu jaringan:
$ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default lan.home 0.0.0.0 UG 202 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 202 0 0 eth0
239.10.10.0 0.0.0.0 255.255.255.0 U 0 0 0 lo Catatan: perintah route adalah bagian dari paket net-tools di Debian .
Atau
$ ip route show
default via 192.168.1.1 dev eth0 src 192.168.1.74 metric 202
192.168.1.0/24 dev eth0 proto dhcp scope link src 192.168.1.74 metric 202
239.10.10.0/24 dev lo scope link src 127.0.0.1Untuk membuat aturan ini tetap berlaku:
Debian buat file /etc/network/if-up.d/local-multicast (dan buat agar dapat dieksekusi) dengan konten berikut: #! /bin/sh
# à mettre dans /etc/network/if-up.d/local-multicast (rendre exécutable)
# le multicast ne sort pas de la boucle locale pour éviter de flooder le réseau
if [ " $IFACE " = " lo " ] ; then
ip route add 239.10.10.0/24 dev lo src 127.0.0.1
fiCentOS7 buat file /etc/sysconfig/network-scripts/route-lo dengan konten berikut: 239.10.10.0/24 via 127.0.0.1 dev lokemudian restart layanan jaringan
systemctl restart network Peran dvblast adalah mendemultipleks sinyal dari kartu tuner, dan menyiarkan aliran IP pada jaringan, dalam rtp secara default.
Fasilitas
apt install dvblastVerifikasi
$ dvblast --version
DVBlast 3.4 (release) mumudvb adalah evolusi dari dvblast
Fasilitas
apt install mumudvb Tambahkan pengguna baru _mumudvb ke grup video dan plugdev
usermod -a -G video _mumudvb
usermod -a -G plugdev _mumudvb udp secara default. untuk rtp gunakan rtp_header ke 1 dalam konfigurasi.
ffmpeg adalah pisau audiovisual tentara Swiss. Ini memungkinkan transcoding, analisis, pembuatan file media. Kami akan menggunakannya untuk membaca aliran rtp/udp dan menampilkannya langsung pada output standar. Dalam mode lintasan datar.
Fasilitas
apt install ffmpegVerifikasi
$ ffmpeg 2>&1 | head -1
ffmpeg version 4.3.4-0+deb11u1+rpt3 Copyright (c) 2000-2021 the FFmpeg developers Di direktori systemd , 2 file layanan disediakan. Mari salin ke tempat yang tepat:
cp systemd/[email protected] /etc/systemd/system
cp systemd/[email protected] /etc/systemd/system
systemctl daemon-reloadCatatan: jalur aplikasi dan log mungkin perlu disesuaikan.
Untuk memulai streaming multipleks, gunakan salah satu dari contoh perintah berikut:
systemctl start mumudvb@0_r1
systemctl enable --now dvblast@1_r15 parameternya berbentuk CARD_MUX :
CARD pengidentifikasi kartu (0...7)MUX pengidentifikasi multipleks (r1 ... r15)Tautan: Dokumentasi Systemd
Kita dapat memeriksa apakah multipleks dialirkan pada loop lokal dengan netstat :
$ netstat -nu
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
udp 0 0 127.0.0.1:41809 239.10.10.14:1234 ESTABLISHED
udp 0 0 127.0.0.1:52565 239.10.10.3:1234 ESTABLISHED
udp 0 0 127.0.0.1:39327 239.10.10.2:1234 ESTABLISHED
udp 0 0 127.0.0.1:45600 239.10.10.27:1234 ESTABLISHED
udp 0 0 127.0.0.1:37410 239.10.10.30:1234 ESTABLISHED Catatan: dengan mumudvb tidak ada hasil netstat yang sama...
Di sisi lain, alat iptraf memungkinkan Anda mendapatkan gambaran umum lalu lintas jaringan dalam antarmuka teks.
apt install iptraf dengan ffmpeg
ffmpeg -i rtp://239.10.10.2:1234 -c copy -map 0 rec.ts atau bahkan lebih baik dengan multicat (ketergantungan bitstream , dapat dikompilasi dengan mudah)
multicat -X @239.10.10.2:1234 /dev/null 2> /dev/null > rec.tsDeskripsi parameter:
-X : kami meminta aliran ts melewati keluaran standar@239.10.10.2:1234 : tentukan grup multicast yang ingin Anda langgani/dev/null : kami tidak ingin aliran ditulis ke disk2>/dev/null : kami menyembunyikan keluaran kesalahan-u untuk menambahkan jika alirannya adalah udp "mentah" dan bukan rtp> rec.ts : kita mengarahkan aliran ke file Dalam kasus jaringan yang tidak kompatibel dengan multicast dan untuk menghindari banjir, mungkin menarik untuk mengubah aliran multicast menjadi unicast. Namun, perhatikan volume jaringan jika banyak klien yang terhubung ke sumbernya.
Menginstal udpxy
git clone https://github.com/pcherenkov/udpxy
cd udpxy/chipmunk
make
sudo make installPeluncuran layanan secara manual:
sudo udpxy -p 80 -c 8 Layanan akan berjalan pada port 80 ( -p ), dengan maksimal 8 klien ( -c ).
Luncurkan melalui systemd :
Juga di sini adalah file layanan systemd untuk udpxy.
cp conf/systemd/udpxy.service /etc/systemd/system
systemctl daemon-reload
sudo systemctl enable --now udpxyMemeriksa apakah layanan sedang berjalan:
$ netstat -an | grep " :80 "
tcp 0 0 0.0.0.0:80 0.0.0.0: * LISTENSekarang, di jaringan lokal kita, kita dapat meminta, dalam unicast dan TCP, melalui protokol http, permintaan seperti ini:
vlc http://dvbstream/rtp/239.10.10.2:1234dvbstream menjadi ip/host mesin yang menjalankan udpxy/rtp/ atau /udp/ bergantung pada protokol streaming yang digunakan oleh sumber239.10.10.2:1234 ip dan port grup multicast sumberBerikut adalah playlist complete.m3u dari semua saluran yang dideklarasikan dalam proyek ini (semua multipleks TNT Paris).
Contoh mosaik senyap dengan posisi jendela 2x2 pada layar 1920x1080:
mpv http://dvbstream/rtp/239.10.10.2:1234 --mute=yes --no-border --geometry=960x540+0+0 --deinterlace=yes &
mpv http://dvbstream/rtp/239.10.10.27:1234 --mute=yes --no-border --geometry=960x540+960+0 --deinterlace=yes &
mpv http://dvbstream/rtp/239.10.10.10:1234 --mute=yes --no-border --geometry=960x540+0+540 --deinterlace=yes &
mpv http://dvbstream/rtp/239.10.10.11:1234 --mute=yes --no-border --geometry=960x540+960+540 --deinterlace=yes & sudo systemctl enable --now dvblast@0_r1sudo systemctl enable --now dvblast@1_r2sudo systemctl enable --now dvblast@2_r3Total: 74,4 Mb/dtk
sudo systemctl enable --now dvblast@0_r4sudo systemctl enable --now dvblast@1_r6sudo systemctl enable --now dvblast@2_r7Total: 74,4 Mb/dtk
sudo systemctl enable --now dvblast@0_r9sudo systemctl enable --now dvblast@0_r15Total: 50 Mb/dtk


Direktori /dev/dvb harus berisi setidaknya satu adapter :
$ ll /dev/dvb/
total 0
drwxr-xr-x 2 root root 120 Mar 8 22:41 adapter0
drwxr-xr-x 2 root root 120 Mar 8 22:41 adapter1
drwxr-xr-x 2 root root 100 Mar 8 22:41 adapter2Melihat 2 kunci RTL-SDR yang terhubung melalui USB:
$ lsusb | grep RTL
Bus 001 Device 004: ID 0bda:2838 Realtek Semiconductor Corp. RTL2838 DVB-T
Bus 001 Device 005: ID 0bda:2838 Realtek Semiconductor Corp. RTL2838 DVB-T