Portál AbcLinuxu, 30. dubna 2025 17:07

Nahráváni televize z analogové PCI televizni karty

Nastavení tv karty

Nejprve je třeba rozchodit televizní kartu. Na rozdíl od MS Windows není přitom podstatný výrobce karty, ale použitý tv chip. Většina levných tv karet je postavena na chipu bt478 resp. bt878. Neplatí to např. pro tv karty od ATI aj.

Ovladače většinu tv chipů jsou součástí linuxového jádra a moje zkušenost je taková, že novější jádro 2.6 si při startu příslušný modul zavede samo. Problém ale bývá s nastavením typu a tuneru na tv kartě, ev. se zavedením modulu pro spuštění zvuku (u mne modul "btaudio"). V takovém případě pak nezbývá než při spouštění předat jádru informaci o typu tv karty.

Pokud máte kartu bez dokumentace (jako jsem měl např. já) tak nezbývá než otestovat o jakou kartu jde metodou pokus omyl. Jinak vám mohou pomoci soubory které můžete nalézt u zdrojáků jádra - v adresáři Documentation/video4linux. Jaký modul jádro pro kartu natáhlo můžete zjistit třeba z výpisu příkazu dmesg. Pro každý z těchto modulů je totiž jiný seznam.

Při hledání typu vaší karty vám také může pomoci příkaz lspci -n nebo lsusb( v případě že jde o tv kartu přes USB ) kartu pak můžete hledat v dokumentaci pomocí tzv. idVendor a idDevice (čísla ve tvaru 09da:000a).

Kupř. původní autor tohoto příspěvku má kartu Pinacle pro kterou jádro používá modul saa7134. Moje karta je PV951 a používá modul bttv. Aby však správně fungovala, musím modulu bttv při startu předat správné parametry. O jaký typ karty jde a jaký používá tuner.

Můžu to udělat několika způsoby. Buď hned při zavádění, nebo dodatečně modul odebrat a znovu zavést s příslušnými parametry z příkazového řádku.
sudo modprobe -v bttv card=42 tuner=1
sudo modprobe -v btaudio
Jenže při dodatečném zavádění je nutné odebrat nejprve hromadu jiných modulů a pak je ve správném pořadí zavést. Proto mi přijde jednodušší nastavit správné parametry modulu hned při startu.

V mém Debianu se parametry modulů při spouštění načítají z adresáře /etc/modprobe.d. V něm stačilo vytvořit soubor s následujícím obsahem:
# bttv
alias char-major-81 videodev
alias char-major-81-0 bttv
# ProVideo 951
options bttv card=42 tuner=1 radio=0 pll=1 adc_crush=0

Ladění kanálů

Aby bylo možno nahrávat - byť na příkazové řádce, je třeba mít tv kartu nastavenou na příslušný kanál. Tzn. pokud vaše tv aplikace už sama neumí nahrávat (jako např. xdtv) tak nastavit kanál ze kterého chcete nahrávat a aplikaci zavřít.

Původní autor k tomu používal aplikaci tvtime, já preferuji xdtv

Nahrávání

Původní autor nahrává z karty pomocí mencoderu z příkazové řádky:
mencoder -tv driver=v4l2:adevice=/dev/dsp1:audiorate=22050 \
            tv:// -oac copy -ovc lavc -lavcopts vcodec=mpeg4 -o film.avi 
Pro mě bylo pohodlnější přečíst si manuál k již zmíněnému xdtv a nastavit parametry pro nahrávání přímo v jeho konfiguráku. Nahrávání probíhá na pozadí normálně během sledování telky po stisknutí klávesy "R". Ukončí se opětným stiskem klávesy "R". xdtv si soubory s nahrávkou ukládá po názvem s časovým razítkem a názvem kanálu ze kterého se nahrávalo, takže se nemusím bát že by mi něco přemáznul. Cestu mám nastavenou do 40GB "chlívku", ale to bych musel mít pekelně dlouhou nahrávku.

Pro nahrávání je dobré trochu parametry omezit. Jednak analogový záznam stejně nemá tu kvalitu, aby stálo za to jej ukládat v plném PAL rozlišení. Cenou za to by byly zahozená okýnka a zbytečně velký soubor se záznamem..

