Portál AbcLinuxu, 25. dubna 2024 15:46

DVB-T v Linuxu - 2

15.1.2010 16:57 | Přečteno: 3696× | Vše kolem GNU/Linuxu | poslední úprava: 15.1.2010 19:39

Když jsem nedávno psal zápisek o prvních zkušenostech s DVB-T, netušil jsem, jaké možnosti poskytuje program dvbstreamer. V diskuzi mne jam001 nakopnul, tak jsem se na něj podíval znovu, lépe a radostněji :-)

DVBStreamer

Zopakuji, že první inicializace se dělá příkazem

$ setupdvbstreamer -t ~/.mplayer/channels.conf
a program se spouští jednoduše
$ dvbstreamer
Můžeme ho spouštět rovnou s parametrem -o, kterým definujeme, kam nasměrujeme primární výstup. Například takto:
$ dvbstreamer -o udp://localhost:1234

Service filters
Při používání dvbstreameru používáme takzvané service filters. Na každý televizní kanál a na každé jeho směrování potřebujeme jeden filtr. Defaultně máme jeden primární – nazývá se <Primary> a součástí jeho názvu jsou i uvedené závorky. Další filtry si musíme sami vytvořit. To se dělá příkazem

addsf <NázevFiltru> <CílovýMRL>
Cílovým MRL mohou být udp (udp://<IP adresa>:<port>), rtp (rtp://<IP adresa>:<port>), soubor, do něhož se bude vysílaná stanice ukládat (file:///cesta/k/souboru), nebo null, který to bude zahazovat (null://)

Volba televizního kanálu
Takže filtry bychom měli (pokud jsme nespustili program s parametrem -o, nemáme nikam nasměrován primární filtr – jak na to, popíšu o něco níže). Teď do nich ještě musíme nějak poslat kanály, jejichž seznam získáme příkazem

lsservices
Provádí se to pro primární filtr příkazem:
select <channel>
(zároveň tím omezíme provoz na multiplex, ve kterém tento kanál je - teda vlastně neomezíte, ale pokud se o to pokusíte, zhroutí se s neoprávněným přístupem do paměti)

Pro další filtry se používá příkaz:

setsf <NázevFiltru> <channel>
Pokud chceme některý kanál změnit, uděláme to opětovným zadáním příkazu s názvem jiného kanálu.

Nastavení/změna cílového MRL
Cílový MRL jsme zadávali již při tvorbě filtrů. Ale vynechal jsem ten hlavní, primární, kanál. Obecně se MRL nastavuje a mění takto:

setsfmrl <NázevServiceFiltru> <CílovýMRL>
Primární kanál má ještě i svou zjednodušenou verzi, a to
setmrl <CílovýMRL>
Pár příkladů:
setsfmrl <Primary> udp://localhost:2222
který odvede stejnou práci jako jednodušší
setmrl udp://localhost:2222

setsfmrl sfNovaCinema-1 udp://localhost:2223
setsfmrl sfNovaCinema-2 file:///home/ota/zaznam.mpg
setsfmrl sfPrima null://
Ohledně null: Proč vůbec posílat stream do nikam? Může se to hodit, když například nahráváme program, chceme to ukončit, ale ponechat si filtr. Přesměrujeme tok dat do null, filtr zůstane, soubor se uzavře a je spokojenost :-)

Analogicky k setsfmrl můžeme pro zjištění MRL některého filtru využít příkaz

getsfmrl <NázevFiltru>
nebo pro primární zjednodušeně
getmrl

Likvidace filtru
Když se nám filtr omrzí, zlikvidujeme ho (kupodivu) příkazem

rmsf <NázevServiceFiltru>

Další užitečné příkazy:

DVBStreamer umí i nějaké další kejkle, jako třeba odfiltrování části streamu na různé MRL. Podařilo se mi to udělat jen se signálem z primárního filtru. Popíšu na konkrétním příkladu:

# naladím Primu:
DVBStreamer>select PRIMA
20cb.0202.0301 : "PRIMA"

# nechám si zobrazit všechny její PIDy:
DVBStreamer>lspids PRIMA
3 PIDs for "PRIMA" (Cached)
201 ITU-T Rec. H.262 | ISO/IEC 13818-2 Video or ISO/IEC 11172-2 constrained parameter video stream
211 ISO/IEC 11172 Audio
221 ITU-T Rec. H.222.0 | ISO/IEC 13818-1 PES packets containing private data

