Portál AbcLinuxu, 2. května 2025 20:32

DVB-T - automatizace

6.3.2006 04:21 | Přečteno: 2553× | poslední úprava: 6.3.2006 10:23

Poslední dobou mě zajímalo, jak nahrávat vysílání DVB-T v konzoli a hlavně případná možnost nahrávání celého multiplexu. Bohužel, k tomuto tématu neexistuje příliš dokumentace a o řešení typu vlc jsem neměl zájem. Pro nahrávání jednoho streamu (stanice) je možné s uspokojivými výsledky použít program tzap, nicméně tento program neumí nahrávat celý multiplex.

Po delším pátrání jsem našel sadu programů dvbutils, z nichž mě obzvlášť zaujal program dvbstream. Umožňuje mimojiné streamovat DVB přes síť, nicméně pro moje potřeby se mi zdál dostatečně malý a nepřeplácaný. Hlavní je, že umí naladit danou frekvenci a na definici stanic se neptá.

Bohužel, v Gentoo je dostupný pouze jeho bratříček - dvbtune, který má zřejmě podobnou funkci jako tzap, avšak neumí zpřístupnit dvb kartu pro následné nahrávání. Dovolil jsem si tedy zbastlit ebuild pro dvbstream, který se zdá být fukčním. Během tohoto procesu jsem ovšem narazil na problémy, a o hlavně nich bude tento příspěvek.

Prvním problémem je chybějící dokumentace, nepočítáme-li v to výpis přepínačů, spustíme-li program bez parametrů a samotný zdrojový kód. Navíc po chvíli studia zdrojáku vyjde najevo, že vypisovaný seznam přepínačů není ani úplný, ani dobře zdokumentovaný.

Základní syntaxe volání programu dvbstream, pokud nechceme streamovat (což je záměr), je: dvbstream -f frekvence -o v_pid a_pid. Přepínač "-f" specifikuje frekvenci, na kterou se má tuner naladit, ovšem je zde malý háček - frekvence je v kHz! Tento drobný nezdokumentovaný detail mi téměř přivodil stav šílenství a zatmění mysli. Další parametr "-o" říká, že si nepřejeme streamovat mpegy do sítě, ale chceme výstup na stdout. Parametry v_pid a a_pid jsou audio a video identifikátory jednotlivých PS streamů. Jdou například zjistit z tzapího channels.conf. Důležité je, že pokud zvolíme v_pid 8192 a a_pid vynecháme, bude se nahrávat celý multiplex.

Příklad: "dvbstream -f 560000 -o 8192 > cRa.ts" vyklopí do souboru celý multiplex Českých Radiokomunikací. To je všechno hezké, nicméně by to chtělo další fukce. Například parametr -n by měl nahrávat pouze n sekund. Potud je to dobré, jenže po chvíli (n sekundách), zjistíte, že to nefunguje. Průzkum bojem odhalil, že minimálně soubor dvbstream.c je napsán neuvěřitelně hnusně a minimálně parsování argumentů pomocí getopt() by potřeboval jako prase drbání. (Bugzilla na sf funkční řešení nenabízí, nicméně tento bug reportnutý je) Snad se někdy dostanu k tomu to přepsat...

Nyní budou následovat soubory...

dvbstream-0.5.ebuild:


# Copyright 1999-2006 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2 
# $Header: /var/cvsroot/gentoo-x86/media-tv/dvbstream/dvbstream-0.5.ebuild,v 1.1 2006/03/06 00:55:26 saruman Exp $

inherit eutils

DESCRIPTION="simple tuning app for DVB cards"
HOMEPAGE="http://sourceforge.net/projects/dvbtools"
SRC_URI="mirror://sourceforge/dvbtools/${P}.tar.gz"

LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~x86"


DEPEND="media-tv/linuxtv-dvb-headers"

src_unpack() {
 unpack ${A}
 epatch ${FILESDIR}/location.patch

}

src_compile() {
 emake dvbstream
}

