목표: DVB-T2 TV HAT 튜너 및/또는 RTL-SDR 키가 장착된 Raspberry Pi를 사용하여 로컬로 DTT TV를 수신합니다.
dvblast 및 mumudvb 두 가지 도구를 사용하여 테스트합니다.
conf/dvblast 및 conf/mumudvb 디렉토리에는 각 채널에 대한 멀티캐스트 브로드캐스트 주소가 있는 파리에서 사용할 수 있는 DTT 멀티플렉스 구성이 있습니다.
스위치가 멀티캐스트에 최적화되지 않은 경우 네트워크가 플러딩되지 않도록 먼저 멀티캐스트 IP 범위를 로컬 루프로 제한합니다(IGMP 스누핑 참조).
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 명령은 Debian 아래 net-tools 패키지의 일부입니다.
또는
$ 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 의 역할은 튜너 카드의 신호를 역다중화하고 기본적으로 rtp 로 네트워크의 IP 스트림을 브로드캐스트하는 것입니다.
시설
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 디렉터리에는 2개의 서비스 파일이 제공됩니다. 올바른 위치에 복사해 보겠습니다.
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 .링크: 시스템 문서
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 서비스는 최대 8개의 클라이언트( -c )와 함께 포트 80( -p )에서 실행됩니다.
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 udpxy 실행하는 머신의 IP/호스트입니다./rtp/ 또는 /udp/239.10.10.2:1234 소스 멀티캐스트 그룹의 IP 및 포트다음은 이 프로젝트에 선언된 모든 채널(모든 파리 TNT 멀티플렉스)의 완전한.m3u 재생 목록입니다.
1920x1080 화면에 2x2 창 위치가 지정된 무음 모자이크의 예:
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.4Mb/s
sudo systemctl enable --now dvblast@0_r4sudo systemctl enable --now dvblast@1_r6sudo systemctl enable --now dvblast@2_r7총계: 74.4Mb/s
sudo systemctl enable --now dvblast@0_r9sudo systemctl enable --now dvblast@0_r15합계: 50Mb/s


/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 adapter2USB를 통해 연결된 2개의 RTL-SDR 키 보기:
$ 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