# vytvořím manuální filtry pro zvuk a obraz:
DVBStreamer>addmf mfobraz file:///home/ota/test.m2v
DVBStreamer>addmf mfzvuk file:///home/ota/test.m2a

# a těmto filtrům přidělím PIDy, které jsem získal příkazem lspids:
DVBStreamer>addmfpid mfobraz 201
DVBStreamer>addmfpid mfzvuk 211

# V tuto chvíli se začnou na uvedená MRL cpát data. Pokud chci, aby se 
# začaly soubory plnit současně (takhle to začne vždy ve chvíli odeslání
# příkazu addmfpid), zadám příkaz select PRIMA až jako  poslední.
# Odesílání dat potom začne až po jeho zadání. Když chci plnění souborů
# přerušit, odeberu PIDy:
DVBStreamer>rmmfpid mfobraz 201
DVBStreamer>rmmfpid mfzvuk 211

Jinak celkově – dokumentace na webu vůbec neodpovídá realitě, program obsahuje úplně jiné příkazy, než jaké jsou tam uvedeny. Příkazy na webu se slovním kořenem output mají v reálu kořen mf - tedy manuální filtr, o němž jsem se zmínil. Dále jsou tam příkazy s kořenem xpes, s nimiž jsem úspěšného výsledku nedosáhnul. I interní nápověda je velmi odfláknutá, help vám nevypíše parametry, ale příkaz řve, že jich má málo. Je to velká škoda, protože jinak tento program vypadá velmi použitelně a schopně.

A ještě jedna drobnost, se kterou si nevím rady: jak naladit Novu. Její název je totiž " NOVA" (bez těch uvozovek, ovšem včetně té mezery na začátku) – vyřešeno, děkuji Limotovi

       

Hodnocení: 100 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