src_install() {
 dobin dvbstream
 dodoc README scripts/*
}

files/location.patch:


*** dvbstream-0.5/dvb_defaults.h.orig 2002-07-06 10:43:12.000000000 +0200
--- dvbstream-0.5/dvb_defaults.h 2006-03-06 01:05:32.000000000 +0100
***************
*** 44,49 ****
--- 44,50 ----
  //#define UK
  //#define FINLAND
  //#define FINLAND2
+ #define CZ

  /* UK defines are at the end, as a default option */

***************
*** 60,65 ****
--- 61,80 ----

  #endif

+ #ifdef CZ
+
+ /* Czech settings */
+ #define DVB_T_LOCATION      "Praha"
+ #define BANDWIDTH_DEFAULT           BANDWIDTH_8_MHZ
+ #define HP_CODERATE_DEFAULT         FEC_2_3
+ #define CONSTELLATION_DEFAULT       QAM_64
+ #define TRANSMISSION_MODE_DEFAULT   TRANSMISSION_MODE_8K
+ #define GUARD_INTERVAL_DEFAULT     GUARD_INTERVAL_1_8
+ #define HIERARCHY_DEFAULT           HIERARCHY_NONE
+
+ #endif
+
+
  #ifdef FINLAND2

  /* FINLAND settings 2 (someone verify there is such environment) */

Tento patch nastavuje parametry vysílání pro ČR. Funguje jak pro multiplex CRa tak i pro CDG.

Tyto dva soubory uložte do /usr/local/portage/media-tv/dvbstream, odmaskujte v package.keywords, přesvědčte se, že máte nastaven PORTAGE_OVERLAY, spusťte ebuild dvbstream-0.5.ebuild digest a můžete kompilovat.

Přikládám i malý skriptík pro grabování multiplexu: getdvbmplex.sh


#!/bin/sh

#Pouziti: getdvbmplex frekvence cas vystupni_soubor
#kde "frekvence" je frekvence multiplexu v kHz, "cas" je doba nahravani v #sekundach a "vystupni_soubor" je jmeno souboru, kam se ziskana data ulozi

dvbstream -f ${1} 8192 -o > ${3} &
sleep ${2}
kill `pidof dvbstream`

Získaný transport stream můžete následně demuxovat pomoví ts2ps z balíčku libdvb, nebo pomocí javové aplikace ProjectX. O PX existuje zajímavé HOWTO na tvfreak.cz.

Závěrem: Doufám, že jsem podal srozumitelný návod, jak chytat celý multiplex v DVB-T a dále, že se někdy dostanu k opravám programu dvbstream. Mým finálním záměrem je postavit "nahrávací server" s webovým rozhraním, vybavený dvěma DVB-T tunery a dostatečným diskovým prostorem, kde by si známí mohli vždy minimálně od příštího dne "naklikat" pořady, o které by měli zájem a následně by se po propočítání časového rozpětí multiplex nahrál a demuxoval.

PS: používám tuner Technisat AirStar2, distribuci Gentoo, na přehrávání DVB primárně kaffeine a nainstalovaný software je z 95% z x86 větve.        

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 (1) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

Ondřej Kuda avatar 6.3.2006 08:25 Ondřej Kuda | skóre: 27 | blog: obcasny_blog
Rozbalit Rozbalit vše Re: DVB-T - automatizace
Odpovědět | Sbalit | Link | Blokovat | Admin
Zdravim, ja jsem pod FC 4 proste upravil zdrojaky a prelozil, no problem.

Pravda, nahravani po urcitou dobu fungovalo jen pri nejake kombinaci parametru. Zkousel jsem tez stream do site, ale kvalita byla priserna a zatez pocitace neodpovidajici. Jinak dokumentace mi prisla dostatecna - vypise rozumny help, hodne veci jde najit ve zdrojacich. Radeji VLC :-)
6.3.2006 10:20 Milan Beneš | skóre: 17 | blog: Kraft_durch_Freude
Rozbalit Rozbalit vše Re: DVB-T - automatizace
No, koukal jsem se na VLC už dřív, ale nelíbí se mi, že je příliš těžkotonážní - s mými USE flagy má cca 15 závislostí, mj. gecko-sdk apod.; zdá se mi nesystémové řešit to přes package.use. Taky mi není úplně jasné, jestli je možné vypnout streamování a použít VLC jenom pro nahrávání do souboru. O streamování nemám zájem. Dvbstream při ukládání do souboru nezabírá téměř žádné prostředky a kvalita vypadá, že je normální - žádný problém jsem nezaregistroval. Snažil jsem se o jednoduché řešení typu cat /dev/dvb/adapter0/dvr0 > file.mpg
Ondřej Kuda avatar 6.3.2006 10:48 Ondřej Kuda | skóre: 27 | blog: obcasny_blog
Rozbalit Rozbalit vše Re: DVB-T - automatizace
Ja pouzivam vlc*rpm, zkompiloval jsem to i bez nekterych zavislosti (zbytecne pro DVB-T, noGUI,...), ale komplet mi zase tolik nevadi.

Ano, streamovani neni nutne, lze pouze ukladat, lze vlastne strasne moc veci. Je to prehravac s mnozstvim dalsich funkci. Dvbstreamem jsem neukladal, pouze poustel do site. Kvalita byla nedivatelna, kosticky vsude a zasekavani obrazu.

Je pravda, ze vlc si po spusteni nabere prostredky, ale zase s tim vystaci a zbytecne nebere dalsi.

Jeste k tomu casovemu nahravani - zatim jsem nenasel nic, co by podporovalo i EPG a chytre nahravalo podle aktualniho zpozdeni programu z DVB-T. VLC to ma v planu, ale zatim podporu nikdo nedopsal. MythTV to umi pro analogovy teletext dostupny z netu, ale DVB EPG ne.
6.3.2006 11:46 D-Evil | skóre: 25 | Praha
Rozbalit Rozbalit vše Re: DVB-T - automatizace
Pro tenhle účel tuším stačí flagy dvb, dvbpsi, stream, připadně pak http (http interface pro ovládání) a vlm (pokud chcete pohodlně přepínat multiplexy).
Ondřej Kuda avatar 6.3.2006 09:00 Ondřej Kuda | skóre: 27 | blog: obcasny_blog
Rozbalit Rozbalit vše Re: DVB-T - automatizace
Odpovědět | Sbalit | Link | Blokovat | Admin
BTW vlc obsahuje i webove rozhrani na ovladani a pomoci VLM lze urcit, kdy se co bude nahravat. Podle me bude mnohem jednodussi upravit veci kolem vlc nez stavet vlastni.
6.3.2006 09:16 digri | skóre: 12 | blog: digri
Rozbalit Rozbalit vše Re: DVB-T - automatizace
Odpovědět | Sbalit | Link | Blokovat | Admin
Neco podobneho uz ma hotove Martin Jansa (dvbgrab), zkus google, ted je ten pocitac nejak down (jama.mk.cvut.cz).
6.3.2006 10:22 kaaja | skóre: 24 | blog: Sem tam něco | Podbořany, Praha
Rozbalit Rozbalit vše Re: DVB-T - automatizace
Odpovědět | Sbalit | Link | Blokovat | Admin
Docela zajimave je dvbd. Funguje to tak, ze bezi demon a na ten se pripojuji klienti, takze muzes prehravat (i nahravat) libovolne statnice z jenoho stremu najednou.

Založit nové vláknoNahoru

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