IPTV KHnet

Z KHnetWiki

(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
(software)
(software)
Řádka 99: Řádka 99:
Streaming hlídá sada scriptů:
Streaming hlídá sada scriptů:
-
#multiplexy každé 4 minuty, zkouška pokusem o připojení (wget) na jeden z http portů. Nepovede-li se, pokusí process shodit a nastartovat spouštěcím scriptem znovu.
+
#multiplexy každé 4 minuty, [[IPTV_KHnet_dvbtwatchdog|zkouška]] pokusem o připojení (wget) na jeden z http portů. Nepovede-li se, pokusí process shodit a nastartovat spouštěcím scriptem znovu.
-
#restreaming každých 5 minut, zkouška pokusem o připojení (scan přes nc). Zkouší se každý port. Nepovede-li se, spustí se startovací script, který si ohlídá, zda proces ještě neběží (tedy ho zabije).
+
#restreaming každých 5 minut, [[IPTV_KHnet_dvbtwatchdog2|zkouška]] pokusem o připojení (scan přes nc). Zkouší se každý port. Nepovede-li se, spustí se startovací script, který si ohlídá, zda proces ještě neběží (tedy ho zabije).
#všechny procesy VLC jsou každých 15 minut kontrolovány na obsazenou paměť (RSS). Při přesáhnutí 300MB jsou nekompromisně zabité. Nahození zajistí předchozí scripty.
#všechny procesy VLC jsou každých 15 minut kontrolovány na obsazenou paměť (RSS). Při přesáhnutí 300MB jsou nekompromisně zabité. Nahození zajistí předchozí scripty.
#RSS procesů jednotlivých multiplexů je vynášená do [http://media.khnet.info/hotsanic/vlcmem/connections.html grafu].
#RSS procesů jednotlivých multiplexů je vynášená do [http://media.khnet.info/hotsanic/vlcmem/connections.html grafu].

Verze z 9. 7. 2009, 09:21

Obsah

Streaming pomocí TV karet a VLC

pozor! Píšu to zrovna teď ...

verze 0.2, DVB-T

cíle

Vyzkoušet možnosti a náročnost skutečné IPTV v síti khnet, všechny dostupné, volně šiřitelné programy (co lze chytit ve vzduchu, lze šířit v uzavřené síti, viz právní analýza od pilsfree). Upozorňuji, že pojem "síť khnet" znamená, že programy nelze sledovat nikde jinde a nikým jiným, než členy khnet.info. Tedy přes internet to nejde.

Kanály jsou šířeny v originálním formátu, tedy MPEG2 s průměrem 4Mbit datového toku.
Restream je duplikát programu, ve čtvrtinovém rozlišení a kodeku mp43 (WMV9, DivX3) přehratelné i ve Windows Media Playeru. Datový tok cca 700kbit.

Jak spustit originál: http://media.khnet.info:PORT
*kde port se spočítá jako 8000 + (číslo_multiplexu * 10) + číslo_programu
Jak spustit malý: mms://media.khnet.info:PORT
*kde port je o tisíc menší, než originál
*do VLC je nutné místo "mms" psát "mmsh"

Playlisty jsou ke stažení na serveru

Program port restream
ČT1 8011 ano
ČT2 8012 ano
ČT24 8013 ano
ČT4 8014 ano
Nova 8021 ano
NovaCinema 8022 ano
Prima 8023 ano
PrimaCool 8024 ano
BarrandovTV 8025 ano
Óčko 8031 ano
PublicTV 8032 ne
Z1 8033 ne

na wifi připojeních to nikdy nezkoušejte moc dlouho (raději vůbec), zbytečně brzdíte ostatním provoz!

Přehrávání vyzkoušeno pouze ve VLC playeru (je naštěstí multiplatformní, funguje všude a na všem), ve windows MediaPlayer to nějak nejede (krom těch menších streamů). Je nutné mít nainstalovaný správný kodek, funguje to s ffdshow (lze využít balík CCCP). VLC má ovšem kodeky vlastní. Dle posledních zpráv lze originál přehrát snad ve všem, včetně set-top-boxu Amino a při troše snahy i v PopcornHour.

Do VLC se to píše jako Network Stream (malý návod) a vybrat se musí způsob HTTP/HTTPS/FTP/MMS - tam se vloží vybraný kanál z odstavce o trochu výše. Své dojmy, nápady, návrhy či jiná sdělení pište do fóra IPTV.


hardware

server Fujitsu Econel 200 S2 Xeon E5310 1.6GHz (quadcore, 2ks), chipset intel5000V, 2GB RAM
TV Asus P7131 Hybrid (4ks)

Je inzerovaný jako tichý. Ale v pojetí fujitsu je to tiché tak možná do hlučné kanceláře. Pokud běží všechny větráky, je to docela turbína (3x 120mm větrák cca 1500 otáček, plus zdroj a aktivní 1U na druhém procesoru). Tok vzduchu uvnitř moc dobře vyřešen není.
Ale nebyl moc drahý, 18 tisíc s daní plus processor a karty.

Karta č. 4 v PCI slotu, 1 až 3 v PCI-X slotech.

software

Linux kernel 2.6.24 (x86_64)
modul saa7134 a saa7134-alsa

modprobe.conf:

options saa7134 card=112,112,112,112 tuner=54,54,54,54 video_nr=1,2,3,4 vbi_nr=1,2,3,4 radio_nr=1,2,3,4 gpio_tracking=1,1,1,1 i2c_scan=1,1,1,1
options saa7134-alsa index=1,2,3,4

modul saa7134-alsa natahován explicitně v rc.conf, automaticky v modprobe.conf to nějak nefungovalo. Pro DVB-T není potřeba.

Pro funkčnost DVB části této karty je nutné mít v /lib/firmware soubor s firmware dvb-fe-tda10046.fw. V jádru 2.6.24 nebyl.

je nutné opravit script Documentation/dvb/get_dvb_firmware
v procedurách tda10045 a tda10046 opravit:
my $url = "http://www.tt-download.com/download/updates/219/$sourcefile"
a spustit ./get_dvb_firmware tda10046
výsledný soubor dvb-fe-tda10046.fw zkopírovat do /lib/firmware a reloadovat všechny saa moduly

VLC
Závislosti vyřešeny pomocí balíčku (pacman -Sy vlc), posléze odinstalovány balíčky ffmpeg, x264 a vlastní vlc (překlad ze zdrojáků).
gpac

VLC má problém s memory leak při mpeg2 inputu. Zjevně záleží na kvalitě příjmu, pokud je to v pohodě, bez velkých výpadku, funguje to správně. A je jedno, jestli je to přímo z DVB karty, nebo restream s inputem z http. Na webu je k nalezení spousta řešení ([1]), žádné prý nefunguje dokonale. Vyřešeno je to prý až ve verzi 1.0.0 (ale nezkoušel jsem). Zatím se jako dostatečné řešení jeví toto:

/modules/demux/mpeg/mpga.c
řádek cca 360, static void Close( vlc_object_t * p_this)
přidat if ( p_sys->p_block_in ) block_Release( p_sys->p_block_in );
za obdobný týkající se p_block_out

a také možná pomáhá parametr --no-spu

Po těchto úpravách vypadá streaming pomocí VLC stabilnější, než getstream ([2]), který též padal jak hrušky.

Streaming hlídá sada scriptů:

  1. multiplexy každé 4 minuty, zkouška pokusem o připojení (wget) na jeden z http portů. Nepovede-li se, pokusí process shodit a nastartovat spouštěcím scriptem znovu.
  2. restreaming každých 5 minut, zkouška pokusem o připojení (scan přes nc). Zkouší se každý port. Nepovede-li se, spustí se startovací script, který si ohlídá, zda proces ještě neběží (tedy ho zabije).
  3. všechny procesy VLC jsou každých 15 minut kontrolovány na obsazenou paměť (RSS). Při přesáhnutí 300MB jsou nekompromisně zabité. Nahození zajistí předchozí scripty.
  4. RSS procesů jednotlivých multiplexů je vynášená do grafu.

...
poznámečky:

nové verze kodeků ffmpeg (2.5.2008, poslední balíček archlinux i svn snapshot) mají nemilou vlastnost - nelze určit bitrate ve vlc, parametr je naprosto ignorován. Pro plný PAL (720x576) nebyl problém generovat 16Mbit datový tok (přitom vizuálně to nebylo nijak znatelně lepší, než současný 2Mbit). Stejně se chová i binární instalace windows VLC (0.8.6f). Je nutné použít verzi starší - vyzkoušen ffmpeg-20070505.tar.gz, funguje bezproblémově (tedy pro mp4v).

balík x264 je kompilovaný ze zdrojů, ovšem bez valného výsledku. Stream se mi nedaří přehrát. Nemluvě o znatelně vyšší náročnosti na CPU (odhad 2-3x).

streaming pomocí rtsp je ve verzi 0.8.6f prakticky nepoužitelné, nefunguje žádný timeout (ani nelze ladit). Pokud klient skončí s příjmem kanálu neregulérně (zásek widlí, pád VLC nebo sítě), server stream posílá pořád dál, nelze to ukončit jinak, než zhozením procesu na serveru. Je to vlastnost protokolu, dle bugzilly vlc se plánuje nějaké řešení, asi do verze pozdější 1.0.0

nefunguje parametr --ttl (je zjevně pouze pro multicast), lze obejít nastavením iptables (-t mangle -A POSTROUTING ... -j TTL --set-ttl ##)

rádio se nedaří naladit přímo VLCčkem, je nutné vedle pustit pomocí fmtools (a nechat běžet). VLC jsem na toto zavrhnul a použit je ices2 a stream (po dvojitém recodingu do ogg) posílán na IceCast server (již běží na http://hekate.khnet.info:9000).

Náročnost CPU se pohybuje okolo 30-40 každé jádro, load okolo 4. Není zajištěna závislost na počtu on-line klientů, maximum zatím bylo cca 3 a na vytížení to nijak extra poznat nebylo. Pokus spustit 14 instancí VLC na jednom počítači byl poměrně úspěšný, byť toho Core2 na 2.6GHz mělo naprosto plné zuby. Ale server to kromě datového toku na síťovce (přes 80Mbit, trochu jsem při pokusu zvýšil bitrate) nijak nepoznal. Největší část výkonu berou restreamy do mp43, stream čistého multiplexu stojí pouhých pár procent CPU.

EPG: http://epg.evkanet.czf/export2.php (je to blokovaný pro servery, tak to nikdo ani nezkoušejte).

Odkazy

www.digizone.cz
Typy kódování
www.digitalne.tv

Původní článek o analogové verzi

Osobní nástroje