15.1.2010 17:32 D-Evil | skóre: 25 | Praha
Rozbalit Rozbalit vše Re: DVB-T v Linuxu - 2
Odpovědět | Sbalit | Link | Blokovat | Admin
Už nevim kterýho programu se to týkalo (možná MPlayer), ale použití uvozovek (tj. " NOVA") u něj fungovalo.
otula avatar 15.1.2010 18:23 otula | skóre: 45 | blog: otakar | Adamov
Rozbalit Rozbalit vše Re: DVB-T v Linuxu - 2
Neboj, uvozovky jsem zkoušel jednoduché i dvojité, zkoušel jsem i zpětné lomítko… Bez šance :-(
Kdo vám tvrdí, že jste paranoidní, ten v tom spiknutí s největší pravděpodobností jede taky.
Limoto avatar 15.1.2010 18:21 Limoto | skóre: 32 | blog: Limotův blog
Rozbalit Rozbalit vše Re: DVB-T v Linuxu - 2
Odpovědět | Sbalit | Link | Blokovat | Admin
Tu Novu přejmenovat. V sqlitemanu otevřít ~/.dvbstreamerPadapter0.db a v tabulce services to přepsat...
otula avatar 15.1.2010 18:35 otula | skóre: 45 | blog: otakar | Adamov
Rozbalit Rozbalit vše Re: DVB-T v Linuxu - 2
Paráda! Díky!

Pro zoufalce, kteří by to chtěli udělat také, ale nevědí jak, tak takhle:
UPDATE services SET name = 'NOVA' WHERE id =513
Kdo vám tvrdí, že jste paranoidní, ten v tom spiknutí s největší pravděpodobností jede taky.
Limoto avatar 15.1.2010 18:43 Limoto | skóre: 32 | blog: Limotův blog
Rozbalit Rozbalit vše Re: DVB-T v Linuxu - 2
Proč tak složitě? Vždyť se to dá jednoduše naklikat...
otula avatar 15.1.2010 18:47 otula | skóre: 45 | blog: otakar | Adamov
Rozbalit Rozbalit vše Re: DVB-T v Linuxu - 2
Mně se to naklikat nepovedlo. Moc složité :-D
Kdo vám tvrdí, že jste paranoidní, ten v tom spiknutí s největší pravděpodobností jede taky.
otula avatar 15.1.2010 21:22 otula | skóre: 45 | blog: otakar | Adamov
Rozbalit Rozbalit vše Re: DVB-T v Linuxu - 2
Přílohy:
Tak jsem si ještě musel k tomu souboru adapter0.db odebrat práva pro zápis, protože jinak to dělalo takovouto ostudu:
DVBStreamer>lsservices
NOVA
NOVA CINEMA
PRIMA
Prima COOL
BARRANDOV TV
CT1 (MPEG-4 HD)
Nova (MPEG-4 HD)
O2 Info (MPEG-2)
Ocko TV (MPEG-2)
CT 1 JM
CT 2
CT 24
CT 4
TV Public
Z1
CRo1-Radiozurnal
CRo2-Praha
CRo3-Vltava
CRo Radio Wave
CRo D-dur
CRo Leonardo
CRo Radio Cesko
Proglas
DVBStreamer>select NOVA
20cb.0202.0201 : "NOVA"
DVBStreamer>lsservices
 NOVA
NOVA CINEMA
PRIMA
Prima COOL
BARRANDOV TV
CT1 (MPEG-4 HD)
Nova (MPEG-4 HD)
O2 Info (MPEG-2)
Ocko TV (MPEG-2)
CT 1 JM
CT 2
CT 24
CT 4
TV Public
Z1
CRo1-Radiozurnal
CRo2-Praha
CRo3-Vltava
CRo Radio Wave
CRo D-dur
CRo Leonardo
CRo Radio Cesko
Proglas
DVBStreamer>                      
A při tom opětovném měnění jsem se to tedy snažil naklikat, ale po 10 minutách jsem to vzdal a lupnul tam příkaz UPDATE :-) V první příloze je screenshot, jak to vypadá, když jen klikám, ve druhém jsem udělal výběr pomocí SELECT a chtěl to změnit v okýnku, ale je tam vidět, že to píše, že je to jen pro čtení. Takže fakt nevím, jak to naklikat, ale UPDATE to naštěstí jistí ;-)
Kdo vám tvrdí, že jste paranoidní, ten v tom spiknutí s největší pravděpodobností jede taky.
gtz avatar 15.1.2010 21:26 gtz | skóre: 27 | blog: gtz | Brno
Rozbalit Rozbalit vše Re: DVB-T v Linuxu - 2
Odpovědět | Sbalit | Link | Blokovat | Admin
PIP jste zkoušel ? Kaffeine to myslím stále neumí (Suse 11.2, Kaffeine 1.02-RC)
- nejhorší jsou trpaslíci ... Ti Vám vlezou úplně všude
otula avatar 15.1.2010 21:48 otula | skóre: 45 | blog: otakar | Adamov
Rozbalit Rozbalit vše Re: DVB-T v Linuxu - 2
Ne, nezkoušel. DVBStreamer by to měl umět? Více bych ocenil pauzování, jak umí Kaffeine. Zatím to řeším tak, že stream nahrávám na disk a zároveň ten uložený záznam čtu pomocí Xine, z něhož to posílám do televize.
Kdo vám tvrdí, že jste paranoidní, ten v tom spiknutí s největší pravděpodobností jede taky.
gtz avatar 15.1.2010 22:43 gtz | skóre: 27 | blog: gtz | Brno
Rozbalit Rozbalit vše Re: DVB-T v Linuxu - 2
Toto chápu, myslel jsem nativní podporu PIP ( tedy hlavní obraz+zvuk , sekundární pouze obraz ). Zkoušel jsem snad vše a zatím s tím byly jen problémy. Při multi-instanci když jsem laboroval s Mplayerem se to vždy nějak celé kouslo.
- nejhorší jsou trpaslíci ... Ti Vám vlezou úplně všude
otula avatar 15.1.2010 23:12 otula | skóre: 45 | blog: otakar | Adamov
Rozbalit Rozbalit vše Re: DVB-T v Linuxu - 2
Já jsem také pochopil (jen jsem zmínil, co mne trápí víc). Určitě by nebyl problém odsud posílat jeden kanál, kde by byl pouze obraz (naladit ho v <Primary> a přes manuální filtr vytáhnout jen stream s obrazem), a posílat další stream i se zvukem přes service filtr. Jen je otázka, v čem a jak to míchat.
Kdo vám tvrdí, že jste paranoidní, ten v tom spiknutí s největší pravděpodobností jede taky.

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.