Vytvoření streamovacího serveru.

Vybrán hardware:

Vybraný hardware je naprosto nedostatečný pro převod plného palu do h264 v reálném čase (ubuntu + vlc, kodek x264, zkoušel jsem jen jeden tv kanál - vytížený jeden cpu z 8 na 100%, ostatní se neúčastnily - výstupní stream bez omezování videobitrate (vb) byl pouze cca 1mbit, obraz krásný - ale trhaný z důvodu výpadků způsobených nestíhajícím procesorem.) při použití mp4v datový tok cca 2mbit (vb=2048), viditelné kostičky. Možná to půjde nějak nastavit ale zhledem k provozu na gigabitové síti nějakých pár desítek mbit zatím nepotřebuji řešit.

pro pouhé streamování zase velice naddimenzovaný

Na streamování by měla stačit i stará plečka, zde jsou mé údaje ze kterých toto tvrzení odvozuji: streamuju ted multicastem kompletne dva multiplexy (9xSD+1xHDTV a 8xradio) na ubuntu-server 7.10 s getstream2-20070923 (originál z http://silicon-verl.de/home/flo/projects/streaming/ ) pocitac je athlon64/3GHz (jeden z prvnich - jeste slot 754) a s 1GB Ram, 3x Airstar2 (třetí mám na pokusy) Běží to už druhý týden, samo to rozdýchá i odpojení a znovuzapojení antény Zátěž celeho stroje se pohybuje mezi 2 až 6%, samotný getstream je z toho 0.7 až 1.3% Ram je standartně zabráno 72 až 73 MB. (kompletně včetně systému) zátěž sítě - první multiplex cca 9000pkt/s 17mbit/s - druhý multiplex cca 13500pkt/s, 25mbit/s

Základní Instalace systému:

***********************************************************

Nyní se pustím do postupné instalace driverů televizních karet
abych dosáhl stavu že všechny adaptéry budu mít vypsány v
/dev/dvb/adapter0 až /dev/dvb/adapter4
Momentálně mám vloženy pouze dva adaptéry a to AirStar2 (který později vyměním za SkyStar2) a TT3200, další doplním postupně.

***********************************************************
AirStar2 i Skystar2 bezproblémově funkční - podporovány již ve výchozí instalaci, nemusím nic doinstalovávat. mám ji v /dev/dvb/adapter0
a v lshw se hlásí jako SkyStar2
***********************************************************
Technotrent TT-3200 (Technisat Skystar HD) zkusím zprovoznit

***********************************************************
Zprovoznění systému

jak na getstream - funkční fta s skystar a airstar

čím přijímat: vcl, service discovery, sap

další info na videolan.org

TODO: pastnout sem moji asp stránku s vlc pluginem a přepínáním televizí a rádií až ji dokončím včetně programového průvodce.

Další použité nástroje pro stránku přehrávače jsou jak pro windows tak i pro linux až na jednu výjímku:

VLC (výjímka - ActiveX) pro přehrávání na intranetové stránce : http://wiki.videolan.org/ActiveX/HTML
TVxb pro grabování programů z webu http://www.tvxb.com/downloads.htm
tvxb.ini pro české a SK programy atd. - já jej stáhnul někde z tvfreaku: http://www.tvfreak.cz/forum/showthread.php?p=160358&highlight=tvxb.ini#post160358.
XLSTv
pro zobrazování programového průvodce na intranetové stránce - pochází z webu http://ericandchar.com/xsltvgrid/
k tomuto jsem přeložil češtinu, ke stažení jí dávám zde: http://www.hej.cz/download/czechlangxsltv-11.zip , autorovi jsem pastnul link do development fóra takže snad bude v příští verzi doplněná.

Přímo EPG data zatím nepřebírám protože je nevysílají všechny stanice a tak jsem ani nezačal řešit že čím to na ně mám jít.
Streamovat se se dají - PID 0x0012 (info o struktuře tabulek PSI viz http://www.home.agilent.com/upload/cmc_upload/All/6C06MPEGPAPER1.pdf), viz můj nejčerstvější konfig pro getstream který nyní posílá současně DVB-T MuxA, MuxB i DVB-S fta programy z paketu Skylink (TA3 + rádia). V tomto plně funkčním konfigu jsem použil mnoho voleb (udp, rtp, sap, dvb-t, dvb-s včetně použití DISEqC, pidy EPG...), originální příklady jsou některé zastaralé, ale všechny volby se dají vyčíst ze souboru getstream.h
BTW zatížení u jednojádro athlon64/3GHz 4% až 7%, využitých 69MB ram - ten počítač se prostě fláká :-) Load average 0.07 0.08 0.04

spuštění je jednoduché: getstream -dd -c /cestakekonfigu

TSreader (WINDOWS) pro zobrazení EPG z udp streamu http://www.coolstf.com/tsreader/ , lite verze je free pro nekomerční použití

StreamGuru - MPEG & DVB Transport Stream Analyzer měl být zkušebním nástrojem první volby, ale než jsem rozběhl vůbec nějaký stream tak mi vypršela zkušební doba - takže ani nevím zda by splňoval moje požadavky... stránka je zde: http://streamguru.de/

Pro zpracování (příjem) streamu IPTV set-top-boxem Amino Aminet 130 bylo nutné změnit konfigurák getstreamu a namísto použití output-rtp použít output-udp a na straně STB Amino pouštět příjem např. pomocí AVMedia.Play('type=VOD;src=igmp://239.55.55.56:3000;audio=273;video=257;pcr=32');

pokud použiji pouze AVMedia.Play('src=igmp://239.55.55.56:3000;audio=273;video=257');

tak nemám audio a obraz se trhá.

kde audio a video PID (ES) lze vyčíst pomocí výše zmíněného TSReaderu, co je pcr ještě nevím, hdtv jsem zatím ještě také nevyzkoušel.

Amino 130 mám momentálně ve dvou exemplářích, v jednom prohlížeč Opera a ve druhém ANT Fresco. Vzhledem k tomu že k aminům nemám IR klávesnici a u exempláře s Operou jsem nepřišel na to jak po zadání URL jej odentrovat jsem potřeboval zadávat stránku která se zobrazí jako výchozí jiným způsobem. Nejen na stránkách českého distributora http://www.lica.cz/admin/pool/dhcpd.conf se nachází "Amino Communications Sample dhcpd.conf file" Tento lze upravit a použít pokud by mi dhcp server jel na linuxu. Provozuji jej však na windows server.

Do boxu amino se lze přihlásit telnetem, heslo zde uvádět nebudu, je však několikrát publikováno třeba na stránkách http://forum.videolan.org/

nechal jsem si vypsat běžící procesy ps -ax a ten co mne zajímal byl "dhcpcd eth0 -S -t 15 -i Aminoaminet130fisys -p aminet"

Takže jsem spustil konzolu dhcp serveru, pravým tlačítkem na názvu běžícího serveru jsem zvolil Define Vendor Classes, Add,
display name a decription lze zadat libovolné, ale je potřeba zadat do ASCII řetězec "Aminoaminet130fisys" (bez uvozovek)

Další je potřeba zadat pravým tlačítkem na názvu běžícího serveru - Set Predefined Options, option class zvolit název zadaný v minulém kroku v "display name", add, do "name" napsat "homepage" (bez uvozovek), "Data Type" - string, "Code" 8, OK, Následně vyplnit požadovanou výchozí stránku, tedy http://....

Potom stačí už jen pravým tlačítkem na úrovni "Server Options", "Configure Options", karta "Advanced", vybrat "Vendor Class" odpovídající výše zvolenému "DisplayName", "User class" nechat na "Default user class" a v "Available Options" zaškrtnout "008 homepage", případně ještě změnit adresu výchozí stránky.

Pak jsem jen restartoval DHCP, zapnul napájení Amino a to mi okamžitě nabíhalo na požadované stránce.

Příklad takové stránky je třeba na http://www.lica.cz/admin/pool/JavaScr_ChannelMap.zip.zip , část kompletní dokumentace má název "JMACX: Javascript Media Access Control Extensions API specification", má 180 stran, měla by být dostupná po vyplnění a odeslání NDA na stránkách výrobce http://aminocom.com/ , pokud by se mnou výrobce nekomunikoval a já si chtěl trochu procvičit ruštinu tak bych tento confidental manuál našel v anglickém originále ve formátu pdf na http://www.adslclub.ru/

Protože nepotřebuji měnit firmware ani programovat vniřní aplikace pro tento set-top-box tak jsem naprosto spokojený s tím co se dá dosáhnout pomocí dhcp, webu a javascriptu.

Strávil jsem celou noc pokusy o zprovoznění volume a mute na dálkovém ovládání k Amino. Originální příručka přibalená v krabici k aminu popisuje úplně jiný typ. Můj ovladač má označení 510-809 V01-01 TZ-RC43B-32.

Naprogramování televize se uskuteční současným podržením TV a OK, zhruba po 2s se rozsvítí TV, stačí zadat trojmístný brand code přístroje, TV zhasne, a používat.

V módu STB mi amino přijímalo všechny kódy kláves mimo volume +- a mute. Zjistil jsem že je vždy posílá v IR kódu televize (nezáleží na tom zda jsem přepnut v módu STB nebo TV).

Volume přímo v Aminu jsem dokázal ovládat přes javascriptové eventy jinými klávesami, ale s tím jsem nebyl spokojený - přeci jenom by pro to měly být používána odpovídající tlačítka. Opět pomohly ruské stránky, tentokrát http://www.streamclub.ru/ kde jsem nalezl pdf dokument s názvem "aminet_110_remote_controls_configuration_guide" ve kterém jsem se dozvěděl že existují evropské a americké verze ovladačů, uživatelské ovladače a popis jejich rozdílů. A také že se na některých typech dají programovat uživatelská makra. Tak jsem si řekl že udělám nějaký pokus tímto směrem.

Aby fungovalo řízení hlasitosti přímo na aminu jsem nakonec dosáhl následujícím způsobem (popis jen pro VOL+, ostatni analogicky):

Varianta 1. - smazat předdefinované makra

1. podržet současně tlačítka STB a TV - až se obě rozsvítí
2. stisknout STB - toto problikne a svítí obě dál
3. stisknout VOL+
4. stisknout a držet současně STB a TV než obě zhasnou

Varianta 2 - nastavit 4násobné opakování

1. podržet současně tlačítka STB a TV - až se obě rozsvítí
2. stisknout STB - toto problikne a svítí obě dál
3. stisknout VOL+
4. stisknout STB
5. stisknout VOL+
4. stisknout STB
5. stisknout VOL+
4. stisknout STB
5. stisknout VOL+
4. stisknout STB
5. stisknout VOL+
6. stisknout STB
6. stisknout TV
7. stisknout a držet současně STB a TV než obě zhasnou

Problémy:
amino s operou s volume počítá, ale nechytá repeat, proto lepší varianta 2 - krokovat ručně po čtyřkrocích - takže částečně funkční ale ne ideální
amino s fresco - ant s volume nepočítá, skáče mi na homepage, budu muset použít zpracování pomocí javascriptu.

Pro další pokusy použiji variantu 1, prochází mi keycode do amina, nebudu spoléhat na výchozí reakci STB - liší se podle obsaženého SW a raději reakci zpracuji javasriptem.


-------------------------

pod čarou

rozcestník: http://www.xmltv.org/wiki/xmltvrelatedprojects.html

http://www.birtles.org.uk/xmltv/

útržek toho co jsem zveřejnil na mach4.cz

V linuxu mám současně nainstalované 3ks Airstar2 a 1ks Skystar2, v PCI slotech které nesdílejí přerušení (dá se najít v manuálu desky) a jedou bez problémů pokud nerestartuji počítač - pak mi občas nastane že se karty nadetekují v jiném pořadí a je potřeba upravit ručně konfigurák a streamuje se dál. Nastávalo by to i v případě použití různých typů DVB karet (způsobené náhodnou dobou odezvy karty na inicializaci frontendu) kde by se to dalo řešit jednoduše zakázáním příslušných modulů ovladačů a následné jejich startování pomocí modprobe v přesně definovaném pořadí skriptem. Vzhledem k tomu že počítač běžně nevypínám tak tento problém řešit zatím nepotřebuji.Ubuntu-server 8.04 bez problémů.

 

----------------------- poznamky pod carou
apt-get dvb-utils

cat /proc/mdstat
modprobe stb6100 stb0899 saa7146 lnbp21
modprobe budget-core budget-ci

a tohle se mi bude asi taky hodit: http://wiki.siliconhill.cz/DVB_Howto