TV-server: Porovnání verzí

Z Poznámkový blok
Přejít na: navigace, hledání
(Spusštění)
(Multicast)
 
(Není zobrazeno 31 mezilehlých verzí od stejného uživatele.)
Řádka 5: Řádka 5:
 
* [https://blog.brichacek.net/prenos-dvb-t-kanalu-po-ip/ blog.brichacek.net]
 
* [https://blog.brichacek.net/prenos-dvb-t-kanalu-po-ip/ blog.brichacek.net]
 
* [https://marhycz.github.io/picons/ Icony CZ programu]
 
* [https://marhycz.github.io/picons/ Icony CZ programu]
 
+
=== Instalace ===
 +
Provně provedeme upgrade systému
 +
sudo apt update
 +
sudo apt upgrade
 +
sudo reboot
 +
Poté spustíme vlastní instalaci
 +
sudo apt install tvheadend
 +
Během instalace budeme vyzváni k zadání loginu admonistratora a jeho hesla. Doporučuje se admin / admintv. Po dokončení instalece se pak připojíme pro nastavení přez webové rozhraní na adrese http://raspberrypi.local:9981
  
 
== udpxy ==
 
== udpxy ==
Řádka 20: Řádka 27:
 
  cd udpxy-1.0.23-12
 
  cd udpxy-1.0.23-12
 
  sudo make install
 
  sudo make install
=== Spusštění ===
+
=== Spuštění ===
 
Pro jednoduché nastavení stačí spustit program z parametrem portu. Uvedený port je výchozí.
 
Pro jednoduché nastavení stačí spustit program z parametrem portu. Uvedený port je výchozí.
 
  udpxy -p 4022
 
  udpxy -p 4022
Následně můžeme ověřit funkčnost přes web rozhraní:
+
Následně můžeme ověřit funkčnost přes web rozhraní (v Chrom OK,Firefox NG):
 
  http://IP_adresa_serveru:4022/status
 
  http://IP_adresa_serveru:4022/status
 +
 +
=== Service ===
 +
Udpxy je možné spuštět dvojím spůsobem. Přímo pod uživatelem root, kdy se program spustí na pozadí (nesmí obsahovat parametr -T). Druhá varianta je jako služba. Výhoda je dle potřeby snadné restartování. Pro tento účel vytvoříme jednoduchy skript "udpxy.service" který uložíme do adresáře "/etc/systemd/system/":
 +
sudo systemctl edit --force --full udpxy.service
 +
 +
[Unit]
 +
Description=Udpxy
 +
 +
[Service]
 +
Type=simple
 +
Environment=UDPXY_SOCKBUF_LEN=8388608
 +
ExecStart=/usr/local/bin/udpxy -p 4022 -c 500 -T
 +
RestartSec=5
 +
Restart=on-failure
 +
 +
[Install]
 +
WantedBy=multi-user.target
 +
 +
Následně službu zaregistrujeme a nastavíme automatické spouštění:
 +
systemctl eneble udpxy.service
 +
 +
=== Příklady ===
 +
 +
* http://IP_adresa_serveru:port/status/  - zobrazit základní statistiky démona
 +
* http://IP_adresa_serveru:port/restart/ - zavřete všechna aktivní připojení a restartujte
 +
 +
* http://192.168.0.12:5056/udp/224.0.2.26:24012
 +
* http://192.168.0.12:5056/rtp/224.0.2.26:24012
 +
* http://192.168.0.15:5056/rtp/224.0.2.26^24055
 +
 +
=== Vlan ===
 +
Protože Raspberry má jen jeden ethernetový port a multicast pravděpodobně bude na jiné síti, potřebuje mít možnost vytvorit virtuální lan. Tatu funkce v základu respian není instalovaná a proto ji musíme doinstalovat. Také musíme zajistit, aby se modul spustil při startu raspberry.
 +
sudo apt install vlan
 +
sudo su
 +
echo 8021q >> /etc/modules
 +
exit
 +
 +
=== Nastavení sítě - Raspberry ===
 +
Raspberry používá k nastavení IP adres službu dhcpcd jejiž konfigurace je uložana v /etc/sysctl.conf. V tomto souboru přidáme:
 +
 +
static
 +
interface eth0.31
 +
static ip_address=0.0.0.0
 +
 +
sudo systemctl restart dhcpcd; sudo sysctl -p
 +
 +
=== Nastavení sítě - other ===
 +
Pro automatický provoz je potřeba též správné nastavení sítě. To je ale vždy individuální.
 +
 +
Uvedený příklad nastaví na interface eth0 vlan z ID 31. Následně interface zapne a přepne do "promiskujitního" modu. Jinými slovy interface se stane aktivní pro poslech a navíc není potřeba na něm nastavovat žádnou IP adresu. Zároveň nastaví routovací pravidla, aby požadavek na multikast byl odeslán právě tímto interface. V případě vypnutí interface je slušnost zase vše "uklidit". V standartní instalaci by byl tento příklad uložen v souboru "/etc/network/interfaces.d/eth0.31".
 +
 +
auto eth0.31
 +
iface eth0.31 inet manual
 +
    up ip link set $IFACE up
 +
    post-up  ip link  set $IFACE promisc on
 +
    post-up  ip route add 224.0.0.0/4 dev $IFACE
 +
 +
    pre-down ip route del 224.0.0.0/4 dev $IFACE
 +
    pre-down ip link  set $IFACE promisc off
 +
    down ip link set $IFACE down
 +
 +
=== Multicast adresní rozsahy ===
 +
* 224.0.0.0 až 224.0.0.255 - určené pro síťové protokoly uvnitř LAN, mají TTL = 1, takže nepřejdou přes router
 +
* 224.0.1.0 až 238.255.255.255 - jsou globální multicast adresy, které se používají mezi organizacemi a přes internet
 +
* 239.0.0.0 až 239.255.255.255 - je omezený rozsah adres, pro použití uvnitř organizace (LAN)
 +
 +
V prvním rozsahu, 224.0.0.0/24 jsou speciální adresy. Proto není úplně vhodné tento rozsah požívat, aby nevznikla případná kolize.
 +
 +
* 224.0.0.1 - všechny systémy
 +
* 224.0.0.2 - všechny lokální (na stejném subnetu) routery
 +
* 224.0.0.5 - OSPF všechny routery
 +
* 224.0.0.6 - OSPF DR a BDR routery
 +
* 224.0.0.10 - EIGRP routery
 +
 +
=== Nespecifikovano ===
 +
Jen nesouvisle poznamku k reseni ...
 +
ifconfig eth0 up
 +
ifconfig eth0 promisc
 +
/etc/dhcpcd.conf
 +
static
 +
interface eth0
 +
static ip_address=0.0.0.0
 +
/etc/network/interfaces
 +
up ifconfig eth1 promisc up
 +
 +
up ip link set dev eth0 promisc on
 +
== TV - multicast ==
 +
Testovaní multicastu je pomerne problémové. Zde jsem si poznamenal par příkladů pro TV multicast:
 +
* multicat -u -d 162000000 @239.202.251.32:5500 /tmp/video1.ts 100  # nahraje cast multicastu do souboru
 +
 +
 +
* dvbsnoop -s ts -pd 6 -tssubdecode -nph -if /tmp/video1.ts 100 # zobrazi úplnou tabulku z PID 100 v čitelném tvaru
 +
* dvbsnoop -s ts -pd 3 -tssubdecode -nph -if /tmp/video1.ts 100 # zobrazi úspornejší tabulku z PID 100 v čitelném tvaru
 +
 +
== Odazy ==
 +
* github.com/arut/nginx-rtmp-module

Aktuální verze z 20. 3. 2022, 10:55

TV Server

Aktuálně se nejvíce odkazů obrací na sw Tvheadend. Různé návody

Instalace

Provně provedeme upgrade systému

sudo apt update
sudo apt upgrade
sudo reboot

Poté spustíme vlastní instalaci

sudo apt install tvheadend

Během instalace budeme vyzváni k zadání loginu admonistratora a jeho hesla. Doporučuje se admin / admintv. Po dokončení instalece se pak připojíme pro nastavení přez webové rozhraní na adrese http://raspberrypi.local:9981

udpxy

Instalace:

  • Stáhneme nejnovější verzi ze stránek udpxy.com
  • Rozbalíme soubor udpxy-src.tar.gz
  • Vnoříme se vytvořeného adresáře po rozbalení (v našem připadě udpxy-1.0.23-12)
  • Spistíme vlastní instalaci
wget http://www.udpxy.com/download/udpxy/udpxy-src.tar.gz
tar -xzvf udpxy-src.tar.gz
cd udpxy-1.0.23-12
sudo make install

Spuštění

Pro jednoduché nastavení stačí spustit program z parametrem portu. Uvedený port je výchozí.

udpxy -p 4022

Následně můžeme ověřit funkčnost přes web rozhraní (v Chrom OK,Firefox NG):

http://IP_adresa_serveru:4022/status

Service

Udpxy je možné spuštět dvojím spůsobem. Přímo pod uživatelem root, kdy se program spustí na pozadí (nesmí obsahovat parametr -T). Druhá varianta je jako služba. Výhoda je dle potřeby snadné restartování. Pro tento účel vytvoříme jednoduchy skript "udpxy.service" který uložíme do adresáře "/etc/systemd/system/":

sudo systemctl edit --force --full udpxy.service
[Unit]
Description=Udpxy

[Service]
Type=simple
Environment=UDPXY_SOCKBUF_LEN=8388608
ExecStart=/usr/local/bin/udpxy -p 4022 -c 500 -T
RestartSec=5
Restart=on-failure

[Install]
WantedBy=multi-user.target

Následně službu zaregistrujeme a nastavíme automatické spouštění:

systemctl eneble udpxy.service

Příklady

Vlan

Protože Raspberry má jen jeden ethernetový port a multicast pravděpodobně bude na jiné síti, potřebuje mít možnost vytvorit virtuální lan. Tatu funkce v základu respian není instalovaná a proto ji musíme doinstalovat. Také musíme zajistit, aby se modul spustil při startu raspberry.

sudo apt install vlan
sudo su
echo 8021q >> /etc/modules
exit

Nastavení sítě - Raspberry

Raspberry používá k nastavení IP adres službu dhcpcd jejiž konfigurace je uložana v /etc/sysctl.conf. V tomto souboru přidáme:

static
interface eth0.31
static ip_address=0.0.0.0
sudo systemctl restart dhcpcd; sudo sysctl -p

Nastavení sítě - other

Pro automatický provoz je potřeba též správné nastavení sítě. To je ale vždy individuální.

Uvedený příklad nastaví na interface eth0 vlan z ID 31. Následně interface zapne a přepne do "promiskujitního" modu. Jinými slovy interface se stane aktivní pro poslech a navíc není potřeba na něm nastavovat žádnou IP adresu. Zároveň nastaví routovací pravidla, aby požadavek na multikast byl odeslán právě tímto interface. V případě vypnutí interface je slušnost zase vše "uklidit". V standartní instalaci by byl tento příklad uložen v souboru "/etc/network/interfaces.d/eth0.31".

auto eth0.31
iface eth0.31 inet manual
    up ip link set $IFACE up
    post-up  ip link  set $IFACE promisc on
    post-up  ip route add 224.0.0.0/4 dev $IFACE

    pre-down ip route del 224.0.0.0/4 dev $IFACE
    pre-down ip link  set $IFACE promisc off
    down ip link set $IFACE down

Multicast adresní rozsahy

  • 224.0.0.0 až 224.0.0.255 - určené pro síťové protokoly uvnitř LAN, mají TTL = 1, takže nepřejdou přes router
  • 224.0.1.0 až 238.255.255.255 - jsou globální multicast adresy, které se používají mezi organizacemi a přes internet
  • 239.0.0.0 až 239.255.255.255 - je omezený rozsah adres, pro použití uvnitř organizace (LAN)

V prvním rozsahu, 224.0.0.0/24 jsou speciální adresy. Proto není úplně vhodné tento rozsah požívat, aby nevznikla případná kolize.

  • 224.0.0.1 - všechny systémy
  • 224.0.0.2 - všechny lokální (na stejném subnetu) routery
  • 224.0.0.5 - OSPF všechny routery
  • 224.0.0.6 - OSPF DR a BDR routery
  • 224.0.0.10 - EIGRP routery

Nespecifikovano

Jen nesouvisle poznamku k reseni ...

ifconfig eth0 up
ifconfig eth0 promisc

/etc/dhcpcd.conf

static
interface eth0
static ip_address=0.0.0.0

/etc/network/interfaces

up ifconfig eth1 promisc up
up ip link set dev eth0 promisc on

TV - multicast

Testovaní multicastu je pomerne problémové. Zde jsem si poznamenal par příkladů pro TV multicast:

  • multicat -u -d 162000000 @239.202.251.32:5500 /tmp/video1.ts 100 # nahraje cast multicastu do souboru


  • dvbsnoop -s ts -pd 6 -tssubdecode -nph -if /tmp/video1.ts 100 # zobrazi úplnou tabulku z PID 100 v čitelném tvaru
  • dvbsnoop -s ts -pd 3 -tssubdecode -nph -if /tmp/video1.ts 100 # zobrazi úspornejší tabulku z PID 100 v čitelném tvaru

Odazy

  • github.com/arut/nginx-rtmp-module