Parametry pro nahrávání se nastaví v souboru xdtvrc (který můžete v domovském adresáři najít po prvním spuštění ve skrytém adresáři xdtv). Většinu z nich najdete tak jak je, stačí upravit jen některé. Tohle nastavení používám já:
#
# record options
#
container = AVI
codec = XviD
# velikost okýnka pro nahrávání, vyšší stejně nemá cenu
width = 384
height = 288
bitrate = 1200
quality = 1
# PV951 je mono
stereo_mode = no
audio_codec = LAME MP3
mp3_bitrate = 128
mp3_quality = 5
mp3_vbr_mode = no
mp3_vbr_quality = 8
fps = 25000
max_gap = 80
audio_fragments = 48
audio_sizefragment = 2048
min_quantizer = 2
max_quantizer = 8
audio_buffer_size = 1764
audio_freq = 44100
audio_fmt = s16le
# Na hdb1 mám 40GB místa, pak si to sestříhám
divx_path = /mnt/hdb1/record
display_frame = yes
record_sub = no
record_chg = yes
record_delay = 0
streaming_mode = no
streaming_http_port = 63427
preview_player = mplayer -nofs -quiet -nosound 

#
# record advanced options
#
ffmpeg_v4mv = no
ffmpeg_naq = no
ffmpeg_gray = no
ffmpeg_gmc = no
ffmpeg_qpel = no
ffmpeg_ildct = no
ffmpeg_keyint = 250
ffmpeg_vmax_b_frames = 0
ffmpeg_vlelim = 0
ffmpeg_vcelim = 0
ffmpeg_lumi_mask = 0
ffmpeg_dark_mask = 0
ffmpeg_tcplx_mask = 0
ffmpeg_scplx_mask = 0
ffmpeg_dia = 0
ffmpeg_cmp = 0
ffmpeg_subcmp = 0
ffmpeg_trell = no
ffmpeg_last_pred = 0
ffmpeg_predia = 0
ffmpeg_precmp = 0
ffmpeg_umv = no
ffmpeg_aic = no
ffmpeg_mbd = 0
ffmpeg_cbp = no
ffmpeg_obmc = no
ffmpeg_ss = no
ffmpeg_aiv = no
ffmpeg_loop = no
ffmpeg_ilme = no
xvid_vhq = 0
xvid_bvhq = no
xvid_chromame = no
xvid_chroma_opt = no
xvid_hqacpred = no
xvid_trell = no
xvid_cartoon = no
xvid_gray = no
xvid_interlacing = no
xvid_turbo = yes
xvid_qpel = no
xvid_gmc = no
xvid_keyint = 250
xvid_frame_drop_ratio = 0
xvid_vmax_b_frames = 0
xvid_bquant_ratio = 150
xvid_bquant_offset = 100
xvid_packed = yes
xvid_closed_gop = yes
xvid_bframe_threshold = 0
xvid_reaction_delay_factor = 16
xvid_averaging_period = 100
xvid_buffer = 100
xvid_max_I_quantizer = 12
xvid_min_I_quantizer = 2
xvid_max_P_quantizer = 12
xvid_min_P_quantizer = 2
xvid_max_B_quantizer = 12
xvid_min_B_quantizer = 2
Určitě by se to dalo nastavit lépe, ale mě to stačí. Výsledný záznam pak stříhám přes avidemux už bez jakékoliv rekompilace.

Problémy

Původní autor mívá následující problémy:

1) nekdy se jako prvni v seznamu objevi zvukova karta a jako druhy zvukovy cip na televizni karte. uvedeny priklad s mencoderem je uveden pro pripad kdy se zvukova karta objevi jako druhy device.

2) ziskane video nejde prehrat pod windows, asi to bude chtit vyzkouset ruzna nastaveni pro vystup videa.

Já tedy mívám občas problém jiný. Po startu systému se mi správně neaktivuje modul btaudio, a tak mám vytvořený skriptík, který přeháže moduly dodatečně. Někdy však zabere třeba až napodruhé.

Také je třeba dávat pozor při aktualizacích. Zrovna během předminulého týdne se mi stalo, že začal xdtv padat. Jak jsem zjistil, na vině byla "chybějící" knihovna - prostě ta stará byla nahrazena jinou. Takže stačilo jen instalační balíček xdtv překompilovat a všechno je zase OK.

Dokument vytvořil: sasa666, 14.1.2007 11:56 | Poslední úprava: Aleš Kapica, 16.1.2007 10:25 | Historie změn | Zobrazeno: 1037×

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

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