Systém pro °ízení sb¥ru a záznamu videosignálu ²í
Transkript
Systém pro °ízení sb¥ru a záznamu videosignálu ²í
eské vysoké u£ení technické v Praze Fakulta elektrotechnická ČVUT FEL katedra počı́tačů Diplomová práce Systém pro °ízení sb¥ru a záznamu videosignálu ²í°eného po Internetu DVBgrab Martin Jansa Vedoucí práce: Ing. Ivan Hala²ka Studijní program: Informatika a výpo£etní technika leden 2007 ii Pod¥kování D¥kuji tv·rc·m p·vodního projektu TVgrab a obecn¥ v²em vývojá°·m svobodného software, díky kterým tento projekt mohl v·bec vzniknout. Dále d¥kuji Katarín¥ Hanuliakové za pomoc s grackou úpravou aplikace a slovenský p°eklad, Zuzan¥ Moravcové za p°eklad do francouz²tiny a Iv¥ Höerové za jazykovou korekturu tohoto textu. iii iv Prohlá²ení Prohla²uji, ºe jsem svou diplomovou práci vypracoval samostatn¥ a pouºil jsem pouze podklady uvedené v p°iloºeném seznamu. Nemám závaºný d·vod proti uºití tohoto ²kolního díla ve smyslu 60 Zákona £. 121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o zm¥n¥ n¥kterých zákon· (autorský zákon). V Praze 6 dne 7. 1. 2007 ............................................................. v vi Abstract The system is intended for easy recording of television shows. Data are taken from local network stream (ie. DVB-T from VideoLanServer). User has to register on the web interface and after login he can see television schedule for next week. Every program is shown as hypertext link and after the conrmation the request for program is saved in a database. There is a neverending loop on the server backend which is searching requests in a database and if any requested program starts, it runs dumping packets from data stream to disk. After nishing it sends an e-mail with hypertext link to requesting users. Abstrakt Systém byl vytvo°en za ú£elem usnadn¥ní záznamu televizních po°ad·, které jsou vysílány po lokální síti (nap°íklad pomocí VideoLanServeru z DVB-T vysílání). Uºivatel se zaregistruje na webovém rozhraní a po p°ihlá²ení si zobrazí televizní program na p°ibliºn¥ týden dop°edu. Vybráním po°adu se jeho objednávka zaznamená v databázi. Na serveru b¥ºí nekone£ná smy£ka, která sleduje, zda v databázi není poºadavek na po°ad, který práv¥ za£íná. P°i nálezu za£ne ukládat data z vysílání a po dokon£ení po²le odkaz na staºení v²em uºivatel·m, kte°í daný po°ad poºadovali. vii viii Obsah Diplomová práce i Seznam obrázk· xiii Seznam tabulek xv 1 Co od systému o£ekáváme 1 1.1 Z pohledu uºivatele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 Z pohledu správce 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Popis systému 2 2.1 Vlastnosti DVBgrabu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.2 Servery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.3 Databáze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.4 Webové stránky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.5 Záznam 4 2.6 Specika ukládání z digitálního vysílání 2.7 2.8 2.9 Uve°ejn¥ní nahrávky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Komprimace záznam· . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Komprima£ní formáty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.9.1 Popisný XML soubor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.9.2 Vytvo°ení symbolického odkazu . . . . . . . . . . . . . . . . . . . . . . . . 7 2.9.3 Kontrola a p°ípadné zaloºení uºivatelského adresá°e . . . . . . . . . . . . . 7 2.9.4 Odeslání e-mailu a ozna£ení v databázi . . . . . . . . . . . . . . . . . . . . 7 2.10 Distribuce záznam· . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.11 Získávání aktuálního televizního programu pro web . . . . . . . . . . . . . . . . . 8 2.12 Právní aspekty získávání televizního programu z ve°ejn¥ dostupných webových stránek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Vysílání do po£íta£ové sít¥ 8 10 3.1 Digitální vysílání v eské republice . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.2 Varianty digitálního vysílání . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.3 Programy na vysílání . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.4 Pot°ebný hardware a ovlada£e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.5 Získání seznamu dostupných kanál· . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.6 Metody vysílání . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.6.1 Unicast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.6.2 Multicast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.6.3 Broadcast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.7 Seznam kanál· pro uºivatele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.8 VideoLAN Server nebo VideoLAN Client? . . . . . . . . . . . . . . . . . . . . . . 15 3.9 Popis VideoLAN Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.9.1 Zdroje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.9.2 Výstupy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.10 Kongurace VideoLAN Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.11 MiniSAPserver 20 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.12 Popis VideoLAN Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 3.13 Kongurace VideoLAN Client pro pouºití na vysílání do sít¥ . . . . . . . . . . . . 21 ix 3.14 MPlayer jako p°ehráva£ vysílané televize . . . . . . . . . . . . . . . . . . . . . . . 4 P°íjem multicastového vysílání z vn¥j²í sít¥ 23 24 4.1 pimd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 4.2 mrouted . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 5 Testování 25 5.1 P°ipomínky a reakce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 5.2 Vyhodnocení implementovaných p°ipomínek anketa . . . . . . . . . . . . . . . . 26 5.3 Vyhodnocení ankety . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 5.4 Záv¥r z testování . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 6 Záv¥r 29 7 Literatura 31 A Instalace a údrºba 33 A.1 Frontend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 A.2 Backend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 A.3 Pot°ebné knihovny a pomocné programy . . . . . . . . . . . . . . . . . . . . . . . 34 A.3.1 Apache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 A.3.2 PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 A.3.3 php-pear-Log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 A.3.4 php-json . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 A.3.5 php-adodb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 A.3.6 XMLTV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 A.3.7 Databáze 35 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.4 Staºení DVBgrabu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 A.5 Zaloºení databáze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 A.6 Kongurace DVBgrabu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 A.7 Údrºba záznamového serveru 39 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.7.1 Mazání neaktivních uºivatel· A.7.2 Aktualizace uºivatelských ú£t· . . . . . . . . . . . . . . . . . . . . . . . . . 39 . . . . . . . . . . . . . . . . . . . . . . . . 39 A.7.3 Kontrola neznámých uºivatelských ú£t· . . . . . . . . . . . . . . . . . . . 39 A.7.4 Mazání nepot°ebných .ts soubor· . . . . . . . . . . . . . . . . . . . . . . . 40 A.7.5 Kontrola volného místa . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 A.7.6 Mazání starých dat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 A.8 Ru£ní údrºba uºivatel· . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 A.9 Údrºba backend skript· 40 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B Uºivatelská p°íru£ka B.1 43 Registrace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 B.1.1 Uºivatelské jméno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 B.1.2 Uºivatelské heslo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 B.1.3 E-mail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 B.1.4 IP adresa pro stahování . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 B.1.5 Video kodek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 B.1.6 Icq, Jabber . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 B.2 P°ihlá²ení B.3 Objednání grabu B.4 Ru²ení grabu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 x B.5 Sledování stavu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 B.6 Stahování grabu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 B.7 P°ehrávání grabu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 B.8 Zm¥ny nastavení ú£tu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 B.9 Zru²ení ú£tu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 C Snímky obrazovky 49 D Formáty pro ukládání audio-video 51 D.1 Organizace ovliv¬ující audio-video formáty sou£asnosti . . . . . . . . . . . . . . . 51 D.2 Nejznám¥j²í kontejnery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 D.3 Nejpouºívan¥j²í video kodeky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 D.4 Nejpouºívan¥j²í audio kodeky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 E Slovník pojm· 53 F Obsah p°iloºeného CD 55 xi xii Seznam obrázk· 2.1 Systém DVBgrabu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1 Vyuºití program· z projektu VideoLAN . . . . . . . . . . . . . . . . . . . . . . . 11 3.2 Tabulky tok· v MPEG-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 A.1 Komponenty DVBgrabu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 C.1 Ukázka p°ihlá²ení . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 C.2 Ukázka programu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 C.3 Ukázka seznamu grab· . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 C.4 Ukázka nastavení ú£tu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 xiii 2 xiv Seznam tabulek 3.1 Varianty DVB vysílání . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.2 Parametry vysílání pro jednotlivé multiplexy 12 xv . . . . . . . . . . . . . . . . . . . . xvi KAPITOLA 1. CO OD SYSTÉMU OEKÁVÁME 1 1 Co od systému o£ekáváme 1.1 Z pohledu uºivatele Uºivatel není nucen instalovat ºádné dodate£né programy, pouze internetovým prohlíºe£em p°istoupí na stránky aplikace a zadá, o jaké po°ady má zájem. P°ed prvním pouºitím se uºivatel na stránkách zaregistruje, £ímº je automaticky i p°ihlá²en do systému. Stránky komunikují s uºivatelem pokud moºno jeho preferovaným jazykem podle nastavení prohlíºe£e, p°ípadn¥ m·ºe zvolit jiný z nabízených. Zvolený jazyk se uchovává dlouhodob¥. Uºivatelské jméno a heslo také, takºe p°i dal²ích náv²t¥vách ze stejného po£íta£e uº je není nutné zadávat. Výb¥r po°ad· by m¥l být k dispozici minimáln¥ na týden dop°edu. V seznamu po°ad· sta£í kliknout na název po°adu a tím je poºadavek zadán. Nahraný po°ad se po uloºení je²t¥ komprimuje do uºivatelem zvoleného formátu. Po uloºení a zkomprimování je do uºivatelova adresá°e uloºen odkaz na po°ad a cemº je uºivatel informován e-mailem. Odkaz m·ºe být na protokol ftp nebo http. O hotových nahrávkách se m·ºe také informovat v rámci webového rozhraní, kde je seznam jeho nahrávek v£etn¥ odkaz· na staºení, objednaných nahrávek a hotových nahrávek v²ech uºivatel·. Uºivatel má moºnost m¥nit n¥které parametry svého ú£tu, nechat si zaslat nov¥ vygenerované heslo a také úpln¥ zru²it ú£et. 1.2 Z pohledu správce Pot°ebujeme p°ehlednou a automatickou správu uºivatel·. Pot°ebujeme, aby systém korektn¥ reagoval na výpadky spojení s databází nebo na nedostatek diskového prostoru. Pro moºnost pouºití i mimo eskou republiku je t°eba pouºít ve webovém rozhraní kódování podporující více národních abeced (UTF-8) a podle toho také zajistit správné kódování znak· u dat p°icházejících z databáze p°es ADOdb (knihovna pro abstraktní p°ístup k databázovém serveru). Televizní program je nutné na£ítat v n¥jakém srozumitelném, dob°e denovaném a mezinárodn¥ uznávaném formátu jako je XMLTV viz. [7]. To zna£n¥ usnad¬uje instalaci v zahrani£í, kde je obvykle dostatek zdroj· programu v XMLTV. P°idávání nových kanál· musí být co nejsnadn¥j²í a nesmí vyºadovat hlub²í znalosti systému. 2 KAPITOLA 2. POPIS SYSTÉMU 2 Popis systému Systém slouºí pro záznam televizních po°adu (VDR Video Disk Recorder). Je navrºen pro prost°edí GNU/Linux. Skládá se z webového rozhraní pro uºivatele a ze sady skript·, které zaji²´ují nahrávání a komprimaci. Je zaloºen na star²ím projektu TVgrab, který implementoval nahrávání z klasického analogového signálu a jedinou podporovanou databází byla MySQL. Tento systém byl upraven pro nahrávání z libovolného zdroje ²í°eného v lokální síti a ve²keré databázové funkce jsou nyní volány p°es ADOdb. Obrázek 2.1: Systém DVBgrabu Pro funkci systému pot°ebujeme audio-video signál p°ená²ený po lokální síti, zdroj televizního programu pro v²echny nahrávané TV kanály. Uºivatel poté objednává nahrávku (grab) pouhým kliknutím na název po°adu. Hotová nahrávka se komprimuje do uºivatelem preferovaného formátu a výsledek je poté p°ipraven ke staºení. O dostupnosti nové nahrávky je uºivatel, který si ji objednal, informován e-mailem. KAPITOLA 2. POPIS SYSTÉMU 2.1 • • • • • 3 Vlastnosti DVBgrabu Podpora distribuce nahrávek také p°es HTTP server apache Webové kongura£ní rozhraní setup.php Sjednocená a centralizovaná kongurace v jednom souboru cong.php Moºnost volby preferovaného formátu hotové nahrávky (MPEG-2, MPEG-4, ...) Moºnost nahrávat z n¥kolika kanál· paraleln¥, odpadá pot°eba volit, který z analogových kanál· bude nalad¥n v dob¥ záznamu • • • • • • • • • • • • Záznamové skripty pracující s libovolným audio-video signálem ²í°eným po lokální síti Vyuºití ADOdb pro abstraktní p°ístup k tém¥° libovolnému databázovému stroji Seznam hotových nahrávek ve webovém rozhraní obsahuje i odkazy na staºení Objednávání nahrávek p°ímo z vyhledávacího formulá°e Moºnost dodate£ných zm¥n nastavení uºivatelského ú£tu, p°ípadn¥ zru²ení ú£tu Zasílání nového hesla p°i zapomenutí starého Kompletní vícejazy£ná podpora K dispozici krom¥ £e²tiny je také angli£tina, francouz²tina a sloven²tina Automatický výb¥r pouºitého jazyku ve webovém rozhraní Podpora na£ítání TV programu ve formátu XMLTV Automatická údrºba záznamového serveru Podpora zobrazování detailních záznam· aº p°i poºadavku pomocí asynchronních XMLHTTP poºadavk· • Detailní informace o po°adu k dispozici spole£n¥ s nahrávkou ve formátu XML s p°ipojenou XSL transformací. 2.2 Servery Systém vyuºívá ke svému b¥hu 2 r·zné servery, i kdyº to není nutností. Na jednom b¥ºí databáze a webové rozhraní. Na druhém potom vysílání signálu do lokální sít¥, záznam na disk a distribuce nahraných po°ad·. 2.3 Databáze Jako databázový server lze pouºít tém¥° libovolnou SQL databázi, protoºe systém vyuºívá knihovnu ADOdb, která podporuje v sou£asné dob¥ zhruba 15 r·zných databázových stroj·. Systém byl provozován na MySQL databázi, nyní na PostgreSQL. Kv·li pouºití ADOdb je nutné vºdy volat SQL kód jen s pouºitím ADOdb funkcí, nap°íklad pro formátování datumu v SQL dotazech musí být vºdy volána odpovídající ADOdb funkce, která vygeneruje funkci odpovídající aktuáln¥ pouºitému databázovému serveru. 2.4 Webové stránky Webové prost°edí je napsáno pomocí XHTML+PHP+JavaScript. Obsahuje jak uºivatelské tak administrativní rozhraní p°eváºn¥ pro prvotní nastavení a p°ípadné zm¥ny v konguraci. Je napsáno s podporou více jazykových variant (£e²tina, sloven²tina, angli£tina, francouz²tina). V²echny zobrazované texty jsou denovány jako konstanty v souborech lang/lang.jazyk.php. 4 KAPITOLA 2. POPIS SYSTÉMU Jazyk se volí postupn¥ podle t¥chto pravidel: • • • • podle cookie, pokud uºivatel n¥kdy p°epnul jazyk ru£n¥ kliknutím na ikonu vlajky podle preferovaných jazyk· v nastavení prohlíºe£e v databázi hledáme poslední pouºitý jazyk daného uºivatele výchozí jazyk denovaný v globální konguraci Nakonec se zvolený jazyk uloºí do databáze k uºivateli jako poslední pouºitý jazyk. To se vyuºívá nap°íklad p°i odesílání e-mailu o úsp¥²ném nahrání, kdy nemáme jiº k dispozici uºivatele, jeho cookies ani jeho prohlíºe£. Z d·vodu vícejazy£ného webového rozhraní je t°eba zajistit také kódování v databázi nastavené na UTF-8, aby podporovala v²echny p°ípustné varianty. 2.5 Záznam O nahrávání se starají 2 nekone£né smy£ky naprogramované také v PHP. Jedna se stará o záznam (grab_loop), druhá o komprimaci (encode_loop). Záznamová smy£ka se spou²tí po startu systému a v krátkych £asových intervalech kontroluje, zda na n¥kterém kanálu neza£íná n¥jaký objednaný po°ad. Pokud ano, spustí na pozadí nový proces, který zajistí záznam tohoto po°adu (grab_process, kterému se p°edává pouze ID záznamu v databázi) a sama pokra£uje dál ve své £innosti. Komprima£ní smy£ka je odli²ná, spou²tí se sice také po startu systému, ale protoºe nemá smysl pou²t¥t paraleln¥ p°íli² mnoho komprima£ních proces·, tak vºdy kontroluje, zda existuje v databázi n¥jaký nevy°ízený poºadavek na formát, do kterého se zrovna nic nekomprimuje. Pokud ano, vybere nejstar²í podle data vysílání po°adu a spustí nový proces (encode_process, kterému p°edává ID poºadavku a formát, jaký se má pouºít). To znamená, ºe kolik r·zných formát· si uloºíme do databázové tabulky encoder, tolik komprima£ních proces· m·ºe b¥ºet paraleln¥. Vlastní záznam na disk je provád¥n pomocí programu dumprtp, z balíku dvbstream, který ukládá datový tok ze zadané IP adresy a portu do souboru. V záznamovém procesu se nejd°íve v²echny poºadavky na daný po°ad p°epnou ze stavu naplánován do stavu ukládá se. Poté je dumprtp spou²t¥n jako volání podprocesu na pozadí a poté je po£ítán £as aº do konce po°adu, kdy se po²le procesu dumprtp signál TERM k ukon£ení. Data se p°i ukládání netransformují, takºe z·stanou uloºena jako MPEG-TS (transport stream). To umoº¬uje paralelní zápis n¥kolika po°ad· na disk, protoºe je to operace relativn¥ nenáro£ná. Transport stream je optimalizovaný spí²e pro p°enos audio-video signál·, neº pro jejich p°ehrávání (neobsahuje p°íli² £asto klí£ové snímky, takºe nap°íklad p°i posunech je dlouhá odezva neº se obnoví obraz). Z jaké IP adresy a portu se má ukládat, je nyní ur£eno v databázi v denici televizního kanálu. Jmenné konvence pro název nahrávky jsou DVB- jako p°edpona, pak datum ve formátu YmdHi (rok, m¥síc, den, hodiny, minuty) tak, aby se adresá° s nahrávkami dal °adit chronologicky podle abecedy. Dále následuje jméno kanálu (po odstran¥ní diakritiky) a název po°adu, bu¤ po odstran¥ní diakritiky nebo jenom ID záznamu, pokud to je v konguraci nastaveno (p°esné jméno po°adu v£etn¥ diakritiky je pak aº v popisném XML souboru, viz dále. Nekomprimované nahrávky mají p°íponu .ts jako transport stream. KAPITOLA 2. POPIS SYSTÉMU 5 Po ukon£ení dumprtp smy£ka je²t¥ zkontroluje, zda má nahrávka n¥jakou odpovídající nenulovou velikost a informace o uloºení se aktualizuje v databázi (v²echny poºadavky na tento po°ad p°ejdou ze stavu ukládá se do stavu uloºen. 2.6 Specika ukládání z digitálního vysílání Sou£ástí DVB vysílání jsou i informace o vysílaných po°adech. Tyto informace jsou vysílány jako sou£ást MPEG-2 dat pomocí protokolu PMCP (Programming Metadata Communication Protocol), coº jsou do XML balené data z PSIP (Program and System Information Protocol). Sou£ástí PSIP jsou následující tabulky: • • • • • • • • STT (system time table) aktuální £as vysílaný kaºdou sekundu MGT (master guide table) datové ukazatale do dal²ích tabulek PSIP VCT (virtual channel table) seznam kanál· a p°i°azení jejich £ísel RRT (rating region table) hodnocení obsahu pro jednotlivé regiony EIT (event information table) názvy a dal²í data pro televizní program ETT (extended text table) detailní popis program· DCCT (directed channel change table) DCCST (directed channel change selection code table) Tabulky EIT a ETT pouºívá v MHP (Multimedia Home Platform aplika£ní roz²í°ení v DVB) aplikace EPG (Electronic program guide elektronický televizní program). Tyto informace by bylo velmi výhodné pouºít pro p°esné nastavení za£átku a konce záznamu. Pokud toto nemáme k dispozici, musí nahrávání za£ínat n¥kolik minut p°ed plánovaným za£átkem po°adu (lze kongurovat kolik) a také lze nastavit, kolik minut se má nahrávat po plánovaném konci po°adu. Pokud bychom cht¥li vyuºít informace z EIT p°ímo v DVBgrabu, tak bychom museli nejd°íve zajistit jejich distribuci z vysílajícího serveru do lokální sít¥. Podle zástupc· Czech Digital Group jsou prý tyto údaje jiº dostupné. Pokud jim televize údaje dodá, tak je pouze p°evedou do formátu vhodného pro EIT a vloºí do toku dat. Pokud by v EIT byly obsaºeny i zna£ky za£átku a konce televizní reklamy, tak by ²lo podle nich vypínat a zapínat záznam, a tím tedy zajistit automatické vyst°ihování reklamy. P°ípadn¥ by bylo moºné naprogramovat n¥jaký vlastní algoritmus pro poznávání reklamy (t°eba podle podobnosti s dodanou po£áte£ní a koncovou zn¥lkou). Tento algoritmus by byl pravd¥podobn¥ dosti hardwarov¥ náro£ný, coº by p°i n¥kolika paralelních záznamech mohlo vést aº ke ztrátám snímku, proto nebyl pouºit. Tyto algoritmy také nemusí být v souladu se zákonem (automatický systém na vyst°ihování reklamy byl sou£ástí software DVD rekordér· KISS a musel být odstran¥n a z·stalo pouze automatické p°etá£ení reklamy p°i sledování ze záznamu). 6 KAPITOLA 2. POPIS SYSTÉMU 2.7 Komprimace záznam· Komprima£ní smy£ka postupn¥ prochází p°es v²echny formáty (encodery) a zkoumá, zda pro ty, které aktuáln¥ neb¥ºí (nemají v databázi uloºené své £íslo procesu PID, pokud je uloºeno, tak se testuje, zda doopravdy b¥ºí), neexistuje n¥jaký £ekající poºadavek ve stavu uloºen. Pokud ano, vybere op¥t nejstar²í. Zaloºí na pozadí nový proces, který komprimaci zajistí. Komprima£ní proces nejd°íve op¥t zm¥ní stav poºadavku v databázi z uloºen na komprimuje se. Poté spustí skript, jehoº jméno je op¥t uvedeno v databázi a který musí být uloºen v adresá°i encoders. Tomuto skriptu p°edá název nahraného po°adu, který do databáze uloºil p°edcházející záznamový proces, a z p·vodního jména vytvo°í název cílového souboru p°ipojením denované p°ípony z databáze. Po úsp¥²né komprimaci je z .ts souboru vytvo°en nap°íklad .avi soubor ve formátu MPEG-4, poté se znovu zkontroluje, zda výsledný soubor má odpovídající velikost, a pokud ano, dojde k uve°ejn¥ní nahrávky poºadujícím uºivatel·m. 2.8 Komprima£ní formáty Komprimaci zaji²´uje program mencoder, který podporuje velmi mnoho formát·. N¥které základní jsem uvedl v p°íloze. ím více kombinací kontejner, video, audio kodek· umoºníme uºivateli zvolit, tím v¥t²í budou nároky na £as a místo na disku. Kaºdá nahrávka totiº musí být zkomprimována do v²ech uºivateli poºadovaných variant a také bude ve v²ech poºadovaných variantách uloºena na vyhrazeném diskovém prostoru. Proto je p°ipraveno pouze pár zajímavých kombinací, a to: • MPEG-2 TS formát v jakém p°ijímáme DVB signál ze sít¥, soubor bude mít p°íponu .mpg. • AVI/MPEG-4 ASP (z libavcodec)/MP3 b¥ºn¥ pouºívaný komprimovaný soubor, hodina záznamu odpovídá zhruba 700MB. Jsou p°eddenované varianty s r·zným m¥°ítkem (r·zné rozli²ení), soubor bude mít p°íponu .avi. Dále by bylo vhodné pouºít: • OGG/Theora/Vorbis svobodná obdoba p°edchozí kombinace s mírn¥ efektivn¥j²ím pom¥rem kvality a velikosti souboru, s p°íponou .ogg. • MP4/MPEG-4 AVC (z x264)/AAC nejvy²²í kvalita, pokud budeme mít dostate£n¥ kvalitní zdroj, p°ípona by byla .mp4. Tato varianta bude trvat mnohem déle, proto je vhodná jen pro výkonn¥j²í servery nebo tam, kde nevadí £asový rozdíl mezi koncem po°adu a uve°ejn¥ním grabu. 2.9 Uve°ejn¥ní nahrávky 2.9.1 Popisný XML soubor Je vytvá°en XML soubor popisující detaily nahrávky. Obsahuje název po°adu s diakritikou, název kanálu s diakritikou, za£átek a konec po°adu podle televizního programu, za£átek a konec KAPITOLA 2. POPIS SYSTÉMU 7 nahrávání, pouºitý komprima£ní formát, výslednou velikost souboru v kB a MD5 sou£et pro kontrolu bezchybného staºení. XML soubor je ve webovém prohlíºe£i zobrazován v podob¥ p°ehledné tabulky, která je z XML souboru vytvo°ena podle XSL ²ablony. Ta je v uºivatelském adresá°i vygenerována (podle jazyku, který uºivatel pouºívá na webovém rozhraní DVBgrabu) v souboru dvbgrab.xsl. Pokud uºivatel chce stejn¥ zobrazovat i staºené XML soubory, musí k nim do adresá°e zkopírovat i tento soubor. 2.9.2 Vytvo°ení symbolického odkazu Vytvo°ení symbolického odkazu z uºivatelova adresá°e do sdíleného prostoru, ve kterém jsou uloºené v²echny nahrávky (jak na nahrávku, tak na odpovídající XML soubor). 2.9.3 Kontrola a p°ípadné zaloºení uºivatelského adresá°e B¥hem vytvá°ení symbolických odkaz· dojde také ke kontrole, zda je uºivatelský adresá° jiº zaloºen a p°ípadn¥ také k p°egenerování souboru .htaccess, který ur£uje ze kterých IP adres smí uºivatel své nahrávky stahovat (tato IP adresa je vºdy pouze jedna a je uloºena v databázi u informací o uºivateli). Uºivatel má moºnost p°es webové rozhraní zadat její zm¥nu, proto musí docházet k p°egenerování t¥chto .htaccess soubor·. Druhá varianta je p°egenerování souboru pouze pokud n¥jaká zm¥na skute£n¥ nastala, coº rozhoduje údrºbový skript pou²t¥ný pomocí plánova£e cron. Oba p°ístupy mají své výhody, ale i nevýhody. První je nevýhodný nap°íklad pro uºivatele, který p°i pokusu o staºení nahrávky zjistí, ºe má zaregistrovanou neaktuální IP a dal²í nahrávku zatím neplánuje. Druhý naopak nepot¥²í uºivatele, který ráno zadá zm¥nu IP, v poledne se mu uloºí nahrávka a aº do p·lnoci nejde stáhnout, kdyº se údrºbové skripty budou pou²t¥t jen 1x denn¥ o p·lnoci. e²ením je bu¤ dostate£n¥ £asté pou²t¥ní údrºby nebo kombinace obou p°ístup·. Výchozí nastavení generuje .htaccess soubory v obou p°ípadech. 2.9.4 Odeslání e-mailu a ozna£ení v databázi Odeslání informa£ního e-mailu v²em uºivatel·m, kte°í tuto nahrávku v tomto formátu poºadovali. U v²ech uºivatelských poºadavk· je v databázi nastaveno jméno souboru s nahrávkou, jak bude p°ístupná p°es http server, coº je pak pouºito pro generování odkaz· na staºení v sekci moje graby. 2.10 Distribuce záznam· Distribuce nahrávek mezi uºivatele je zaji²t¥na p°es http server apache (nyní ve verzi 2.2.x, která jiº nemá problémy se soubory v¥t²ími neº 2GB). Alternativn¥ lze pouºít i n¥jaký ftp server, který umí autentikovat uºivatele nejlépe proti pouºité databázi. Pokud pot°ebujeme generovat uºivatelské ú£ty pro ftp server, máme k dispozici pouze uºivatelská jména a md5 sou£ty jejich hesel (musíme £íst i md5 hesel z externí autoriza£ní databáze). 8 2.11 KAPITOLA 2. POPIS SYSTÉMU Získávání aktuálního televizního programu pro web Stahování aktuálního TV programu je zaji²t¥no p°es r·zné moduly. V adresá°i tvgrabbers jsou jednotlivé php skripty. V distribuci je skript tv_grab_novinky_cz/tv_grab_novinky_cz.php, který na£ítá data ze serveru novinky.cz. Staºený html kód je zpracován pomocí regulárních výraz· a jednotlivé po°ady jsou uloºeny do databáze. Tento skript umí pouze n¥kolik program· (T1, T2, Nova, Prima), pro na£ítání jiných je nutné skript editovat. XMLTV dal²ím skriptem v distribuci je xmltv_to_db.php, který lze pouºít pro vkládání XML souboru ve formátu XMLTV do databázové tabulky television. Nejd°íve se podíváme, co je to XMLTV. XMLTV je specikace, jak zapisovat televizní program do XML soubor·. Tuto specikaci vyuºívá velmi mnoho program· viz. [7]. Na stránkách XMLTV lze stáhnout téº instala£ní balík, který obsahuje stahovací skripty pro pom¥rn¥ mnoho zemí. Bohuºel není obsaºen skript po eskou republiku z d·vodu, který uvedu v následující sekci. Kaºdý stahovací skript musí být p°ed prvním pouºitím spu²t¥n v kongura£ním °eºimu (nap°. pro skript tv_grab_cz takto tv_grab_cz -conf ). Kongurace se obvykle skládá z n¥kolika obecných dotaz·. Dále se vypisuje seznam televizních kanál·, které umí stahovat, a pro kaºdý kanál uºivatel volí, zda se má stahovat, £i ne. Poté sta£í spustit skript s parametrem udávajícím na kolik dn· dop°edu má stahovat, p°ípadn¥ od kolikáteho dne za£ít (tv_grab_cz days 10, stáhne na 10 dní dop°edu pro v²echny povolené kanály jejich program). Výstupem skriptu je správn¥ formátovaný soubor XML, který je²t¥ pot°ebujeme transformovat do databáze. Protoºe se nám hodí i koncové £asy po°ad·, pom·ºe nám pomocný skript z balíku XMLTV tv_sort, který nejen chronologicky se°adí po°ady v rámci kanálu, ale také kaºdý po°ad doplní koncovým £asem (podle po£áte£ního £asu chronologicky následujícího po°adu). Bohuºel tohle selhává u posledních po°ad· v rámci dne, kdy následujícím po°adem je aº první ranní po°ad dal²ího dne. Tyto situace se snaºí detekovat systém aº p°i vytvá°ení poºadavku na nahrání a pokud po°ad za£íná mezi 1. a 5. hodinou ranní a trvá déle neº 4 hodiny, tak se koncový £as nastaví jen na £as po£áte£ní + denovaná konstanta (výchozí hodnota je +2 hodiny). Pokud koncové £asy nemáme v databázi v·bec (nap°. po pouºití modulu tv_grab_novinky_cz.php), tak se koncový £as ur£uje také p°i vytvá°ení poºadavku na nahrání. Takto p°edzpracovaný program jiº m·ºeme zpracovávat pomocí skriptu xmltv_to_db.php. Ten sloºí pro kaºdý element <programme> 2 SELECT dotazy, INSERT pro vloºení a UPDATE pro aktualizaci. První dotaz zjistí, zda v danou dobu na daném kanálu jiº existuje v databázi po°ad se stejným jménem, a pokud ano, element je ignorován. Jinak se provede druhý dotaz, který zji²´uje, zda neexistuje v tu dobu po°ad s jiným jménem. Pokud ano, pouºije se vygenerovaný UPDATE, pokud ne, pouºije se INSERT. Pokud se ve vstupním souboru objeví nap°íklad po°ad na kanálu, jehoº xmltv id nemáme v databázi DVBgrabu registrováno, vypí²e se varování a po°ad se také nevkládá. 2.12 Právní aspekty získávání televizního programu z ve°ejn¥ dostupných webových stránek V zahrani£í je b¥ºné, ºe dostupnost XMLTV formátu programu je £áste£n¥ podporovaná i státem. U nás tomu bohuºel tak není a kv·li tomu v XMLTV distribuci stahovací skript pro eskou KAPITOLA 2. POPIS SYSTÉMU 9 republiku v dohledné dob¥ asi nenajdeme. Dokonce tam jistou dobu byl jiº i obsaºen. Bohuºel rma provozující servery, které slouºily jako zdroj programu pro jinou rmu, která zaji²´ovala transformaci z HTML formátu do XMLTV, nebyla této aktivit¥ p°ízniv¥ naklon¥na, a tak byl projekt £eského XMLTV pod hrozbou ºaloby zastaven. Bohuºel i mn¥ jako tv·rci DVBgrabu byla zaslána ºádost o urychlené odstran¥ní na£ítání televizního programu ze stránek http://www.ceskenoviny.cz, jejichº provozovatelem je eská tisková kancelá° (TK), jinak by záleºitost °e²ilo právní odd¥lení TK. Proto nová verze DVBgrabu bude distribuována bez £eského XMLTV modulu. Správce systému je pak nucen pouºít skript tv_grab_novinky_cz.php (za p°edpokladu, ºe snad p°átel²t¥j²í provozovatel http://www.seznam.cz nep°ijde s ºádostí o odstran¥ní) a nebo si zajistit xmltv zdroj svépomocí. Doufejme, ºe si n¥který portál nabízející online TV program v HTML podob¥ co nejd°íve v²imne na trhu tohoto nedostatku a doplní své portfolio sluºeb nap°íklad o placený p°ístup k XMLTV formátu svého programu. 10 KAPITOLA 3. VYSÍLÁNÍ DO POÍTAOVÉ SÍT 3 Vysílání do po£íta£ové sít¥ Pro DVBgrab pot°ebujeme n¥jaký dostate£n¥ stabilní zdroj televizního vysílání po lokální síti. To m·ºe b¥ºet na druhém serveru, ale m·ºe být i úpln¥ nezávislé na DVBgrabu. 3.1 Digitální vysílání v eské republice V sou£asné dob¥ v eské republice vysílají DVB signál organizace Czech Digital Group a.s. (CDG), RADIOKOMUNIKACE a.s. (d°íve ESKÉ RADIOKOMUNIKACE a.s., zkracen¥ CRA) a eský Telecom a.s. (CTc). Kaºdá organizace p°edstavuje jeden multiplex, coº v DVB znamená balík televizních, rozhlasových a datových kanál·, který je vysílán v rámci jedné frekvence po celém území. Multiplex CRA je nyní zam¥°en na po°ady eské televize (T1, T2, T24, T4 Sport), dále obsahuje TV Nova a 7 radiových programu eského rozhlasu, CDG obsahuje televizi Prima, Top TV, TA3, Ó£ko, 24cz, TV NOE a radio Proglas, Evropa 2 a Classic. CTc m¥l eskou Televizi, O£ko, Novu, nyní jiº jako Telefonica O2 vysílá pouze testovací datové toky DVB-T ve formátu MPEG-4 a testují vysílání s vysokým rozli²ením HDTV. 3.2 Varianty digitálního vysílání Varianta Pouºití Video kodek Modulace DV B − T DV B − S DV B − C DV B − H pozemní MPEG-2 QFDM,QPSK,QAM+ satelitní MPEG-2 QPSK+ kabelové MPEG-2 QAM+ p°enosné za°ízení MPEG-4 AVC QFDM,QPSK,QAM+ Tabulka 3.1: Varianty DVB vysílání Variantu volíme podle dostupnosti v na²í lokalit¥, v Praze je nejsnaz²í vyuºít variantu DVB-T (pozemní). Pokrytí Prahy signálem DVB-T je velmi dobré, p°esto se mohou objevit problémy s pouºitými zesilova£i, které jsou obvykle vylad¥ny pro zesilování frekvencí b¥ºných pro analogové televizní vysílání a frekvence DVB-T (nad 500MHz) ú£inn¥ o°ezávají. Proto je v p°ípad¥ ²patného p°íjmu jako první pot°eba zkontrolovat pouºité zesilova£e. Systém, který b¥ºí na Masarykov¥ koleji VUT, pouºívá signál ze 2 DVB-T karet, jedna je nalad¥na na multiplex CDG a druhá na CRA. Grabovací systém bude samoz°ejm¥ fungovat na libovolné kombinaci digitálních, ale i jinak získaných signál·, které se dají vysílat po lokální síti. 3.3 Programy na vysílání Pro vysílání po síti se pouºívají programy z projektu VideoLAN [6]. Jejich pouºití je následující: KAPITOLA 3. VYSÍLÁNÍ DO POÍTAOVÉ SÍT 11 Obrázek 3.1: Vyuºití program· z projektu VideoLAN 3.4 Pot°ebný hardware a ovlada£e Budeme pot°ebovat n¥jaké DVB-T karty, obvykle do slotu PCI. Odzkou²ené a ov¥°ené jsou nap°íklad karty Hauppauge WinTV-NOVA-T (Technotrend Systemtechnik GmbH Technotrend-Budget, Philips Semiconductors SAA7146 rev 01). Pokud chceme paraleln¥ vysílat kanály z více r·zných multiplex·, pot°ebujeme více t¥chto karet. Kaºdá DVB-T karta má potom na svém tuneru nalad¥nu frekvenci multiplexu a paraleln¥ p°ijímá v²echny kanály tohoto multiplexu. Ovlada£e t¥chto karet jsou k dispozici na stránkách projektu linuxtv [2] a také jsou sou£ástí jádra systému °ady 2.6. V nov¥j²ích jádrech neº 2.6.9 se promítlo mnoho zm¥n v ovlada£ích, proto je pot°eba stáhnout i nov¥j²í verzi rmware karty, která se nahrává p°i na£ítání ovlada£e. Pro zprovozn¥ní vysílání je vhodné nainstalovat je²t¥ n¥kolik uºivatelských aplikací jako mediatv/linuxtv-dvb, linuxtv-dvb-apps, linuxtv-dvb-headers, libdvbpsi, dvbsnoop pro Gentoo nebo dvb-utils, dvbsnoop, dvbstream, dvbtune, libdvb-dev, libdvbpsi3, libdvbpsi3-dev pro Debian. 3.5 Získání seznamu dostupných kanál· Získání seznamu po°ad· v multiplexu popí²u jiº v této sekci, i kdyº daný postup lze zjednodu²it, pokud pouºijeme p°ímo VideoLanClient(VLC) místo sloºit¥j²í kombinace VideoLanServer(VLS)+miniSAPserver. Pro zji²t¥ní dostupných kanál· lze pouºít nap°íklad p°íkaz scan z balíku dvb-utils. Nejd°íve je t°eba p°ipravit soubor s výchozím nastavením tuneru, aby karta v¥d¥la, ve kterém multiplexu 12 KAPITOLA 3. VYSÍLÁNÍ DO POÍTAOVÉ SÍT Parametr Typ multiplexu Frekvence v Praze Multiplex A Multiplex B Multiplex C CRA CDG CTC T T T 506 000 000 674 000 000 818 000 000 í°ka pásma 8 MHz 8 MHz 8 MHz Vysílací mód 8K 8K 8K Ochranný interval 1/8 1/16 1/8 Kódový pom¥r(fec_hi) 2/3 2/3 2/3 Kódový pom¥r(fec_lo) 2/3 1/2 2/3 64 QAM 64 QAM 64 QAM 22,12 Mbit/s 23,42 Mbit/s 22,170 Mbit/s ISO 6937 ISO 6937 ISO 8859-2 ne ne ne Modulace Celková bitová rychlost Kódování £e²tiny pro EPG Hierarchický mód Tabulka 3.2: Parametry vysílání pro jednotlivé multiplexy chceme kanály vyhledávat. Výchozí nastavení pro r·zné multiplexy lze obvykle získat z www stránek provozovatele. Sou£asný stav viz tabulka 3.2. Takºe výchozí nastavení pak vypadá následovn¥ (m·ºeme zadat v²echny multiplexy najednou do jednoho souboru a n¥kdy je takový soubor jiº sou£ástí instala£ního balí£ku s programem pro skenování): # # T T T DVB-T Praha (Prague, Czech Republic) T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy 506000000 8MHz 2/3 2/3 QAM64 8k 1/8 NONE 674000000 8MHz 2/3 1/2 QAM64 8k 1/16 NONE 818000000 8MHz 2/3 1/2 QAM64 8k 1/8 NONE Výstup programu scan poté pro eské radiokomunikace (CRA) vypadá nap°. takto: CT1:506000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_2_3:QAM_64: \ TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:513:641:1 CT2:506000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_2_3:QAM_64: \ TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:514:642:2 CT24:506000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_2_3:QAM_64: \ TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:515:643:3 Nova:506000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_2_3:QAM_64: \ TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:516:644:4 Praha:506000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_2_3:QAM_64: \ TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:0:658:18 Vltava:506000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_2_3:QAM_64: \ TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:0:659:19 D-dur:506000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_2_3:QAM_64: \ TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:0:661:21 Leonardo:506000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_2_3:QAM_64: \ TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:0:662:22 Radio Cesko:506000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_2_3:QAM_64: \ TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:0:663:23 KAPITOLA 3. VYSÍLÁNÍ DO POÍTAOVÉ SÍT 13 a pro Czech Digital Group (CDG) nap°. takto: CT 1:674000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64: \ TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:2501:2502:5 CT 2:674000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64: \ TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:164:96:4 NOVA:674000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64: \ TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:205:206:3 TOP TV:674000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64: \ TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:2601:2602:2 CT24:674000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64: \ TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:1026:1027:7 CRo 2:674000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64: \ TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:0:2832:6 CRo 1:674000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64: \ TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:0:2831:9 Proglas:674000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64: \ TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:0:180:11 Evropa 2:674000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64: \ TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:0:110:19 EXPRESRADIO:674000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64: \ TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:0:120:22 CLASSIC FM:674000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64: \ TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:0:130:23 Prima:674000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_1_2:QAM_64: \ TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_16:HIERARCHY_NONE:161:84:1 MPEG-2 transport stream je balíkem elementárních kanál· (MPEG-2 ES Elementary stream) a informa£ních tabulek. Kaºdá sloºka je jednozna£n¥ ur£ena identika£ním £íslem PID (13 bitové identika£ní £íslo sloºky, unikátní v rámci multiplexu). Podle PID se ur£uje, které pakety pat°í k sob¥. • PAT Program Association Table je první informa£ní tabulkou, která je vºdy vysí- lána s PID 0x0. Obsahuje pro kaºdý kanál v multiplexu PID, kde je vysílána jeho PMT tabulka. • PMT Program Map Table je potom seznam PID jednotlivých sloºek. Kaºdý kanál má vysílánu vlastní PMT tabulku na vlastním PID. • PCR Program Clock Reference zdroj £asového signálu pro dekodér. • PIDu 0x1FFF vyhrazený pro vysílání prázdných paket·, které slouºí jenom na dopln¥ní vysílání do ur£ité velikosti, aby byla dodrºena konstantní velikost (constant bitrate). P°íkaz scan nám tedy vypsal informa£ní tabulky PAT a PMT. Kaºdý °ádek je tedy jednou tabulkou PMT. V prvním sloupci je název kanálu, následují parametry spole£né pro celý multiplex a zajímavé jsou pak poslední £íselné sloupce odd¥lené dvojte£kou. Úpln¥ poslední ur£uje PID této PMT tabulky, coº lze pouºít jako identikátor kanálu. P°edcházející £ísla jsou PID jednotlivých sloºek programu, a to v po°adí video, audio. P°ehledn¥ je to zobrazeno na následujícím obrázku 3.2, p°evzatém z [1]. 14 KAPITOLA 3. VYSÍLÁNÍ DO POÍTAOVÉ SÍT Obrázek 3.2: Tabulky tok· v MPEG-2 3.6 Metody vysílání Nyní tedy umíme zjistit dostupné kanály a jejich konguraci. P°ed volbou vysílacího serveru se je²t¥ musíme rozhodnout pro metodu vysílání. Pro provozování DVBgrabu je nejd·leºit¥j²í vysílání pomocí multicastu. Multicast je totiº nejefektivn¥j²í a díky tomu vlastn¥ jediný pouºitelný pro v¥t²í lokální sít¥. 3.6.1 Unicast • Popis vysílání pro konkrétní IP adresu • Výhody snadná kongurace pro málo uºivatel·, moºnost denovat povolené adresy • Nevýhody data se posílají tolikrát, kolik je uºivatel·, coº zna£n¥ zat¥ºuje sí´. 3.6.2 Multicast • Popis vysílání pro skupinu IP • Výhody do skupiny se klient adres m·ºe p°ihla²ovat a odhla²ovat pomocí IGMP (Internet Group Management Protocol) paket·, takºe dostává data jen z t¥ch stanic, které sleduje • Nevýhody pro funk£ní a efektivní multicast vysílání je pot°eba, aby switche podporo- valy IGMP snooping, coº je mechanismus p°eposílání packet· pouze na ty porty, ze kterých p°i²el p°ihla²ovací paket do dané skupiny. Jinak se data ²í°í v rámci switche jako broadcast. KAPITOLA 3. VYSÍLÁNÍ DO POÍTAOVÉ SÍT 15 3.6.3 Broadcast • Popis vysílání na úpln¥ v²echny IP v • Výhody snadné • Nevýhody zna£né zatíºení sít¥, data 3.7 síti dostávají v²ichni a ze v²ech stanic. Seznam kanál· pro uºivatele Kdyº máme seznam po°ad· a p°id¥líme jim adresy, na kterých je budeme vysílat, je vhodné vytvo°it také statický playlist. Ten se bude hodit uºivatel·m, kte°í nebudou pouºívat p°ehráva£ s podporou SAP playlistu. Playlist M3U je oby£ejný textový soubor obvykle s p°íponou .m3u obsahující pro kaºdý po°ad jeho název (za EXTINF) a adresu (následující °ádek), viz ukázka: #EXTM3U #EXTINF:0,CRA_CT1 rtp://@239.194.12.1 ... #EXTINF:0,CRA6_CT1 rtp://@[ff08::701] ... 3.8 VideoLAN Server nebo VideoLAN Client? Pro vysílání m·ºeme pouºít bu¤ VLS (VideoLan Server) nebo VLC (VideoLan Client). Zásadní rozdíl je ve sloºitosti kongurace a udrºovanosti projektu. VLS není jiº n¥kolik let aktivn¥ vyvíjen, VLC uº podporuje v²echny jeho funkce a nyní i mnohem více. VLS má sloºit¥jsí konguraci, kde je pot°eba denovat správn¥ seznam kanál· pro jednotlivé karty v souborech .dvbrc.N. Také neobsahuje integrovaný SAP server jako VLC. To pro nás znamená dal²í práci s kongurací SAP serveru. Vlastní kongurace v souboru vls.cfg je sice p°ehledná, ale p°esto dost náchylná k chybám p°i úpravách. Velkou výhodou VLS je jeho pouºití na serverech bez grackého prost°edí, protoºe ani jeho binární balí£ky nezávisí na ºádných grackých knihovnách. VLC má mnohem snaº²í konguraci a nepot°ebuje .dvbrc.N soubory, coº sice znamená, ºe nem·ºeme denovat pro programy symbolické názvy, ale taky to u²et°í práci s vytvá°ením t¥chto soubor·, pokud se skladba program· v multiplexu £ast¥ji m¥ní. VLC má integrovaný SAP server, takºe je v²e schováno p°ehledn¥ v jednom souboru. Nevýhoda u binárních instala£ních balí£k· se dá obejít bu¤ p°ekompilováním VLC do balí£ku bez podpory X serveru nebo nap°íklad u distribuce Gentoo záleºí pouze na správné volb¥ USE ag· p°i instalaci. 3.9 Popis VideoLAN Server Open source projekt, který umí vysílat do sít¥ mnoha r·znými zp·soby a z mnoha r·zných zdroj·. 16 KAPITOLA 3. VYSÍLÁNÍ DO POÍTAOVÉ SÍT 3.9.1 Zdroje • • • • • statické soubory na disku nebo n¥jakém médiu (ve formátu MPEG-1, MPEG-2, MPEG-4) disky DVD v DVD mechanikách digitální satelitní vysílání z DVB-S karet digitální pozemní vysílání z DVB-T karet p°ímé p°enosy z kamery nebo komprima£ní karty. 3.9.2 Výstupy • • • • na konkrétní IP adresu unicast na v²echny adresy v ur£ité síti broadcast na v²echny po£íta£e, které se p°ihlásí k odb¥ru dané skupiny multicast a to v²e jak ve variant¥ IPv4, tak v modern¥j²í IPv6. Hardwarové nároky jsou p°ibliºn¥ Pentium 100 MHz a 32MB RAM pro vysílání jednoho televizního kanálu. Pokud jsou vysílány data ze soubor· na lokálním disku, tak je v¥t²ím omezením £tecí rychlost disku a sí´ové p°ipojení. VLS lze pouºívat jak ve verzi pro MS Windows, tak pro Linux. K dispozici jsou samoz°ejm¥ i zdrojové kódy. Instala£ní binární i zdrojové balí£ky jsou ke staºení na adrese [6]. Linuxové distribuce obvykle obsahují p°edp°ipravené instala£ní balí£ky (ov¥°eno pro Gentoo a Debian). 3.10 Kongurace VideoLAN Server Tady budeme pot°ebovat znát PID tabulek PMT pro v²echny programy, coº bylo popsáno ve zvlá²tní sekci. Tyto údaje pot°ebujeme zkonvertovat do formátu kongura£ního souboru kanál· pro VLS (.dvbrc). Tyto soubory obsahují na prvních °ádcích denici multiplexu a jeho parametr· viz. tabulka 3.2. Kaºdý kanál má nastaveno jméno v parametru NAME a v SID identika£ní £íslo toku s odpovídající tabulkou PMT. Výsledek vypadá pro eské radiokomunikace (CRA) nap°íklad takto: LNB ID 1 TYPE 2 SAT ID 1 NAME "DVBT-Cra" LNBID 1 FMIN 150000000 FMAX 778000000 TRANSPONDER ID 1 SATID 1 TYPE 2 FREQ 506000000 BANDWIDTH 0 HP_RATE 2 \ LP_RATE 6 MODULATION 1 TRANSMISSION_MODE 1 GUARD_INTERVAL 2 HIERARCHY 0 CHANNEL ID 1 NAME "cra_ct1" SATID 1 TPID 1 SID 1 TYPE 0 CHANNEL ID 2 NAME "cra_ct2" SATID 1 TPID 1 SID 2 TYPE 0 CHANNEL ID 3 NAME "cra_ct24" SATID 1 TPID 1 SID 3 TYPE 0 CHANNEL ID 4 NAME "cra_nova" SATID 1 TPID 1 SID 4 TYPE 0 CHANNEL ID 5 NAME "cra_praha" SATID 1 TPID 1 SID 18 TYPE 0 CHANNEL ID 6 NAME "cra_vltava" SATID 1 TPID 1 SID 19 TYPE 0 CHANNEL ID 7 NAME "cra_ddur" SATID 1 TPID 1 SID 21 TYPE 0 CHANNEL ID 8 NAME "cra_leonardo" SATID 1 TPID 1 SID 22 TYPE 0 CHANNEL ID 9 NAME "cra_cesko" SATID 1 TPID 1 SID 23 TYPE 0 KAPITOLA 3. VYSÍLÁNÍ DO POÍTAOVÉ SÍT 17 a pro Czech Digital Group (CDG) takto: LNB ID 1 TYPE 2 SAT ID 1 NAME "DVBT-Cdg" LNBID 1 FMIN 150000000 FMAX 778000000 TRANSPONDER ID 0001 SATID 0001 TYPE 2 FREQ 674000000 BANDWIDTH 0 HP_RATE 2 \ LP_RATE 6 MODULATION 1 TRANSMISSION_MODE 1 GUARD_INTERVAL 2 HIERARCHY 0 CHANNEL ID 1 NAME "cdg_prima" SATID 1 TPID 1 SID 1 TYPE 0 CHANNEL ID 2 NAME "cdg_top" SATID 1 TPID 1 SID 2 TYPE 0 CHANNEL ID 3 NAME "cdg_nova" SATID 1 TPID 1 SID 3 TYPE 0 CHANNEL ID 4 NAME "cdg_ct2" SATID 1 TPID 1 SID 4 TYPE 0 CHANNEL ID 5 NAME "cdg_ct1" SATID 1 TPID 1 SID 5 TYPE 0 CHANNEL ID 6 NAME "cdg_cro2" SATID 1 TPID 1 SID 6 TYPE 0 CHANNEL ID 7 NAME "cdg_ct24" SATID 1 TPID 1 SID 7 TYPE 0 CHANNEL ID 8 NAME "cdg_cro1" SATID 1 TPID 1 SID 9 TYPE 0 CHANNEL ID 9 NAME "cdg_proglas" SATID 1 TPID 1 SID 11 TYPE 0 CHANNEL ID 10 NAME "cdg_e2" SATID 1 TPID 1 SID 19 TYPE 0 CHANNEL ID 11 NAME "cdg_expres" SATID 1 TPID 1 SID 22 TYPE 0 CHANNEL ID 12 NAME "cdg_classic" SATID 1 TPID 1 SID 23 TYPE 0 Tyto dva soubory pojmenujeme .dvbrc pro první DVB kartu a .dvbrc.1 pro druhou. Soubory uloºíme do domovského adresá°e uºivatele, pod kterým budeme chtít VLS spou²t¥t. Pravd¥podobn¥ vytvo°íme speciálního neprivilegovaného uºivatele, nap°. vls s domovským adresá°em /var/lib/vls. Vlastní kongura£ní soubor VLS je obvykle /etc/videolan/vls.conf. Na za£átku obsahuje spole£né nastavení, nap°. telnet rozhraní pro správu VLS po spu²t¥ní. U této £ásti budou jist¥ sta£it komentá°e psané uvnit°. # # Nastavení aplikace # BEGIN "Vls" LogFile = "/var/log/vls" ScreenLog = "disable" SystemLog = "enable" END # log soubor # logovat na obrazovku # logovat do systémového logu # # Povolené p°íkazy pro telnetové uºivatele # BEGIN "Groups" monitor = "help|browse|logout" master = "help|browse|start|resume|suspend|stop \ |shutdown|logout|config|program|input|channel|show" END # # Uºivatelé pro telnet # BEGIN "Users" monitor = "3BcKWoiQn0vi6:monitor" master = "JKg2TpPerilnw:master" END # heslo nastaveno na 'monitor' # heslo nastaveno na 'bozo' 18 KAPITOLA 3. VYSÍLÁNÍ DO POÍTAOVÉ SÍT # # Nastavení telnet rozhraní # BEGIN "Telnet" Domain = "Inet4" LocalAddress = "127.0.0.1" LocalPort = "9999" Use = "true" END # # # # Inet4 nebo Inet6 Adresa lokálního rozhraní Pouºitý port Povolit telnet Dále je obsaºena denice zdroj· dat a jejich kongurace. # # Zdroje tok· dat # BEGIN "Inputs" dvb0 = "dvb" dvb1 = "dvb" END # # Konfigurace video vstup· # BEGIN "dvb0" Frequency = "506000000" DeviceNumber = "0" SendMethod = "0" IgnoreTimeout = "1" TrickPlay = "normal" END BEGIN "dvb1" Frequency = "674000000" DeviceNumber = "1" SendMethod = "0" IgnoreTimeout = "1" TrickPlay = "normal" END # # # # Video výstup z první DVB karty, odpovídá .dvbrc souboru Video výstup z druhé DVB karty, odpovídá .dvbrc.1 souboru # # # # # # Multiplex A CRA Frekvence Za°ízení /dev/dvb/adapter<i> 0 -- Posílat v²echny toky k danému programu, 1 -- posílat jen MPEG2 data Ignorovat timeout # # # # # # Multiplex B CDG Frekvence Za°ízení /dev/dvb/adapter<i> 0 -- Posílat v²echny toky k danému programu, 1 -- posílat jen MPEG2 data Ignorovat timeout Denice distribu£ních kanál·: v sekci Channels najdeme nejd°íve seznam distribu£ních kanál· a dále pro kaºdý sekci s kongurací. Na ukázku jsou zobrazeny varianty jak pro pouºití IPv4, tak IPv6. # # Seznam distribu£ních kanál· # BEGIN "Channels" mcra_ct1 = "network" mcra6_ct1 = "network" ... KAPITOLA 3. VYSÍLÁNÍ DO POÍTAOVÉ SÍT 19 END # # Konfigurace distribu£ních kanál· # BEGIN "mcra_ct1" # Program CT1 z multiplexu CRA p°es IPv4 Type = "multicast" # Medota vysílání je multicast TTL = "1" # Dosah vysílání je pouze po nejbliº²í # router (pouze vnit°ní sí´) DstHost = "239.194.12.1" # Multicastova IP adresa, # identifikátor multicast skupiny DstPort = "1234" # Port Interface = "eth0" # P°es které sí´ové rozhraní chceme posílat data END BEGIN "mcra6_ct1" # Program CT1 z multiplexu CRA p°es IPv6 Domain = "inet6" # Typ IPv6 Type = "multicast" # Medota vysílání je multicast TTL = "1" # Dosah vysílání je pouze po nejbliº²í # router (pouze vnit°ní sí´) DstHost = "ff08::701" # Multicastova IP adresa, # identifikátor multicast skupiny # ff08 zna£í lokální multicast v ramci místní sít¥ a # 701 je identifikátor skupiny DstPort = "1234" # Port Interface = "eth0" # P°es které sí´ové rozhraní chceme posílat data END ... A nakonec je²t¥ seznam p°íkaz· pro spou²t¥ní vysílání p°i startu VLS. Parametr rtp zaji²´uje vysílání pomocí protokolu rtp, který obsahuje proti UDP navíc synchroniza£ní údaje, díky £emuº lze vysílání p°ehrávat i MPlayerem. # # P°íkazy po spu²t¥ní # BEGIN "LaunchOnStartUp" command0 = "start cra_ct1 mcra_ct1 dvb0 --rtp" # Spu²t¥ní programu T1 (v .dvbrc musí být p°esn¥ cra_ct1) ze zdroje dvb0 # p°es distribu£ní kanál mcra_ct1 command1 = "start cra_ct1 mcra6_ct1 dvb0 --rtp" # Spu²t¥ní programu T1 (v .dvbrc musí být p°esn¥ cra_ct1) ze zdroje dvb0 # p°es distribu£ní kanál mcra6_ct1 ... END VLS je skv¥lý program pro serverové pouºití, nepot°ebuje gracké knihovny, jeho kongurace je p°ehledná. Vývoj jde ale rychleji kup°edu v podobném projektu ze stejné dílny, který je zárove¬ jak klientským prohlíºe£em, tak streamovacím serverem. Tento produkt se jmenuje VideoLAN Client, který bude popsán v po následující sekci. 20 3.11 KAPITOLA 3. VYSÍLÁNÍ DO POÍTAOVÉ SÍT MiniSAPserver Op¥t open source projekt pro oznamování zm¥n ve skladb¥ vysílání pomocí protokolu SAP (Session Announcement Protocol). Uºivatelé mohou zvolit 2 p°ístupy. Bu¤ pouºijí staticky vygenerovaný soubor .m3u, který obsahuje seznam kanál·, které v síti vysíláme, ale p°i kaºdé zm¥n¥ musíme aktualizovat .m3u soubor a uºivatelé si musí stáhnout aktuální verzi. Výhodou této varianty je okamºité na£tení playlistu po startu p°ehráva£e. Druhá moºnost je pouºít práv¥ SAP protokol (jak na stran¥ serveru tak klienta). V konguraci serveru pro tento protokol je op¥t seznam kanál·, které vysíláme, ale pokaºdé, kdyº provedeme zm¥nu, tak se tato zm¥na projeví ihned i v²em uºivatel·m, kte°í mají nastaveno pouºívání playlistu získaného ze SAP protokolu. Bohuºel na£tení playlistu p°es SAP v klientu trvá i více neº 30s. SAP server periodicky vysílá aktuální playlist také pomocí multicast vysílání, podporuje jak IPv4, tak IPv6 variantu. MiniSAPserver lze provozovat pod opera£ním systémem Linux a Mac OS X. Instalace je snadná, po staºení zdrojových kód· by m¥la sta£it obvyklá sekvence ./congure && make && make install. A moºná bude k dispozici i instala£ní balík p°ímo z distribuce. Kongurace je celkem p°ímo£ará, v souboru /etc/sap.cfg má kaºdý kanál svou sekci viz. ukázka: [program] type=rtp name=CRA CT1 user=Masarka machine=zeus.mk.cvut.cz playlist_group=Masarka site=http://dvbgrab.mk.cvut.cz/stream address=239.194.12.1 port=1234 program_ttl=32 program_ipversion=4 # # # # # # # # # # # za£átek sekce protokol vysílání RTP název kanálu zobrazovaný uºivateli jméno subjektu, který kanál vysílá jméno serveru, ze kterého je kanál vysílán sloºka, do které se daný kanál za°adí stránky s informacemi o vysílání IP adresa pro p°ihlá²ení kanálu port, na který jsou posílána data TimeToLive multicast paket· pouºitá verze IP protokolu Mini SAP Server je velmi snadno pouºitelný a pro uºivatele velmi pohodlný dopln¥k vysílání. VLC má vysílání SAP informací dokonce zabudováno. 3.12 Popis VideoLAN Client Dal²í projekt s otev°eným kódem, který podporuje mnoho platforem: Linux, Windows, Mac OS X, BeOS, *BSD, Solaris, Familiar Linux, Yopy/Linupy and QNX. VLC nepracuje na Mac OS 9 a pravd¥podobn¥ ani nikdy nebude. KAPITOLA 3. VYSÍLÁNÍ DO POÍTAOVÉ SÍT 21 Umí p°ehrávat: • • • • • soubory z disk· a mechanik (formáty MPEG-1, MPEG-2, MPEG-4/DivX apod.) DVD disky VCD soubory ze satelitních/pozemních karet digitálního vysílání DVB-S/DVB-T z analogových karet p°es rozhraní v4l(video for linux) Umí také vysílat stejn¥ jako VLS. Instalace je velmi snadná. K dispozici jsou instala£ní balíky pro mnoho opera£ních systém·. Kongurace klienta obecn¥ není pot°eba. VLC je nejspolehliv¥j²ím p°ehráva£em pro p°ehrávání záznam· z DVBgrabu v prost°edí Microsoft Windows, protoºe je zaloºen na stejné implementaci kodek· FFmpeg/libavcodec jako komprima£ní nástroj mencoder. Zvý²it pohodlí m·ºe vytvo°ení zástupce/skriptu, který p°i spu²t¥ní na£te námi pouºívaný statický playlist z .m3u souboru a zapne podporu získávání playlistu ze SAP událostí. Uºivatelé si uloºí staticky playlist do svého domovského adresá°e jako .vlc.m3u a pak do denice Cíl v zástupci ve Windows resp. do n¥jakého startovacího skriptu v linuxu p°idají parametr -S sap pro podporu SAP playlistu a nakonec p°idají cestu k uloºenému souboru .m3u. VLC pak po startu hned obsahuje pouºitelný playlist ze souboru a po ur£ité prodlev¥ se doplní je²t¥ SAP playlist. C:\Program Files\VideoLAN\vlc.exe -S sap %%HOMEPATH%%/.vlc.m3u resp. /usr/bin/vlc -S sap ~/.vlc.m3u 3.13 Kongurace VideoLAN Client pro pouºití na vysílání do sít¥ Aby nám na serveru, který nemusí obsahovat v·bec gracké prost°edí, necht¥l VLC vytvá°et gracké okno aplikace, pouºíváme reºim provozu VideoLAN Manager (VLM). Ve²kerá kongurace je v jednom souboru, který uloºíme nap°íklad do /etc/videolan/vlm/vlm.cfg. # Vytvo°ení nového zdroje dat new CRA broadcast enabled # Nastavíme typ zdroje na DVB setup CRA input dvb: # Nastavení DVB parametr· viz. tabulka. setup CRA option dvb-adapter=0 setup CRA option dvb-frequency=506000000 setup CRA option dvb-bandwidth=8 setup CRA option dvb-transmission=8 setup CRA option dvb-guard=8 setup CRA option dvb-hierarchy=-1 setup CRA option dvb-modulation=64 22 KAPITOLA 3. VYSÍLÁNÍ DO POÍTAOVÉ SÍT # Chceme data nechávat v transport streamu a # posílat je po jednotlivých programech setup CRA option ts-es-id-pid # Seznam identifika£ních £ísel program·, které nás zajímají setup CRA option programs=1,2,3,4,5,10,11,12,13,14,15,16 # Nastavení výstup· # Pouºijeme modul duplicate, který z multiplexu vybere toky # odpovídající programu podle klauzule select a ty po²le i # do modulu std, který je definován v klauzuli dst # std modul nastavíme pro typ vysílání rtp, mux=ts znamená # nekonvertovat, v url je multicastová IP a port # sap zajistí vysílání SAP událostí pro daný program, # group a name pak udávají, jak se bude program # zobrazovat v klientu po povolení SAP playlistu setup CRA output #duplicate { dst=std{access=rtp,mux=ts,url=239.194.12.1:1234, \ sap,group="Masarka-CRA",name="CT1"},select="program=1" ,dst=std{access=rtp,mux=ts,url=239.194.12.2:1234, \ sap,group="Masarka-CRA",name="CT2"},select="program=2" ,dst=std{access=rtp,mux=ts,url=239.194.12.3:1234, \ sap,group="Masarka-CRA",name="CT24"},select="program=3" ,dst=std{access=rtp,mux=ts,url=239.194.12.4:1234, \ sap,group="Masarka-CRA",name="CT4"},select="program=4" ,dst=std{access=rtp,mux=ts,url=239.194.12.5:1234, \ sap,group="Masarka-CRA",name="Nova"},select="program=5" ,dst=std{access=rtp,mux=ts,url=239.194.12.6:1234, \ sap,group="Masarka-CRA",name="CRO1"},select="program=10" ,dst=std{access=rtp,mux=ts,url=239.194.12.7:1234, \ sap,group="Masarka-CRA",name="CRO2"},select="program=11" ,dst=std{access=rtp,mux=ts,url=239.194.12.8:1234, \ sap,group="Masarka-CRA",name="CRO3"},select="program=12" ,dst=std{access=rtp,mux=ts,url=239.194.12.9:1234, \ sap,group="Masarka-CRA",name="CRO4"},select="program=13" ,dst=std{access=rtp,mux=ts,url=239.194.12.10:1234, \ sap,group="Masarka-CRA",name="Ddur"},select="program=14" ,dst=std{access=rtp,mux=ts,url=239.194.12.11:1234, \ sap,group="Masarka-CRA",name="Leonardo"},select="program=15" ,dst=std{access=rtp,mux=ts,url=239.194.12.12:1234, \ sap,group="Masarka-CRA",name="Cesko"},select="program=16" } Spou²t¥ní po startu zajistíme nap°íklad p°idáním spou²t¥cího skriptu do /etc/init.d/vlm, který pouze na£te konguraci, nap°. z /etc/syscong/dvb: VLM_CONFIG_FILE=/etc/videolan/vlm/vlm.cfg VLM_LOG_FILE=/var/log/vlm.log VLM_TELNET_PORT=7777 VLM_TELNET_PASSWORD=password KAPITOLA 3. VYSÍLÁNÍ DO POÍTAOVÉ SÍT 23 Pak spustí VLC v reºimu VLM (VideoLAN Manager) pouze s telnetovým rozhraním. VLCSERVER=/usr/bin/vlc daemon --user vlc "$VLCSERVER" -d -vvv --logfile $VLM_LOG_FILE --file-logging \ --vlm-conf $VLM_CONFIG_FILE --intf telnet --telnet-port $VLM_TELNET_PORT \ --telnet-password $VLM_TELNET_PASSWORD 2> /dev/null Kontrolu, zda v²e správn¥ b¥ºí, m·ºeme provést p°ihlá²ením na telnet p°íkazu telnet server port a zadáním show. Objeví se seznam zdroj· a jejich stav. Zadáním show název, zobrazíme podrobn¥j²í údaje pro daný zdroj a pomocí control název stop ho m·ºeme nap°íklad zastavit. Nyní je, p°edpokládám, vid¥t rozdíl v jednoduchosti úprav kongurace VLS a VLC. Nap°íklad p°idání nového televizního kanálu znamená ve VLC jeden nový °ádek, ve kterém nastavíme select na zji²t¥né ID kanálu, zvolíme multicast IP adresu, skupinu a název pro SAP. Zatímco u VLS p°idání jednoho kanálu znamená p°idání °ádku do odpovídajícího .dvbrc souboru. Odte¤ si musíme pamatovat, jaký název jsme mu p°i°adili. V souboru vls.conf p°idáme nový distribu£ní kanál a zvolíme multicast adresu a port. Nyní uº si musíme pamatovat jak název kanálu v .dvbrc, tak název distribu£ního kanálu ve vls.conf a IP adresu a port. To vyuºijeme p°i p°idávání p°íkazu na spu²t¥ní vysílání nového kanálu po startu VLS. A IP adresu a port budeme je²t¥ jednou pot°ebovat p°i úprav¥ kongurace SAP serveru. Ukázka kongura£ního souboru pro VLM v£etn¥ startovacího skriptu je v instala£ním balíku DVBgrabu v podadresá°i service. • • • • vlm je startovací skript sluºby do /etc/init.d/vlm dvb je kongura£ní soubor sluºby do /etc/syscong/dvb vlm.cfg je kongura£ní soubor pro VLC, standardn¥ do /etc/videolan/vlm/vlm.cfg vlm.cfg.human.readable je stejný soubor jen dopln¥n o mezery a ukon£ení °ádk·, pro vy²²í p°ehlednost, ale POZOR, mezery a konce °ádk· musí být p°ed pouºitím odstran¥ny. 3.14 MPlayer jako p°ehráva£ vysílané televize MPlayer je dal²ím p°ehráva£em, který m·ºeme pouºít pro p°íjem vysílání z lokální sít¥. A zárove¬ je nejoblíben¥j²ím Linuxovým video p°ehráva£em. Podporuje velmi mnoho r·zných zdroj· v mnoha formátech a samoz°ejm¥ také umí p°ijímat multicastové vysílání z lokální sít¥. Jedinou podmínkou je dodrºení protokolu vysílání rtp:// místo výchozího udp://. Neumí vyuºívat playlist získávaný ze SAP protokolu, proto je pro pohodlné spou²t¥ní dobré vytvo°it spou²tecí skript nebo spou²t¥cí skripty pro kaºdý televizní kanál zvlá²´. Instalace je snadná, bu¤ pouºitím distribu£ního balíku, nebo op¥t kompilací zdrojových kód· ze stránek [3]. Kongurace pomocí spou²t¥cích skript· m·ºe vypadat nap°íklad takto: tv_nova.sh: mplayer -framedrop rtp://239.194.12.1:1234 pro p°íjem vysílání z multicastové adresy 239.194.12.1. A skript pak pojmenujeme nap°íklad tv_nova.sh. MPlayer je dobrý p°ehráva£, bohuºel nemá tak jednoduché a p°ehledné gracké prost°edí jako VLC a nepodporuje SAP playlist. 24 KAPITOLA 4. PÍJEM MULTICASTOVÉHO VYSÍLÁNÍ Z VN JÍ SÍT 4 P°íjem multicastového vysílání z vn¥j²í sít¥ Na Internetu je dostupných i mnoho dal²ích televizních kanál·, které jsou vysílány pro ve°ejnost. P°íjem je ale problematický, protoºe musí být zaru£eno sm¥rování multicastu z ve°ejného Internetu aº do na²í sít¥. Je t°eba vy°e²it kompatibilitu multicastových démon· na routerech zaloºených na Linuxu s Cisco routery tak, aby v na²í síti a v síti poskytovatele p°ipojení byla na kaºdém sousedním routeru spu²t¥na sluºba pro sm¥rování multicast dat. P°ípadn¥ lze vytvo°it tunel, kterým jsou n¥které multicastové skupiny vysílány jako klasické unicast pakety. Sm¥rování multicast paket· a správu skupin obvykle poskytuje pim démon na cisco routerech, na linuxových pak nap°íklad pimd nebo mrouted. Pro opera£ní systém Linux se nej£ast¥ji pouºívají dva multicastové sm¥rovací démony pimd a mrouted. Bohuºel se uº nevyvíjí a jejich sou£asné verze rozhodn¥ nejsou dokonalé. 4.1 pimd Poslední verze, která se pouºívá, je alpha verze z roku 1999. Podporuje sm¥rovací protokol DVMRP a MOSPF. Hodí se pro více vyuºité multicastové skupiny nebo pro sít¥ s velkým p°enosovým pásmem. Pokud jsou skupiny vyuºívané z°ídka, tak toto schéma p°estává být efektivní. Proto vznikla odnoº pim démona: PIM-SM Pim démon v sparse módu. Udrºuje tabulku odb¥ratel· a zdroj· ur£ité skupiny a podle toho vytvá°í distribu£ní stromy. Ko°en distribu£ních strom· se nazývá Rendezvous Point. Implementace pim démona s otev°eným kódem • • • • • Pimd USC site zastaralý, samostatný PIM-SM, úprava jádra systému PIM-SM GateD zastaralý, implementace od ISI PIM-DM GateD implementace z Oregonské univerzity Pimd-dense samostatná implementace z Oregonské univerzity PIM-SM implementace z XORP projektu (implementace software sm¥rova£· s otev°eným kódem). Více viz [5]. 4.2 mrouted Poslední pouºívaná verze je beta z roku 1999. Mrouted implementuje také DVMRP sm¥rovací protokol. Podporuje také tunely skrz sm¥rova£e, které nepodporují multicast. Více viz [4]. KAPITOLA 5. TESTOVÁNÍ 25 5 Testování V rámci p°edm¥tu Styk £lov¥ka s po£íta£em jsem provedl i test tohoto systému. Kdyº byl systém provozován p°ibliºn¥ rok na Masarykov¥ koleji VUT a m¥l registrováno cca 120 uºivatel·, tak jsem rozeslal v²em registrovaným neformální ºádost. ádost byla prvním krokem, cht¥l jsem získat p°ehled, jaké se vyskytují chyby a nejasnosti v uºivatelském rozhraní. Systém je koncipovaný p°eváºn¥ pro studentské prost°edí, proto nebylo do testu za°azeno více osob ani osoby, které systém nikdy nepouºily (zdrojem e-mailových adres, na které byla rozesílána ºádost, byla práv¥ databáze uºivatel· DVBgrabu. Na e-mail odpov¥d¥lo sice pouze asi 10 osob, p°esto byla nalezena n¥která vhodná vylep²ení. 5.1 P°ipomínky a reakce P°ipomínka: V²echny díly seriálu by m¥lo být moºno objednat jedním tla£ítkem. Reakce: Nyní je moºnost vyhledat v televizním programu podle názvu, takºe v²echny díly daného seriálu lze nalézt podle zadané £ásti názvu a pak objednat snadno a rychle p°ímo ze seznamu výsledk· hledání. To je univerzáln¥j²í, a navíc není pot°eba z programu detekovat, co je a co není seriál a také není t°eba zaznamenávat tyto seriálové poºadavky mimo rozsah programu, který známe p°edem. Kdyº objednám seriál, který má 4 díly v programu, který uº je na£ten, a dal²í 4 v programu, který se na£te aº p°i p°í²tí aktualizaci, tak bych musel udrºovat dal²í tabulku dlouhodobých poºadavk·. P°ipomínka: Odkazy na nahrané po°ady uve°ej¬ovat po p°ihlá²ení p°ímo na stránkách. Reakce: Odkaz se p·vodn¥ pouze odeslal po nahrání na e-maily uºivatel·, kte°í si to objednali. Pokud e-mail smaºou a odkaz si neuloºí, tak nemají moºnost se k záznamu dostat (kontrola IP adresy uºivatele a generovaná £ást názvu po°adu). Tato p°ipomínka byla nakonec implementována, protoºe zna£n¥ zjednodu²ila pouºití systému. Seznam nahraných po°ad· pro jednotlivé uºivatele jiº byl na webu k dispozici, tak byl pouze dopln¥n o odkazy na jejich staºení. Také uºivatelské adresá°e jsou nyní zakládány s volbou na generování index· (sta£í zadat správný adresá°, a pokud uºivatel má právo p°ístupu podle IP adresy, tak je mu vypsán i jeho obsah). P°ipomínka: Uºivatelé si ob£as neuv¥domují, ºe zadání správného e-mailu je podmínkou pro pouºití systému. P°i registraci zadají n¥jakou hloupost a pak marn¥ £ekají, jak se dozví o úsp¥²ném nahrání po°adu. Reakce: Tady by mohlo sta£it výrazn¥j²í varování v registra£ním formulá°i, protoºe bohuºel souhrnné informace o tom, jak to celé funguje (p·l strany textu na úvodní stránce), asi nikdo ne£etl. P°ipomínka: Jeden £lov¥k si st¥ºoval, ºe mu na webu vadí seznam nahrávek v²ech uºivatel· a p°ihlá²eného uºivatele. Prý by to m¥lo pat°it do administrativní £ásti webu. Reakce: S tím nesouhlasím, protoºe pokud n¥jaký po°ad nestihnu objednat, tak m·ºu zkon- taktovat (e-mail, icq, jabber) osobu ze seznamu, která si jej objednala a zkusit se s ní domluvit 26 KAPITOLA 5. TESTOVÁNÍ na zp°ístupn¥ní. P°ipomínka: Stejnému £lov¥ku se zdálo, ºe hlavní stránka a ²est podstránek je zahlcení uºivatele. Reakce: S tím také nesouhlasím, protoºe já jako uºivatel a spousta dal²ích tyto podstránky pouºívá, nap°íklad seznam uºivatelem nahraných po°ad· získá s dopln¥ním odkaz· na jejich staºení dal²í velký význam. Dal²í výhodou zobrazovaného seznamu je lep²í p°ehled uºivatele, protoºe po£et objednaných nahrávek za m¥síc je omezen. P°ipomínka: Lep²í vysv¥tlení, co znamená nagrabovat Reakce: a nagrabovat do TS. V úvodních informacích bylo napsáno, ºe po vybrání po°adu se objedná nahrávka s komprimací do MPEG-4. Pokud uºivatel chce provád¥t na nahrávce dal²í úpravy, je pro n¥j výhodn¥j²í nahrávku nekomprimovat a zanechat ve formátu MPEG2-TS. Protoºe není na stránce se seznamem po°ad· moc místa, tak je uveden pouze odkaz nagrabovat a po potvrzení dialogu Doopravdy chcete nahrát po°ad abc? se odkaz zm¥ní na zru²it grab a vedle se zobrazí do TS, £ímº se zru²í objednávka bu¤ úpln¥ nebo se zru²í její komprimace (vyuºitelné pro cca 5% uºivatel·). Navrhované °e²ení bylo nahradit jednoduchý potvrzovací dialog s ANO, NE kompletní novou podstránkou s formulá°em, který by zobrazoval detail zvoleného po°adu a obsahoval i popis, co je MPEG-4 a MPEG-TS a jak se o nahrání uºivatel dozví. Na formulá°i by pak mohla být tla£ítka Zru² grab, Grabuj do MPEG-4, Grabuj do MPEG-TS a Storno. Toto by sice bylo moºné, ale na p·vodním zp·sobu jsem oce¬oval rychlost pouºití. Klik na název po°adu, enter na klávesnici pro výchozí volbu ANO a uº bylo objednáno. Takhle bude velmi zdrºující £ekat neº se zobrazí formulá° se spoustou opakujících se informací (popis formát·, zp·sob doru£ení odkazu pro staºení), zvolit správné tla£ítko a po£kat na op¥tovné vykreslení celého televizního programu. Celý systém se nakonec vy°e²il volbou preferované komprese v nastavení uºivatelského prolu. Televizní program te¤ obsahuje pouze odkazy pro objednání a zru²ení. P°ipomínka: Jeden uºivatel si také st¥ºoval na nemoºnost zm¥nit si dodate£n¥ e-mail adresu. Reakce: Tato moºnost tam je schována v menu nastavení. Bohuºel m¥ nenapadá výstiºn¥j²í název pro podstránku, na níº se nastavují parametry uºivatelského ú£tu. 5.2 Vyhodnocení implementovaných p°ipomínek anketa Pro zji²t¥ní, jak uºivatelé hodnotí provedené zm¥ny a n¥které pouze navrhované, jsem op¥t rozeslal na seznam registrovaných £len· e-mail s ºádostí o vypln¥ní krátké ankety, kterou jsem za£lenil do webového rozhraní DVBgrabu. Kaºdá odpov¥d se skládala z £íselného ohodnocení 1=Rozhodn¥ ANO aº 5=Rozhodn¥ NE a textového komentá°e. V anket¥ sv·j názor vyjád°ilo p°ibliºn¥ 50 uºivatel·. KAPITOLA 5. TESTOVÁNÍ 27 Anketa dopadla takto: Otázka: Odkazy na staºení grab· budou nyní dostupné p°ímo z menu Moje graby. Je tato vlastnost pro Vás p°ínosná? Odpov¥di: V²ichni novou moºnost uvítali, pouze 2 ohodnotili spí²e ano, z toho jeden byl v¥£ným nespokojencem. Otázka: Nyní m·ºete objednávat seriály p°es vyhledání v TV programu a v seznamu výsledk· rychlým klikáním na jednotlivé díly. Cht¥li byste mít i moºnost objednat v²echny díly seriálu jedním tla£ítkem, které by ale dost problematicky poznávalo, co je a co není seriál, a také by muselo sloºit¥ °esit objednávání seriál· na dobu del²í, neº na jakou se na£ítá TV program. Pot°ebujete tuto funk£nost? Odpov¥di: Op¥t se v¥t²ina shodla na ohodnocení spí²e ne a nevím, jen v¥£ný nespokojenec by poºadoval i tuto funkci. Otázka: Je ze sou£asných text· uº z°ejmé, ºe správný e-mail je podmínkou pouºitelnosti DVBgrabu? Odpov¥di: V²ichni potvrdili, ºe situace uº je napravena. V¥£n¥ nespokojený op¥t dopl¬uje, ºe s odkazy na graby z menu je uº e-mail jenom dopl¬kovou podmínkou. Otázka: Je ze sou£asných text· uº z°ejmé, co myslím MPEG-4 a transport stream TS a co je výchozí volbou p°i grabování? Odpov¥di: Vyhodnocení je sporné, ale spí²e pozitivní reakce, sou£ástí komentá°· byly i dva pouºitelné nápady na vylep²ení. Otázka: P°íjdou Vám menu seznam mých, plánovaných, hotových grab· zbyte£ná nebo je ob£as rádi vyuºíváte? Takºe tyto menu zachovat nebo ne? Odpov¥di: V²ichni dotázaní poºadují zachování, jen v¥£n¥ nespokojený p°idává, ºe je nepo- t°ebuje. Otázka: V²imli jste si v menu volby Nastavení a hodila se Vám? Odpov¥di: Op¥t pozitivní odezva. Otázka: Chybí Vám tu n¥jaká funkce? P°ípadn¥ do komentá°e napi²te jaká. Odpov¥di: Nikdo nic nepostrádal. Otázka: Libovolný vzkaz tv·rci DVBgrabu, nám¥ty na vylep²ení atd. Odpov¥di: Pár slov chvály a n¥kolik neuskute£nitelných návrh·. 28 5.3 KAPITOLA 5. TESTOVÁNÍ Vyhodnocení ankety Uºivatelé byli dotazování na konkrétní body a konkrétní funkce, protoºe moºnost vyjád°it se k systému jako celku m¥li v prvním kole e-mail·. Také se projevil prol testované osoby v¥£ný nespokojenec, který nebyl spokojen vcelku s ni£ím, ale vzhledem k tomu, ºe svým názorem zna£n¥ vy£níval mimo pr·m¥r, mohl být jeho názor brán jako neobjektivní. 5.4 Záv¥r z testování I p°es ú£ast pouze n¥kolika málo uºivatel· se poda°ilo dát dohromady n¥kolik návrh·, které mohou daný systém zlep²it, zp°ehlednit a urychlit. I tato jednoduchá forma testování se rozhodn¥ vyplatila. Tato metoda vyºadovala minimální úsilí navíc. Také bylo objeveno n¥kolik drobných chyb v programu. Kdyby byl test proveden na r·znorodém vzorku uºivatel· (nejenom studenti technické ²koly), mohly se objevit i úpln¥ jiné problémy, ale toto jsem netestoval, protoºe v dob¥ testu jsem nehodlal uve°ejnit systém i pro jiné cílové skupiny uºivatel·. KAPITOLA 6. ZÁV R 29 6 Záv¥r Aplikace DVBgrab je v sou£asné dob¥ úsp¥²n¥ pouºívána v minimáln¥ 5 instalacích p°eváºn¥ na kolejích VUT. Za ú£elem zaji²t¥ní jejího dal²ího zlep²ování jsem ji zaregistroval na portálu opensource projekt· http://sourceforge.net, kde byla komisí p°ijata a tak je od 8. prosince 2006 dostupná její instalace ze stránek http://dvbgrab.sourceforge.net. Na servery sourceforge byl také p°esunut vývojový repozitá° pro verzovací systém subversion. V budoucnu by se dalo implementovat navrhované vyst°ihování reklamy a získávání televizního programu p°ímo z MPEG-2 signálu, místo komplikovaného na£ítání z webových zdroj·. 30 KAPITOLA 6. ZÁV R KAPITOLA 7. LITERATURA 31 7 Literatura [1] Informa£ní stránky o dvb vysílání v eské republice. [2] Stránky projektu linuxtv. http://www.digitalnitelevize.cz. http://www.linuxtv.org. [3] Stránky projektu mplayer. http://www.mplayerhq.hu. [4] Stránky projektu mrouted. http://freshmeat.net/projects/mrouted. [5] Stránky projektu pimd usc. [6] Stránky projektu videolan. [7] Stránky projektu xmltv. [8] Stránky sdruºení xiph. http://netweb.usc.edu/pim. http://www.videolan.org. http://xmltv.org/wiki/. http://www.xiph.org/. 32 KAPITOLA 7. LITERATURA DODATEK A. INSTALACE A ÚDRBA 33 A Instalace a údrºba Aplikace lze provozovat jako 2 odd¥lené celky, kterým m·ºeme °íkat frontend a backend. A.1 Frontend Je rozhraní mezi aplikací a uºivatelem, v tomto p°ípad¥ tedy webová aplikace b¥ºící na Apache serveru s PHP modulem. Na stejném serveru m·ºe b¥ºet i databáze. A.2 Backend Je ta £ást aplikace, která b¥ºí na pozadí a zaji²´uje vlastní vyhotovování nahrávek. Ze serveru, kde b¥ºí backend, se také poté distribuují výsledky. Pokud bychom nem¥li dostatek místa, je moºné aplikaci dále rozd¥lit na dal²í server, který by se staral o distribuci a nahrávky by se po uloºení ukládaly na distribu£ní server t°eba pomocí NFS sdílení. Naopak pokud budeme chtít, m·ºe b¥ºet backend na stejném serveru jako frontend. Obrázek A.1: Komponenty DVBgrabu 34 DODATEK A. A.3 INSTALACE A ÚDRBA Pot°ebné knihovny a pomocné programy A.3.1 Apache Apache jako webový server budeme pot°ebovat jak na backend tak na frontend serveru. Minimáln¥ pro backend server je dobré pouºít bu¤ verzi 1.x nebo aº 2.2, protoºe verze 2.0 m¥la problémy se soubory v¥t²ími nez 2GB, které jako graby £asto vznikají. A.3.2 PHP Na webovém serveru je pot°eba modul do apache. Na záznamovém sta£í PHP interpret p°ístupný z p°íkazového °ádku. Obvykle instalace obsahuje oba. Aplikace byla otestována jak na PHP verze 4 tak 5. V PHP musí být povoleny n¥které roz²í°ení, viz. dále. A.3.3 php-pear-Log Logovací systém, obdoba log4j pro Javu. Je pot°eba na obou serverech a jsou p°es n¥j zapisovány ve²keré záznamy do logovacích soubor·. Logovací soubory se pouºívají 4 a jsou v podadresá°i log. • • • • dvbgrab.log obecné hlá²ky systému dvbgrab.log.sql ve²kerý SQL kód, který je volán dvbgrab.log.sys ve²keré p°íkazy opera£ního systému, které jsou volány z PHP dvbgrab.log.clean logování výstupu z údrºbového skriptu. Logování SQL a systémových p°íkaz· m·ºe generovat pom¥rn¥ velké logy, proto by m¥lo být po odlad¥ní aplikace vypnuto v dolib.inc.php. A.3.4 php-json Podpora pro JSON (JavaScript Object Notation) do PHP. JSON je pouºit pro dotazy na detail televizního po°adu nebo grabu v seznamu grab·. Je to alternativní notace, která je vrácena na volání XMLHttpRequestu z javascriptu. Toto roz²í°ení usnad¬uje generování JSON odpov¥di ve skriptu, který z databáze detail na£ítá a zpracování p°ijaté odpov¥di ve webové stránce. A.3.5 php-adodb Knihovna pro abstraktní p°ístup k r·zným databázím. V²echna volání do databáze p°ekládá ze své syntaxe do syntaxe pouºitého databázového stroje. DODATEK A. INSTALACE A ÚDRBA 35 A.3.6 XMLTV Pokud chcete pouºít XMLTV modul pro na£ítání televizního programu, bude pot°eba nainstalovat tento balík. Bu¤ v n¥m p°ímo najdete stahovací skript pro poºadované programy, nebo se bude hodit alespo¬ skript tv_sort. A.3.7 Databáze DVBgrab by m¥l fungovat s libovolnou databází, která je podporována v ADOdb. Otestovaný je na PostgreSQL a MySQL, také skripty pro zaloºení databáze jsou p°ipraveny v syntaxi pro MySQL a PostgreSQL. A.4 Staºení DVBgrabu DVBgrab je dostupný na na sourceforge.net. K dispozici jsou jak jednotlivé uve°ejn¥né verze, tak £tení z vývojového repozitá°e subversion. Odkaz na jednotlivé verze naleznete na stránkách projektu http://dvbgrab.sourceforge.net/. Pro export z repozitá°e subversion pouºijte následující: Star²í verze dvbgrab-1.0 svn export --username anonymous \ https://dvbgrab.svn.sourceforge.net/svnroot/dvbgrab/tags/dvbgrab-1.0 dvbgrab Aktuální verze dvbgrab-2.0 svn export --username anonymous \ https://dvbgrab.svn.sourceforge.net/svnroot/dvbgrab/tags/dvbgrab-2.0 dvbgrab Vývojová verze svn export --username anonymous \ https://dvbgrab.svn.sourceforge.net/svnroot/dvbgrab/trunk dvbgrab A.5 Zaloºení databáze V podadresá°i sql jsou p°ipraveny skripty convert.sh, mysql.sql, postgres.sql, data.sql. • convert.sh je pro konverzi databázových dat z dvbgrab-1.0 na dvbgrab-2.0, p°esto tato konverze není doporu£ena a je bezpe£n¥j²í p°evést pouze uºivatelské ú£ty. Ob¥ verze DVBgrabu nechat spu²t¥né n¥jakou dobu paraleln¥ (starý DVBgrab nechat dostupný t°eba pod jiným názvem) a aktuální poºadavky nechat vy°e²it v p·vodní verzi a aº budou zpracovány, tak starou verzi zru²it a ponechat pouze novou • mysql.sql zaloºí v²echny pot°ebné tabulky pro DVBgrab na MySQL 36 DODATEK A. • postgres.sql zaloºí v²echny pot°ebné tabulky pro DVBgrab • data.sql do tabulek vloºí n¥kolik výchozích záznam·. INSTALACE A ÚDRBA na PostgreSQL Do tabulky param vloºí datum poslední aktualizace uºivatelských ú£t· (n¥kdy v minulosti). Do tabulky tvgrabber p°idá dva záznamy skript· na stahování televizního programu. Tyto záznamy lze dále upravovat p°es webové kongura£ní rozhraní, ale m·ºeme je upravit jiº tady. Minimáln¥ by bylo dobré zvolit n¥jaké náhodné £asy spou²t¥ní v cronu, aby se v²echny instalace DVBgrabu nep°ipojovaly na servery s programem sou£asn¥. Do tabulky encoder p°idá p¥t záznam·, jeden pro MPEG-2 a £ty°i pro MPEG-4 s r·zn¥ velkým rozli²ením záznamu. Pak do channel p°idá televizní kanály (T1, T2, Nova, Prima). Zde je dobré zkontrolovat IP adresy a porty, ze kterých má systém dané kanály ukládat a také se ujistit, ºe p°ípadný xmltv modul pouºívá stejné ID kanálu jako je v této tabulce. Pokud p°idáváme nový kanál, tak ur£íme také název souboru s logem a logo uloºíme do adresá°e images. Nakonec do tabulky news m·ºeme p°idat n¥kolik zpráv uºivatel·m, které se budou zobrazovat ve webovém rozhraní v sekci novinky. A.6 Kongurace DVBgrabu Staºený adresá° uloºíme na webový server do zvolené cesty (nap°: /var/www/dvbgrab). U webového serveru apache m·ºeme nastavit virtuální server, který pak adresá° s DVBgrabem uve°ejní pod jinou URL, neº je název serveru, takºe t°eba http://dvbgrab.domena.cz. Jako výchozí pouºijeme distribu£ní kongura£ní soubor cong.php.dist, který p°ekopírujeme jako cong.php. Zkontrolujeme, ºe odkaz ADOdb ukazuje na knihovnu php-adodb, p°ípadn¥ upravíme cíl odkazu, aby odpovídal umíst¥ní na²í ADOdb (podle distribuce). Chceme-li pouºít webové kongura£ní rozhraní, je t°eba nastavit právo na zápis i pro uºivatele, pod kterým b¥ºí webový server. To m·ºeme zajistit spu²t¥ním skriptu congure.sh. Nyní jiº m·ºeme za£ít pouºívat administra£ní rozhraní, které by m¥lo být dostupné na URL http://dvbgrab.domena.cz/setup.php. P°ípadn¥ m·ºeme v²e nastavit p°ímo editací souboru cong.php. Podrobn¥j²í popis jednotlivých voleb kongura£ního souboru: • db_name Ur£uje název databáze, kterou jsme pro DVBgrab zaloºili. • db_type Ur£uje typ databázového serveru, jeden z (access, ado, ado_access, ado_ms- sql, db2, odbc_db2, vfp, fbsql, ibase, rebird, borland_ibase, informix, informix72, ldap, mssql, mssqlpo, mysql, mysqlt, maxsql, oci8, oci805, oci8po, odbc, odbc_mssql, odbc_oracle, odbtp, odbtp_unicode, netezza. pdo, postgres, postgres64, postgres7, postgres8, sapdb, sqlanywhere, sqlite, sqlitepo, sybase, sybase_ase). • • • • db_host Jméno po£íta£e, na kterém b¥ºí databáze. db_user Jméno databázového uºivatele. db_pass Heslo pro p°ístup do databáze. auth_db_used Ur£uje, zda uºivatelé budou mít moºnost pouºívat heslo z n¥jaké jiné externí databáze. To znamená, ºe pokud máme t°eba databázi uºivatel· lokální sít¥ a v ní jiº hesla pro n¥jaké jiné sluºby, tak m·ºeme ov¥°ovat uºivatele tam. DODATEK A. INSTALACE A ÚDRBA 37 Registrace poté ov¥°í, zda takový uºivatel existuje v externí databázi. Pokud existuje, musí zadat stejné heslo, jako má uºivatel zvoleného jména v externí databázi. Pokud zadá správné, m·ºe být zaregistrován a v databázi DVBgrabu je pak místo jeho hesla uloºeno pouze slovo extern, které zna£í, ºe uºivatel vyuºívá externí heslo. Pokud heslo neodpovídá externí databázi, je registrace zamítnuta. Pokud uºivatel s daným jménem v externí databázi neexistuje, registrace m·ºe být provedena a heslo se ukládá do databáze DVBgrabu. Hodnota 1 znamená pouºívat externí databázi, hodnota 0 nepouºívat. Pro uºivatele s externím heslem také platí omezení, ºe nelze p°es DVBgrab m¥nit heslo a ani si poslat nov¥ vygenerované v p°ípad¥ jeho zapomenutí (to by m¥ly °e²it systémy nad externí databází). • auth_db_used_only Ur£uje, zda se mohou zaregistrovat a pouºívat DVBgrab i jiní uºivatelé, neº ti s externím heslem. Tím m·ºeme omezit DVBgrab jen na uºivatele, kte°í jsou registrováni v na²í externí databázi (t°eba pouze registrovaní uºivatelé lokální sít¥). Hodnota 1 znamená pouze ti s externím heslem, hodnota 0 i jiní. • auth_db_name Název externí databáze v databázovém stroji. • auth_db_type Typ databáze pro externí ov¥°ování, m·ºe nabývat stejných hodnot jako db_type. • • • • auth_db_host Jméno po£íta£e, na kterém b¥ºí databáze externího ov¥°ování. auth_db_user Jméno databázového uºivatele s p°ístupem do externí databáze. auth_db_pass Heslo tohoto uºivatele pro p°ístup do databáze. auth_db_select SQL dotaz na ov¥°ení hesla uºivatele, v tomto °et¥zci se nahradí dva textové °et¥zce dvbgrab_username je nahrazeno zadaným uºivatelským jménem a dvbgrab_password je md5 zadaného hesla. Pokud tento select vrátí alespo¬ jeden °ádek, uºivatelské jméno a heslo je p°ijato. • auth_db_user_select SQL dotaz na uºivatele, jestli existuje v externí databázi. V tomto °et¥zci se nahradí pouze dvbgrab_username. Pokud se vrátí alespo¬ jeden °ádek, uºivatel v externí databázi existuje. Vrácené °ádky by m¥ly mít strukturu uºivatelské jméno, heslo v MD5, uºivatelský e-mail, ip adresa. Pokud n¥jaké sloupce nem·ºeme podle externí databáze ur£it, vrátíme v odpovídajícím sloupci NULL. • error_status Mnoºství informací o vzniklé chyb¥: 0 Kaºdá chyba je vypsána do stránky. 1 Kaºdá chyba je odeslána na chybový e-mail. 2 Kaºdá chyba je ignorována. Toto je výchozí nastavení. • error_email E-mail, kam budou odesílány informace o chybách webového rozhraní. • admin_email E-mail, kam budou odesílány informace o chybách v grabovacím systému a ze kterého budou e-maily chodit uºivatel·m. • report_email E-mail, kam bodou odesílány souhrné informace o vyuºití systému. • proxy_server IP adresa HTTP proxy serveru, pokud musí být pouºit pro p°ístup k vn¥j²ím www stránkám (pro stahova£e televizního programu). • • • • proxy_port Port pro HTTP proxy. grab_history Kolik dn· se mají uchovávat nagrabované po°ady pro staºení. tv_days Na kolik dn· dop°edu se má na£ítat televizní program. midnight Kterou hodinu budeme povaºovat za p·lnoc p°i rozd¥lování po°ad· do jed- notlivých dn·. (Televizní den potom chápeme nap°íklad od ²esté hodiny ranní do ²esté hodiny dal²í den. • hour_frac_item Do jak velikých úsek· budeme seskupovat seznam po°ad·. 24 by m¥lo být d¥litelné hodnotou beze zbytku. To umoº¬uje vertikální zarovnavaní v²ech televizních kanál·. • grab_quota Kolik grab· m·ºe zadat uºivatel týdn¥. 38 DODATEK A. INSTALACE A ÚDRBA • user_inactivity_limit Po kolika dnech neaktivity bude uºivatelský ú£et zru²en. • dvbgrab_log Do jakého souboru se mají ukládat informace o pr·b¥hu grabování. • grab_date_start_shift O kolik minut se má posunout za£átek nahrávání po°adu, proti plánovanému za£átku televizního po°adu. • grab_date_stop_shift O kolik minut se má posunout konec nahrávání po°adu, proti plánovanému konci televizního po°adu. • record_time_after_last Jak dlouho nahrávat zvolený po°ad, pokud neznáme násle- dující (t°eba poslední po°ad v noci má následující aº druhý den ráno). Zadáváme v sekundách. • hostname Název po£íta£e, ze kterého distribuujeme hotové nahrávky. P°ípadn¥ to m·ºe být i celá úvodní £ást URL (pokud nemáme virtuální host v apache nastaven do uºivatelského adresá°e). Nekon£í lomítkem, takºe nap°: http://grab.domena. • grab_storage Adresá°, do kterého se budou nahrávat po°ady. Je to sdílený adresá° v²ech uºivatel·. Nekon£í lomítkem. • grab_storage_size Kolik GB prostoru máme vyhrazeno pro nahrané po°ady. (Ome- zení velikosti pro adresá° grab_storage). • grab_storage_min_size Minimální mnoºství volného místa na grabovacím disku, p°i kterém za£neme promazávat star²í graby. • grab_root Adresá°, kam se budou ukládat odkazy na hotové po°ady. Musí být p°í- stupný pro http server. V tomto adresá°i se budou zakládat uºivatelské adresá°e. Nekon£í lomítkem. • grab_backend_lang Jazyk pouºívaný v backend skriptech (cz, sk, en, fr, ..). Tento se pouºije pouze v p°ípad¥, ºe se zpráva posílá správci DVBgrabu nebo uºivateli, který nemá jest¥ uloºen sv·j naposledy pouºitý jazyk. • grab_backend_strip_diacritics P°íznak, zda se má z nahraných soubor· odstra¬ovat diakritika, nebo jestli sou£ástí názvu nahrávky je pouze ID £íslo záznamu. Diakritika na n¥kterých souborových systémech nemusí být podporována nebo nastavena na UTF-8, ve kterém máme názvy po°ad·. Proto se pouºívá odstran¥ní diakritiky, které ale nelze vy°esit úpln¥ univerzáln¥ pro v²echny znaky z UTF-8. Pro £e²tinu funguje dob°e, v £ín²tin¥ by bylo lep²í pouºít jen ID. Název po°adu v£etn¥ diakritiky pak máme v p°idruºeném, popisném XML souboru. Hodnota 0 ur£uje pouºití ID, hodnota 1 název po°adu. V poslední £ásti je denice stahova£· televizního programu. P°eddenované m·ºeme povolovat nebo zakazovat. Také m·ºeme denovat nový. Kaºdý stahova£ má 3 d·leºité parametry: • tvg_name Jméno stahova£e. • tvg_cron_time as naplánovaného spou²t¥ní pomocí cron démona. Zadává se p°ímo syntaxe cronu, tzn. 5 £ísel udávajících v po°adí minutu, hodinu, den v m¥síci, m¥síc, den v týdnu. Místo £ísla m·ºeme pouºít bu¤ hv¥zdi£ku (zna£í, ºe na daném údaji nezáleºí) nebo */N, kde N ur£uje násobek jednotky, ve které se p°íkaz má spoust¥t (*/5 u minut znamená kaºdý celý násobek 5 minut). Hodnota 0 23 * * 6 potom znamená, ºe se stahova£ má spou²t¥t kaºdou sobotu, v 23:00. Tyto údaje volíme nejlépe na n¥jakou no£ní dobu, kdy servery poskytovatele nebudou tolik zatíºeny. Také se je snaºíme volit pokud moºno náhodn¥, aby se minimalizovala pravd¥podobnost, ºe v²echny instalace DVBgrabu stahují ze stejných server· ve stejný okamºik. • tvg_cron_cmd P°íkaz, který má cron démon spou²t¥t. Obvykle bude za£ínat nasta- vením pracovního adresá°e ke stahovacím skript·m, aby stahovací skripty mohli na£ítat pomocné knihovny z DVBgrabu na základ¥ jejich relativních cest. DODATEK A. INSTALACE A ÚDRBA 39 Pokud jsme s kongurací jiº spokojeni, pouºijeme tla£ítko Nastavit. To aktualizuje soubor cong.php a vypí²e nám informaci o aktuální konguraci pro cron démon. V té nahradíme BACKEND_DIR za skute£ný adresá°, odkud budou spou²t¥ny backend skripty a daný výpis si zkopírujeme do schránky. Na záznamovém serveru pouºijeme p°íkaz crontab -e na editaci kongurace cron démona a vloºíme text ze schránky. Tím máme zaji²t¥no pravidelné volání údrºbového skriptu, zasílání informací o vyuºívání DVBgrabu a spou²t¥ní stahova£· televizního programu. Pokud máme záznamový server zvlá²´, je pot°eba p°esunout adresá° backend tam. To je nejlep²í ud¥lat pomocí archivátoru tar, který nám symbolické odkazy z adresá°e backend na sdílené soubory nahradí jejich skute£nou kopií. Vzniklý archiv tar pak rozbalíme na cílovém serveru a podadresá° adodb bu¤ nahradíme správným symbolickým odkazem nebo ponecháme ten nakopírovaný z prvního serveru. Automatické spou²t¥ní DVBgrabu p°i startu systému zaji²´uje skript service/dvbgrab, který upravíme podle aktuálního umíst¥ní skriptu dvbgrab_service a nakopírujeme do adresá°e podle distribuce (nap°. /etc/init.d/dvbgrab). Poté sta£í naplánovat, ve kterých runlevelech se má sluºba spou²t¥t a kde zastavovat. A.7 Údrºba záznamového serveru O údrºbu se stará automaticky spou²t¥ný skript clean.php. A.7.1 Mazání neaktivních uºivatel· Maºe uºivatele, kte°í se po dobu n¥kolika dní (podle volby user_inactivity_limit) nep°ihlásili k DVBgrabu a ani si nic neobjednali. To zajistí zru²ení uºivatele a uvoln¥ní jeho IP adresy po jeho odst¥hovaní z koleje (pokud p°edem sám nepouºije funkci na okamºité zru²ení ú£tu). Také to ru²í v²echny jeho poºadavky a jeho uºivatelský adresá°. O zru²ení ú£tu se uºivateli po²le e-mail. A.7.2 Aktualizace uºivatelských ú£t· P°i zm¥n¥ hesla nebo stahovací IP adresy uºivatelem je v databázi nastaveno nové datum poslední zm¥ny. Tento skript p°i kaºdém spu²t¥ní p°egeneruje .htaccess soubory pro v²echny uºivatele, kte°í m¥nili svá nastavení mezi posledním spu²t¥ním skriptu a aktuálním £asem. Poté posune datum poslední aktualizace na aktuální £as. A.7.3 Kontrola neznámých uºivatelských ú£t· Skript zkontroluje, zda pro v²echny adresá°e existuje odpovídající databázový uºivatel, pokud ne, mohou být smazány, p°ípadn¥ alespo¬ vypsány na obrazovku. 40 DODATEK A. INSTALACE A ÚDRBA A.7.4 Mazání nepot°ebných .ts soubor· V²echny graby se ukládají do souboru s .ts koncovkou. P°i kaºdém spu²t¥ní skriptu je u t¥chto soubor· zkontrolováno, zda k nim existuje nejaký nevy°ízený poºadavek na komprimaci. Pokud ne, je .ts soubor smazán. Pokud ano, je do logovacího souboru zapsáno, který formát je²t¥ chybí p°ipravit. A.7.5 Kontrola volného místa V grabovacím adresá°i se sleduje mnoºství vyuºitého prostoru a volné místo. Nejstar²í nahrávky se za£nou mazat p°i p°ekro£ení maximální povolené velikosti grabovacího adresá°e (podle grab_storage_size), nebo pokud je volného místa mén¥, neº je op¥t nakongurovaná konstanta (grab_storage_min_size). Pokud je nutné mazat i graby, které jsou nagrabovány krat²í dobu, neº je plánované uchovávání grab· (grab_history), je správci zaslán varovný e-mail. A.7.6 Mazání starých dat V databázi nepot°ebujeme uchovávat televizní program n¥kolik let dozadu a zárov¥n je dobré zobrazovat na webu i hotové graby po jejich smazání. Proto jsou z databáze smazány jen data star²í neº je trojnásobek doby, po kterou se uchovávají graby (3 x grab_history dní). Maºou se jak záznamy o uºivatelských poºadavcích, tak poºadavky na formát, tak vlastní graby a televizní program. A.8 Ru£ní údrºba uºivatel· Ob£as je nutné ru£n¥ ru²it uºivatele, kte°í se nap°íklad odst¥hují a nezru²í p°itom sv·j ú£et. Pokud jejich IP adresu dostane nový uºivatel, který by se cht¥l zaregistrovat na DVBgrabu d°ív, neº uplyne lh·ta na automatické zru²ení p·vodního ú£tu z d·vodu neaktivity, registrace selºe z d·vodu koniktu IP. V t¥chto p°ípadech je nejlep²ím °e²ením ru£n¥ nastavit datum poslední aktivity p·vodního ú£tu nap°íklad rok dozadu, a tím je zaji²t¥no zru²ení ú£tu údrºbovým skriptem, v£etn¥ zru²ení jeho adresá°e a odeslání informa£ního e-mailu. Pro hromadné informování uºivatel· je moºné pouºít skript backend/send_user_info.php, ve kterém upravíme text zprávy a jeho spu²t¥ním roze²leme zprávu v£etn¥ p°ihla²ovacích údaj· kaºdému uºivateli DVBgrabu. Toto je vhodné pouºít nap°íklad po konverzi databáze z DVBgrabu verze 1 na verzi 2, kdy do²lo ke zm¥nám v pravidlech pro znaky v uºivatelských jménech. A.9 Údrºba backend skript· Ve²keré spou²t¥ní a zastavování grabovacích nebo komprima£ních smy£ek by se m¥lo provád¥t p°es skript dvbgrab_service, který je sou£ástí instala£ního balíku. V tomto skriptu zkontrolujeme cestu k adresá°i s backend skripty. DODATEK A. INSTALACE A ÚDRBA 41 Skript dvbgrab_service podporuje tyto parametry: • • • • • • • • • • start nastartuje záznamovou i komprima£ní smy£ku startg nastartuje pouze záznamovou smy£ku starte nastartuje pouze komprima£ní smy£ku stop zastaví ob¥ smy£ky stopg zastaví pouze záznamovou smy£ku stope zastaví pouze komprima£ní smy£ku restart restartuje ob¥ smy£ky restartg restartuje pouze záznamovou smy£ku restarte restartuje pouze komprima£ní smy£ku status zobrazí, jestli smy£ky b¥ºí. Poté pro jednotlivé komprima£ní formáty seznam grab·, které jsou ve front¥ a také, které graby se práv¥ ukládají Zastavování komprima£ní sloºky je dopln¥no o obnovování fronty na komprimaci (skriptem backend/encode_queue_restore.php), coº po zastavení smy£ky vrátí stav poºadavk· ze stavu Komprimuje se na stav Nahraný, díky tomu se mohou po op¥tovném spu²t¥ní smy£ky op¥t vybrat ke zpracování. Zobrazit frontu na komprimaci a aktuáln¥ ukládané graby lze i ru£n¥ pomocí skriptu backend/encode_queue_print.php. Pro spou²t¥ní a vypínání DVBgrabu p°i startu a zastavování opera£ního spou²t¥ní máme skript, který tento dvbgrab_service volá. M¥l bý být v /etc/init.d/dvbgrab. 42 DODATEK A. INSTALACE A ÚDRBA DODATEK B. UIVATELSKÁ PÍRUKA 43 B Uºivatelská p°íru£ka Uºivatelská p°íru£ka v£etn¥ snímk· obrazovky bude pozd¥ji umíst¥na na stránkách projektu http://dvbgrab.sourceforge.net/, protoºe prost°edí má £erné pozadí, coº by nebylo moc vhodné pro tisk. B.1 Registrace P°ed prvním pouºitím je t°eba si zaregistrovat sv·j uºivatelský ú£et. Registrace se provádí na úvodní stránce aplikace. Ve formulá°i registrace je t°eba vyplnit: B.1.1 Uºivatelské jméno P°ípustné jsou pouze malé alfanumerické znaky bez diakritiky (malá písmena abecedy a-z a 0-9). Tímto uºivatelským jménem se budete poté p°ihla²ovat a bude také zobrazeno u Vámi objednaných grab·. Pokud takové uºivatelské jméno jiº existuje, bude vypsána chyba. Pokud se pouºívají sdílená hesla s jinými projekty (nap°íklad s heslem, které máte nastaveno u správc· sít¥), tak zde zadávejte stejné sdílené uºivatelské jméno. Nap°íklad na Masarykov¥ koleji má Petr Novák uºivatelské jméno na e-mail a stránky koleje novakp a heslo 12345. Kdyº bude chtít vyuºívat stejné heslo i na stránkách DVBgrabu, tak musí zadat op¥t uºivatelské jméno novakp a heslo 12345. Tím se ov¥°í, ºe je to doopravdy Petr Novák a p°i°adí se mu takzvan¥ externí heslo (nebude se ukládat v databázi DVBgrabu). Pokud si poté na stránkách koleje zm¥ní své heslo na 54321, tak se tato zm¥na okamºit¥ projeví i v DVBgrabu. Tito uºivatelé pak nemají v DVBgrabu dostupnou funkci pro poslání nového vygenerovaného hesla po zapomenutí starého a také si ho nemohou v menu nastavení m¥nit (to by m¥lo být zaji²t¥no jinde). B.1.2 Uºivatelské heslo Pro pouºité znaky platí stejné omezení jako u uºivatelského jména (malé alfanumerické znaky bez diakritiky). Heslo m·ºe být libovolné, jen uºivatelé, kte°í chtejí pouºívat externí heslo viz. p°edchozí odstavec, musejí zadat svoje aktuální. Heslo se pro kontrolu zadává dvakrát. Ti, kte°í nemají externí heslo, si mohou v p°ípad¥ zapomenutí nechat poslat nové na e-mail, který je následující poloºkou. B.1.3 E-mail Uºivatelský e-mail, na který e-mail budou zasílána oznámení o úsp¥²ném nahrání po°adu (v£etn¥ odkaz· na jeho staºení), p°ípadn¥ o chybách. Proto je nutné uvést e-mail platný. Na tento e-mail bude také zasláno heslo, pokud o to poºádáte po jeho zapomenutí. 44 DODATEK B. UIVATELSKÁ PÍRUKA B.1.4 IP adresa pro stahování Ta je vypln¥na automaticky IP adresou, ze které se registrujete. V menu nastavení je pak umoºn¥no ji dodate£n¥ zm¥nit. Z jedné IP adresy m·ºe být zaregistrován maximáln¥ jeden uºivatel. Pokud aplikace vypí²e chybu, ºe jiº n¥kdo byl z této adresy registrován, je nutné napsat tomuto uºivateli zprávu, a´ si zm¥ní IP adresu na svou vlastní, pokud nereaguje, kontaktujte správce aplikace (ten m·ºe kolidující ú£et zru²it). B.1.5 Video kodek Zde se nastavuje Vámi preferovaný zp·sob komprese hotových nahrávek. Seznam povolených formát· ur£uje správce aplikace. K dispozici je obvykle MPEG-2, coº je formát s nízkou kompresí vhodný spí²e pro dal²í úpravy neº pro uchování. Hodina po°adu je poté p°ibliºn¥ 1GB velká. MPEG-4 varianty poté zmen²ují velikost na p°ibliºn¥ 500MB na hodinu a jejich parametr scale ur£uje, jakým pom¥rem bude zmen²eno m¥°ítko (MPEG-4 scale 0.125 znamená, ºe výsledné video bude mit velikost 1/8 originálu a výsledný soubor bude tedy mnohem men²í). Zm¥ny preferovaného kodeku jsou moºná v menu nastavení a platí pravidlo, ºe na objednaný grab se pouºije ten kodek, který byl nastaven v dob¥ jeho objednání. Pokud máte MPEG-2 a objednáte po°ad ABC a poté zjistíte, ºe si ho chcete nechat nahrát v MPEG-4, tak musíte zm¥nit nastavení preferovaného kodeku, objednávku po°adu ABC zru²it a znovu objednat. B.1.6 Icq, Jabber Pokud chcete nechat ostatním uºivatel·m na sebe kontakt, vypl¬te prosím i tyto kolonky. Pokud se registrace z nejakého d·vodu nepoda°í, je vypsána informace s d·vodem. Pokud se poda°í, je vypsáno, ºe uºivatel byl úsp¥²n¥ registrován a je automaticky p°ihlá²en. B.2 P°ihlá²ení Pokud se uºivatel hlásí z jiného po£íta£e nebo prohlíºe£e neº ze kterého se registroval, p°ípadn¥ pokud vypr²ela platnost p°ihlá²ení, musí zadat znovu své p°ihla²ovací jméno a heslo. Zadané údaje se uloºí do cookies prohlíºe£e a pamatují se po dobu 2 let. Uºivatelské jméno a heslo se také v cookies prohlíºe£e vymaºe, pokud pouºijete odkaz na odhlá²ení z DVBgrabu. Proto pokud se p°ihla²ujete z po£íta£e, který vyuºívá více uºivatel·, je nutné se vºdy p°ed odchodem z DVBgrabu odhlásit (odkaz v pravém horním rohu). Pokud zapomenete své heslo, je moºné si nechat poslat nov¥ vygenerované na zaregistrovaný e-mail. Sta£í si správn¥ pamatovat své uºivatelské jméno a e-mail, se kterým jste se registroval. Po p°ihlá²ení s novým heslem je vhodné si heslo zm¥nit na lépe zapamatovatelné v menu nastavení. DODATEK B. UIVATELSKÁ PÍRUKA B.3 45 Objednání grabu Nej£ast¥j²í £inností je objednávání grabu, to se provádí v menu TV program. TV program se zobrazuje na n¥kolik dní dop°edu, p°epínání dne se provádí volbou v horní £ásti stránky. V programu se také dá vyhledávat zadáním £ásti názvu po°adu nebo jeho popisu. Jak v p°ehledu programu tak ve výsledcích hledání se graby objednávají kliknutím na název po°adu a potvrzením dialogového okna. Poté zvolený televizní po°ad zm¥ní barvu svého pozadí (znázor¬ující, ºe grab je v naplánovaném stavu) a zobrazí se odkaz na zru²ení grabu. Po£et grab· za týden je omezen, aktuální po£et objednaných grab· a limit je vid¥t v pravém horním rohu. Úpln¥ stejn¥ se dají objednávat také graby, které uº n¥kdo objednal p°ed Vámi. Uºivatelem naplánované graby jsou od ostatních odli²eny ikonou televize v levé £ásti po°adu. Dal²í informace o po°adu se zobrazují ve vyskakujícím oknu, které se zobrazuje po najetí my²i na název po°adu. V tomto dopl¬kovém okn¥ se zobrazují jak detaily po°adu, tak i informace o naplánovaném grabu, pokud je po°ad n¥kým objednán. Po°ad lze objednat maximáln¥ 30 minut po jeho za£átku, samoz°ejm¥ pokud nikdo p°edtím nem¥l tento po°ad objednaný, bude po°ad nahráván aº od okamºiku objednání. Formát, ve kterém bude daný po°ad uloºen, je ur£en podle uºivatelem preferovaného kodeku, který má nastaven v dob¥ objednávání (více viz. sekce Video kodek u registrace uºivatele). B.4 Ru²ení grabu Ru²it se dají pouze graby, které je²t¥ nebyly odvysílány. Zru²ení se provede v p°ehledu televizních po°ad· kliknutím na odkaz zru²it grab. Na aktuáln¥ naplánované graby se lze rychle p°epnout z menu Moje graby. B.5 Sledování stavu Grab po objednání prochází n¥kolika stavy, nejd°íve je pouze naplánovaný. Aktuální stav grabu je znázorn¥n pomocí barvy pozadí a p°esn¥ji podle textu, který je sou£ástí detailního vyskakujícího okna. Návaznost jednotlivých stav· grabu: • Naplánovaný • Nahrává se od prvního objednání libovolným uºivatelem, aº po za£átek nahrávání. do tohoto stavu by se m¥l dostat pár minut p°ed o£ekávaným za£átkem po°adu. • Nahraný n¥kolik minut po o£ekávaným koncem po°adu by se m¥l stav p°epnout do to- hoto stavu (od stavu Nahrává se je odli²en jen textem v okn¥ s detailem). • Komprimuje se po n¥jaké dob¥, m·ºe trvat i n¥kolik hodin neº se zkomprimují star²í, se daný po°ad dostane na °adu a za£ne jeho komprimace do zvoleného formátu. • Zkomprimovaný po dokon£ení komprimace, tento stav je op¥t odli²en jen textem v detailu a obvykle netrvá dlouho. • Hotový grab je uve°ejn¥ný v uºivatelském adresá°i a uºivateli byl zaslán oznamující e-mail, taky by se m¥l zobrazit odkaz na staºení v menu Moje graby. 46 DODATEK B. UIVATELSKÁ PÍRUKA • Smazaný graby se na záznamovém serveru uchovávají jen po správcem denovanou dobu a ta m·ºe být je²t¥ zkrácena v p°ípad¥, ºe dochází volné místo na disku, p°i smazání grabu se jejich stav tedy p°epíná na tento. • Prome²kaný první chybový stav zna£ící, ºe záznamový server pravd¥podobne nebyl v·bec v provozu v dob¥ vysílání po°adu. Tyto graby jiº nebude moºné získat. • Neúsp¥ch druhý chybový stav, který m·ºe znamenat pouze chybu aº p°i komprimaci, pokud je to chyba odstranitelná, je moºné, ºe správce chybu odstraní a po°ad bude pozd¥ji uve°ejn¥n a ve stavu Hotový. • Nedenovaný poslední chybový stav, který nastává pouze p°i vyjime£ných situacích. V²echny chybové stavy jsou vyzna£eny stejnou barvou pozadí. B.6 Stahování grabu Graby je nejjednodu²²í stahovat kliknutím na odkaz, který p°ijde v oznamovacím e-mailu. Dále je moºné stahovat své graby ze seznamu v Moje graby, kde je u hotových grab· v posledním sloupci uveden odkaz. Poslední moºností je p°ímý p°ístup na URL s uºivatelským adresá°em (nap°. http://graby.domena/novakp), kde se také zobrazí v²echny uºivatelovy hotové soubory. Ke kaºdému grabu jsou vºdy 2 soubory, avi nebo mpg s vlastní nahrávkou a XML, ve kterém jsou dal²í informace. Bezchybné staºení lze zkontrolovat výpo£tem MD5 staºeného souboru a porovnáním s MD5 sou£tem uvedeným v XML souboru, p°ípadn¥ alespo¬ velikost staºeného souboru by se m¥la rovnat velikosti uvedené tamtéº. V XML souboru si také m·ºete zkontrolovat za£átek a konec po°adu a jeho nahrávání. XML soubor je ve webovém prohlíºe£i zobrazován v p°ehledné podob¥ tabulky, která je z XML souboru vytvo°ena podle XSL ²ablony. Ta je v uºivatelském adresá°i vygenerována (podle jazyku, který uºivatel pouºívá na webovém rozhraní DVBgrabu) v souboru dvbgrab.xsl. Pokud chcete stejn¥ zobrazovat i staºené XML soubory, zkopírujte k nim do adresá°e i tento soubor. Jméno souboru má následující strukturu, DVB- jako p°edpona, pak datum nahrávání ve formátu Ymd-Hi (rok, m¥síc, den, hodiny, minuty) tak, aby se adresá° s nahrávkami dal °adit chronologicky podle abecedy. Dále následuje jméno kanálu (po odstran¥ní diakritiky) a název po°adu, bu¤ po odstran¥ní diakritiky nebo jenom ID záznamu. Seriály také mohou obsahovat v názvu sekci denující £íslo série, epizody a £ásti, p°ípadn¥ i celkový po£et (nap°. S2/5E8P1/2 zna£í, ºe jde o osmý díl druhé epizody z p¥ti, £ást první ze dvou). B.7 P°ehrávání grabu Graby je nejlep²í p°ehrávat v programu VLC (VideoLAN Client zdarma ke staºení na http://www.videolan.org/), protoºe ten vyuºívá stejné kodeky jako DVBgrab. V Linuxu problémy s kodeky obvykle nejsou. DODATEK B. UIVATELSKÁ PÍRUKA B.8 47 Zm¥ny nastavení ú£tu Ve webovém rozhraní je moºno m¥nit n¥kolik parametr· uºivatelského ú£tu. P°ihla²ovací jméno m¥nit nelze, chcete-li jiné, musíte ú£et zru²it a zaloºit si nový. Zm¥na hesla není moºná u externích hesel, viz. sekce registrace. Zm¥na stahovací IP adresy se nemusí projevit ihned. Pokud se zm¥na neprojeví do 24 hodin, kontaktujte správce. Zm¥ny video kodeku se projevují podle popisu v sekci registrace. O v²ech provedených zm¥nách je zasílán informa£ní e-mail na uºivatelovu aktuální adresu. B.9 Zru²ení ú£tu Pokud uº DVBgrab nechcete nebo nebudete moci vyuºívat, zru²te prosím sv·j uºivatelský ú£et v dolní £ásti stránky p°ístupné p°es menu nastavení. To uvolní va²í stahovací IP adresu uºivateli, který ji t°eba dostane po Vás. Jinak bude Vá² ú£et zru²en aº po t°eba 30 dnech neaktivity. P°i ru²ení ú£tu se taky automaticky zru²í v²echny naplánované graby a uºivatelský adresá° s graby na staºení. 48 DODATEK B. UIVATELSKÁ PÍRUKA DODATEK C. SNÍMKY OBRAZOVKY C Snímky obrazovky Obrázek C.1: Ukázka p°ihlá²ení Obrázek C.2: Ukázka programu 49 50 DODATEK C. SNÍMKY OBRAZOVKY Obrázek C.3: Ukázka seznamu grab· Obrázek C.4: Ukázka nastavení ú£tu DODATEK D. FORMÁTY PRO UKLÁDÁNÍ AUDIO-VIDEO 51 D Formáty pro ukládání audio-video Audio-video data se ukládájí v souborovém a p°ená²ejí v sí´ovém formátu, obecn¥ tomu °íkáme kontejner. Kontejner zaji²´uje synchronizaci r·zných sloºek (audio, video, titulky) a m·ºe podporovat nap°íklad r·zné kapitoly v rámci jednoho souboru (známé z DVD). Kontejner umí pracovat s ur£itými typy audio a video kodek·. Kodeky ur£ují, jakým zp·sobem jsou data digitaln¥ uloºena. D.1 Organizace ovliv¬ující audio-video formáty sou£asnosti • MPEG Motion Pictures Expert Group je název standardiza£ní skupiny ISO. V normách je v r·zných £ástech vºdy obsaºena denice jak kontejneru, tak audio i video kodek·. • VCEG Video Coding Experts Group, skupina pro návrh audio-video standardu skupiny ITU-T. • Firmy Microsoft, Apple a dal²í • Neziskové organizace a dobrovolníci vytvá°ející svobodné implementace, ob- vykle kompatibilní s n¥kterým standardem. D.2 Nejznám¥j²í kontejnery • MPEG-1 Je nejstar²ím standardem, vyuºívá se nap°íklad u Video CD (VCD). Jeho kvalita je zhruba srovnatelná s kvalitou záznamu na analogové VHS kazet¥. Sou£ástí toho standardu je i známý audio kodek MP3, coº je zkratka za MPEG-1 Part 3 Layer 3 (MPEG1 Audio Layer 3). P°ehrávání a nahrávání tohoto formátu je hardwarov¥ nejmén¥ náro£né a také je to formát nejvíce kompatibilní. • MPEG-2 Nástupce MPEG-2 nov¥ p°iná²í podporu pro prokládané video a 2 r·zné kontejnery pro vkládání audio-video dat. • MPEG-2 TS Transport stream neboli kontejner pro p°ená²ení signálu po mén¥ spo- lehlivém kanálu, pouºívá se nap°íklad u DVB vysílání. • MPEG-2 PS Program stream je naopak navrºen pro pouºití na spolehlivém médiu jako je DVD a SuperVideo CD (SVCD). • MPEG-2 VOB Roz²í°ení MPEG-2 pouºívané na DVD discích. Umoº¬uje denovat jednotlivé kapitoly, podpora pro titulky ve formátu VobSub a také pro ne-MPEG audio kodeky, jako je £asto pouºívaný AC3 pro prostorový zvuk 5.1. • MPEG-3 P·vodn¥ denovaný pro televizní vysílání s vysokým rozli²ením HDTV. Místo tohoto formátu se pro HDTV pouºívá mírn¥ vylep²ený MPEG-2. • MPEG-4 MP4 Nejnov¥j²í formát z rodiny MPEG standard·. Nejv¥t²ím rozdílem proti p°edch·dc·m je pouºití kodek· s vysokou kompresí pro audio i video. Také je zahrnuta podpora pro systém ochrany autorských práv DRM (Digital Rights Management). Pouºívá se nej£asteji pro uchování audio-video na po£íta£i a tam, kde je t°eba zajistit co nejmen²í datový tok, t°eba u DVB vysílání pro p°enosná za°ízení (DVB-H). Denuje 2 skupiny video kodek· s vysokou kompresí MPEG-4 ASP a MPEG-4 AVC. • AVI Audio Video Interleave, souborový kontejner navrºený rmou Microsoft podobný formátu MPEG-4. • ASF Advanced Systems Format, d°íve Advanced Streaming Format, p°enosový kontej- ner navrºený rmou Microsoft. • QuickTime Kontejner od rmy Apple. Pouºívá p°ípony .mov a .qt. Byl základem pro tvorbu standardu MP4. 52 DODATEK D. FORMÁTY PRO UKLÁDÁNÍ AUDIO-VIDEO • OGG/OGM Svobodná varianta vyvinutá v organizaci Xiph.Org [8]. • Matroska Dal²í svobodná varianta s popisem sloºek ve formátu EBML (Extensible Binary Meta Language binární obdoba XML). Podobá se QuickTime, MP4 a ASF. • • • • • D.3 3GP P°eváºn¥ pro p°enosná za°ízení jako telefony a PDA navrºený organizací 3GPP. NUT Z projektu MPlayer/FFmpeg. FLV Video z Flash playeru od Adobe. RealMedia ... Nejpouºívan¥j²í video kodeky • MPEG-1 Video Nejstar²í a vhodný spí²e pro video s nízkým rozli²ením, podporuje pouze neprokládané video (progressive scan). • MPEG-2 Video Kompatibilní s MPEG-1 Video, ale p°i toku více neº 3Mbit/s jiº efektivn¥j²í a také podporuje prokládané video (interlaced) známé z televizního vysílání. Denuje r·zné proly (typy snímk· P, I, B; rozloºení YUV a kanál·) a úrovn¥ (rozli²ení, framerate, bitrate). Kombinací prol· a level· získáme ²kálu r·zn¥ kvalitních variant pouºitelných od bezdrátových za°ízení po kvalitní za°ízení pro vysoké rozli²ení (HD). • MPEG-4 ASP Advanced Simple Prole, odpovídá standardu VCEG H.263 (imple- mentace XviD, DivX, 3ivx, QuickTime, libavcodec). • MPEG-4 AVC Advanced Video Coding, vznikl spoluprácí skupin MPEG a VCEG a odpovídá H.264 (implementace x264, libavcodec). Pouºíván pro DVD s vysokým rozli²ením (HD DVD) a pravd¥podobn¥ pouºitý pro Blu-ray video disky. Lze také pouºít pro vysílání DVB ve vysokém rozli²ení. • • • • • D.4 Theora Svobodný kodek kvalitativn¥ srovnatelný s MPEG-4 ASP i MPEG-4 AVC. WMV Windows Media Video, odpov¥d Microsoftu na kodeky MPEG-4 ASP. RealVideo MJPEG ... Nejpouºívan¥j²í audio kodeky • MPEG-1 Layer 2 Audio Niº²í komprese. • MPEG-1 Layer 3 Audio Vy²²í ztrátová komprese, roz²í°ená podpora v p°ehráva£ích, známý jako MP3. • AAC Advanced Audio Coding, denovaný v MPEG-2 £ást 7 a MPEG-4 £ást 3 (podle implementace). • • • • • • • • AC3 Adaptive Transform Coder 3, aº 6 kanálový zvuk Dolby Digital. FLAC Free Lossless Audio Codec, svobodná alternativa bezeztrátového audio kodeku. Vorbis Svobodná náhrada kodeku MP3, také se ztrátovou kompresí. Speex Svobodný se ztrátovou kompresí optimalizován pro uchování a p°enos lidské °e£i. WMA RealAudio ATRAC ... DODATEK E. SLOVNÍK POJM 53 E Slovník pojm· DVB Digital Video Broadcasting digitální vysílání GRAB Záznam z televize nebo jiného zdroje QAM Quadrature Amplitude Modulation Kvadraturní amplitudová modulace OFDM Orthogonal Frequency Division Multiplex Ortogonální frekven£n¥ d¥lený multiplex QPSK Quaternary Phase-Shift Keying Kvadraturní klí£ování fázovým posuvem FEC Forward Error Correction Metoda zji²´ování a opravy chyb vzniklých p°i p°enosu, která vyuºívá vkládání dopl¬kových kontrolních bit· VLS VideoLAN Server program pro vysílání multimediálních dat do lokální sít¥ VLC VideoLAN Client multimediální p°ehráva£ s moºností vysílat do lokální sít¥ VLM VideoLAN Manager p°ehráva£ VLC v neinteraktivním vysílacím reºimu IGMP Internet Group Management Protocol protokol na správu skupin u multicastové formy vysílání MPEG Xiph Motion Pictures Expert Group pracovní skupina ISO pro vývoj multimediálních formát· a ozna£ení rodiny kodek· Xiph.Org sdruºení pro podporu vývoje svobodných formát· a protokol· 54 DODATEK E. SLOVNÍK POJM DODATEK F. OBSAH PILOENÉHO CD 55 F Obsah p°iloºeného CD dp: • • • • • • • • • • • • • • • • • • • dp_bibliography.bib dp_cd.tex dp_format.cls dp_formaty.tex dp_instalace.tex dp_macro.tex dp_ocekavame.tex dp.pdf dp_pojmy.tex dp_popis.tex dp_pouziti.tex dp_prijem.tex dp_testovani.tex dp.tex dp_udrzba.tex dp_vysilani.tex dp_zaver.tex images Makele dp/images: • • • • • • • • • • • • • • dvbgrab.dia dvbgrab.eps dvbgrab.png LogoK336.eps PATaPMT.eps scrNastaveni.eps scrNastaveni.png scrPrihlaseni.eps scrPrihlaseni.png scrProgram.eps scrProgram.png scrSeznam.eps scrSeznam.png videolan.eps dvbgrab: • • • • • account.inc.php account.php actions.php adodb authenticate.php • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • authentication.php backend cong.php cong.php.dist congure.sh const.php css docs dolib.inc.php dvbgrab_service footer.php grabinfoJS.php grabinfo.php header.inc.php header.php charset.inc.php images index.php lang language.accept.inc.php language.inc.php legend.inc.php listtv.php log loggers.inc.php menu.php news.php plan.php project-web screenshot1.png screenshot1.xcf screenshot2.png screenshot3.png screenshot4.png search.php secure.sh sendPass.php service setup.php sql status.inc.php telinfoJS.php telinfo.php tvgrabbers tvprog.php users view.inc.php 56 DODATEK F. dvbgrab/backend: • • • • • • • • • • • • • • • • • • • • adodb clean.inc.php clean.php cong.php dolib.inc.php encode_loop.php encode_process.php encode_queue_print.php encode_queue_restore.php encoders grab_loop.php grab_process.php charset.inc.php lang loggers.inc.php print_xsl_template.php send_user_info.php status.inc.php mpeg2.sh mpeg4-full.sh mpeg4-medium.sh mpeg4.sh dvbgrab.css AUTHORS COPYING COPYRIGHT fr.gif grab.gif grab2.gif loading.gif logos minus.gif plus.gif sk.gif top.black.png top.full.png top.gif top.half.png top.png top.xcf dvbgrab/images/logos: • • • • • • • • • ct1p.gif ct1.png ct2p.gif ct2.png novap.gif nova.png ockop.gif primap.gif prima.png dvbgrab/lang: • • • • lang.cs.inc.php lang.en.inc.php lang.fr.inc.php lang.sk.inc.php dvbgrab/log: dvbgrab/project-web: CHANGES INSTALL README TODO dvbgrab/images: • en.gif mpeg4-small.sh dvbgrab/docs: • • • • • • • dot.xcf send_daily_report.php dvbgrab/css: • dot.gif output.inc.php dvbgrab/backend/encoders: • • • • • • • • • • • • • • • • • • • • • • OBSAH PILOENÉHO CD cs.gif • • • • • • • css footer.php header.inc.php header.php images index.php menu.php DODATEK F. OBSAH PILOENÉHO CD dvbgrab/project-web/css: • dvbgrab.css dvbgrab/project-web/images: • top.png dvbgrab/service: • • • • • dvbgrab README vlm vlm.cfg vlm.cfg.human.readable dvbgrab/sql: • • • • convert.sh data.sql mysql.sql postgres.sql dvbgrab/tvgrabbers: • • • func.inc.php tv_grab_novinky_cz xmltv_to_db.php dvbgrab/tvgrabbers/tv_grab_novinky_cz: • • tv_grab_novinky_cz.php uget.inc.php dvbgrab/users: • index.php 57 58 DODATEK F. OBSAH PILOENÉHO CD