الهدف: استقبال تلفزيون DTT محليًا باستخدام Raspberry Pi المجهز بموالف DVB-T2 TV HAT و/أو مفاتيح RTL-SDR.
اختبر باستخدام أداتين: dvblast و mumudvb .
في مجلدات conf/dvblast و conf/mumudvb توجد تكوينات تعدد إرسال DTT المتوفرة في باريس مع عنوان بث متعدد البث لكل قناة.
سنقوم أولاً بتقييد نطاق IP للبث المتعدد على الحلقة المحلية حتى لا نغرق الشبكة إذا لم يتم تحسين المحولات للبث المتعدد (راجع IGMP Snooping).
ip route add 239.10.10.0/24 dev lo src 127.0.0.1ثم للتحقق من مسارات بطاقة الشبكة:
$ 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 ملحوظة: أمر route هو جزء من حزمة net-tools ضمن Debian .
أو
$ 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.1لجعل هذه القاعدة ثابتة:
Debian قم بإنشاء الملف /etc/network/if-up.d/local-multicast (واجعله قابلاً للتنفيذ) بالمحتوى التالي: #! /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 قم بإنشاء ملف /etc/sysconfig/network-scripts/route-lo بالمحتوى التالي: 239.10.10.0/24 via 127.0.0.1 dev loثم أعد تشغيل خدمة الشبكة
systemctl restart network يتمثل دور dvblast في إزالة تعدد إرسال الإشارة من بطاقة الموالف، وبث دفق IP على الشبكة، في rtp افتراضيًا.
منشأة
apt install dvblastتَحَقّق
$ dvblast --version
DVBlast 3.4 (release) mumudvb هو تطور لـ dvblast
منشأة
apt install mumudvb أضف المستخدم الجديد _mumudvb إلى مجموعات video و plugdev
usermod -a -G video _mumudvb
usermod -a -G plugdev _mumudvb udp بشكل افتراضي. بالنسبة إلى rtp استخدم rtp_header إلى 1 في التكوين.
ffmpeg هو سكين الجيش السويسري للمواد السمعية والبصرية. يسمح بتحويل الترميز والتحليل وإنشاء ملفات الوسائط. سوف نستخدمه لقراءة دفق rtp/udp وعرضه مباشرة على الإخراج القياسي. في وضع التمرير المسطح.
منشأة
apt install ffmpegتَحَقّق
$ ffmpeg 2>&1 | head -1
ffmpeg version 4.3.4-0+deb11u1+rpt3 Copyright (c) 2000-2021 the FFmpeg developers في دليل systemd ، يتم توفير ملفين للخدمة. لننسخها إلى المكان الصحيح:
cp systemd/[email protected] /etc/systemd/system
cp systemd/[email protected] /etc/systemd/system
systemctl daemon-reloadملاحظة: قد يلزم تعديل مسار التطبيقات والسجلات.
لبدء دفق الإرسال المتعدد، استخدم أحد أمثلة الأوامر التالية:
systemctl start mumudvb@0_r1
systemctl enable --now dvblast@1_r15 المعلمة بالصيغة CARD_MUX :
CARD معرف البطاقة (0 ... 7)MUX معرف تعدد الإرسال (r1 ... r15)الرابط: وثائق Systemd
يمكننا التحقق من تدفق الإرسال المتعدد في الحلقة المحلية باستخدام 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 ملحوظة: مع mumudvb لا توجد نفس نتيجة netstat...
من ناحية أخرى، تتيح لك أداة iptraf الحصول على نظرة عامة على حركة مرور الشبكة في واجهة نصية.
apt install iptraf مع ffmpeg
ffmpeg -i rtp://239.10.10.2:1234 -c copy -map 0 rec.ts أو حتى أفضل مع multicat (تبعية bitstream ، يتم تجميعها بسهولة)
multicat -X @239.10.10.2:1234 /dev/null 2> /dev/null > rec.tsوصف المعلمات:
-X : نطلب أن يمر تيار ts عبر الإخراج القياسي@239.10.10.2:1234 : حدد مجموعة البث المتعدد التي تريد الاشتراك فيها/dev/null : لا نريد كتابة الدفق على القرص2>/dev/null : نقوم بإخفاء مخرجات الخطأ-u للإضافة إذا كان الدفق هو udp "خام" وليس rtp> rec.ts : نقوم بإعادة توجيه التدفق إلى ملف في حالة وجود شبكة غير متوافقة مع البث المتعدد ولتجنب الفيضانات، قد يكون من المثير للاهتمام تحويل دفق البث المتعدد إلى بث أحادي. ومع ذلك، انتبه إلى حجم الشبكة في حالة اتصال العديد من العملاء بالمصدر.
تثبيت udpxy
git clone https://github.com/pcherenkov/udpxy
cd udpxy/chipmunk
make
sudo make installالإطلاق اليدوي للخدمة:
sudo udpxy -p 80 -c 8 سيتم تشغيل الخدمة على المنفذ 80 ( -p )، بحد أقصى 8 عملاء ( -c ).
التشغيل عبر systemd :
يوجد أيضًا هنا ملف خدمة systemd لـ udpxy.
cp conf/systemd/udpxy.service /etc/systemd/system
systemctl daemon-reload
sudo systemctl enable --now udpxyالتأكد من تشغيل الخدمة:
$ netstat -an | grep " :80 "
tcp 0 0 0.0.0.0:80 0.0.0.0: * LISTENالآن، على شبكتنا المحلية، سنكون قادرين على طلب طلب مثل هذا، عبر البث الأحادي وTCP، عبر بروتوكول http:
vlc http://dvbstream/rtp/239.10.10.2:1234dvbstream هو IP/المضيف للجهاز الذي يقوم بتشغيل udpxy/rtp/ أو /udp/ اعتمادًا على بروتوكول الدفق الذي يستخدمه المصدر239.10.10.2:1234 عنوان IP ومنفذ مجموعة البث المتعدد المصدرفيما يلي قائمة التشغيل الكاملة.m3u لجميع القنوات المعلنة في هذا المشروع (جميع تعدد إرسال TNT الباريسية).
مثال على الفسيفساء الصامتة مع وضع نافذة 2x2 على شاشة مقاس 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_r3الإجمالي: 74.4 ميجابايت/ثانية
sudo systemctl enable --now dvblast@0_r4sudo systemctl enable --now dvblast@1_r6sudo systemctl enable --now dvblast@2_r7الإجمالي: 74.4 ميجابايت/ثانية
sudo systemctl enable --now dvblast@0_r9sudo systemctl enable --now dvblast@0_r15الإجمالي: 50 ميجا بايت/ثانية


يجب أن يحتوي الدليل /dev/dvb على 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 adapter2عرض مفتاحي RTL-SDR متصلين عبر 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