Felvétel mencoderrel analóg tunerkártyáról

Évek óta használtam mencodert felvételre mpeg4 codeccel, amolyan jól bejáratott jelleggel.

Most viszont kiváncsi voltam azonban az x264 codecre, ehhez néhány napja fordítottam mplayer svn t, mert az outdatedben levő számomra használhatatlan volt.

A múltkori "frissített mplayer fordítási tapasztalatokkal" :-) ez cka fél órán belül megvolt,az összes a rendszerem által elérhető cuccot kiválasztottam, így x264 is megvolt.
Nem volt más hátra mint a paraméterekkel játszani.
Lustaság fél egészség, úgyhogy erre ma este került sor.

Az oldalt az egyik beillesztett parancs jól széthúzhatja, de akkor sem fogom megbontani, így jártatok. :D

Jelenleg 3 aktív felbontást használok:
1280x1024, 1024x768, 640x480.

Legutóbbit használom tévénézésre, az elsőt a normál számítógéphasználathoz. Csak egy ctrl-alt-NumPad+ és kész is :-)

Az ágy cka 3 méterre van a "tévétől", ami most egy 17'' es 1280x1024 es lapos monitor. (AL1715).
A felbontás a teletext miatt kerülhet átállításra, már amikor át kerül, esténként szoktam használni ezt a felbontást, napközben ritkán,
Az AleVT így 640x480 al olvasható ilyen távolságból. Az mplayer teletext módja, meg khm, szóval nemjönbe.
Teletextre még mindig alevt a legjobb nekem már évek óta. :-)

Történeti visszatekintés

Anno, egy 14'' CRT monitorral 384x288 (?) ban vettem fel eleinte a cuccost, és 576x432 es volt a "fullscreen es lejátszás".
Akkor a normál számítógéphasználati felbontás 800x600 volt. És már akkor is ezzel a tunerkártyával :-)

Ami még fontos számomra: a fájl mérete.

Megrögzött helyspórolos vagyok, ha rajtam múlna, a vinyógyártók (is) évekkel ezelőtt csődbe mentek volna :D.

Szóval a feladat :
- 1 órás felvételi "anyagot" minél kisebbre összezsúfolni
- 640x480 méretben 3 méterről számomra megfelelő minőségben láthassam
- ne szaggasson
- ne csússzon el a hang
- ne legyen érezhető framedrop /képeldobás/.

Elég rossz szemem van, még pápaszemmel is könnyen becsapható vagyok, szóval itt volt némi mozgástér,
de azért asszem a végletekig feszítettem a húrt. A végeredmény a következő lett:


mencoder -tv driver=v4l2:outfmt=i420:buffersize=72:width=640:height=480:chanlist=europe-east:channel=SE11:alsa:adevice=hw.2,1:audiorate=44100:amode=0:volume=0:fps=25 -vc rawi420 -ovc x264 -x264encopts subq=5:partitions=4x4:8x8dct:frameref=3:me=hex:bframes=4:b_pyramid:pass=1:bitrate=470:threads=2 -af-add resample=44100:0:2 -srate 44100 -oac mp3lame -lameopts abr:br=44 -vf pp=tn/lb,scale=640:480 -nobps -endpos 01:15:02 -o $uff tv://

Végülis ez vált be. Ez egy 1 óra 15 perc 2 msp es felvétel volt a sport1ről.
Épp focimeccs ment, sok mozgással, kevés állóképpel, ideális volt felmérni a helyzetet.
Állókép is volt, mikor a stúdióban pofáztak. A mozgásnál néha kockásodott a dolog, de ez a kockásodás nálam még belefér.
Szaggatás nincs. Meg ne kérdezzétek melyik videó opció miért van. Ex-has játszottam a paraméterekkel, ez lett a vége, éljen a káosz.
A végére biztos maradt egy csomó felesleges, ránézésre a scale mindjárt, de mostmár így marad.

A volume 0, nem elírás, nem átverés, valamiért így jó. :-)
Valami oka volt szerintem, hogy ez került a szkriptbe, így járódott. Működik. Lehet hogy sercegés, vagy héliumszerű cérnahangok miatt
került bele, gőzőm sincs. Működő rendszert nem rontok el, így marad :-).

Az alsa hw azért 2,1 mert így snd-bt87x jön képbe és analóg módban. Erre még emléxem :-)
Ez egy őskori analóg, "mono hangos" tunerkártya / Askey TvView'99 - Temic PAL 4002FH5 tunerrel /,
a hang hátul van kábellel összekötve a hangkártya Line In jébe.
Itt nincsenek ilyen alaplapra csatlakoztatható cuccosok. :-)

A normális hangkezeléshez bizonyos spéci beállítás szükséges.

Alsa eszközök


oscon@osconsfortress:~$ cat /proc/asound/cards
 0 [SB             ]: HDA-Intel - HDA ATI SB
                      HDA ATI SB at 0xf9ff4000 irq 16
 2 [Bt878          ]: Bt87x - Brooktree Bt878
                      Brooktree Bt878 at 0xf8ffe000, irq 21
 3 [VirMIDI        ]: VirMIDI - VirMIDI
                      Virtual MIDI Card 1
oscon@osconsfortress:~$

Hangerőszabályzó

alsamixer -c 2 : capture boost off, capture 0, TV tuner (itt capture flag természetesen beállítva).

A modprobe.d jelenlegi állapota (ez kernelverziónként változhat, ahogyan piszkálják a kernelfejlesztők az alsa paramétereket:)


oscon@osconsfortress:~$ cat /etc/modprobe.d/sound
alias char-major-116 snd
alias char-major-14 soundcore
alias snd-card-0 snd-hda-intel
alias snd-card-1 snd-emu10k1
alias snd-card-2 snd-bt87x
alias snd-card-3 snd-virmidi
options snd major=116 cards_limit=4 slots=snd-emu10k1,snd-hda-intel,snd-bt87x,snd-virmidi
options snd-hda-intel enable=1 index=0 power_save=77 model=6stack-dig
options snd-emu-10k1 index=1 enable=1
options snd-bt87x index=2 enable=1 load_all=1 digital_rate=48000
options snd-virmidi midi_devs=1 enable=1 index=3
alias sound-slot-0 snd-card-0
alias sound-slot-1 snd-card-1
alias sound-slot-2 snd-card-2
alias sound-slot-3 snd-card-3

alias sound-service-0-0 snd-mixer-oss
alias sound-service-0-1 snd-seq-oss
alias sound-service-0-3 snd-pcm-oss
alias sound-service-0-8 snd-seq-oss
alias sound-service-0-12 snd-pcm-oss

alias sound-service-1-0 snd-mixer-oss
alias sound-service-1-1 snd-seq-oss
alias sound-service-1-3 snd-pcm-oss
alias sound-service-1-8 snd-seq-oss
alias sound-service-1-12 snd-pcm-oss

alias sound-service-2-0 snd-mixer-oss
alias sound-service-2-1 snd-seq-oss
alias sound-service-2-3 snd-pcm-oss
alias sound-service-2-8 snd-seq-oss
alias sound-service-2-12 snd-pcm-oss

alias sound-service-3-0 snd-mixer-oss
alias sound-service-3-1 snd-seq-oss
alias sound-service-3-3 snd-pcm-oss
alias sound-service-3-8 snd-seq-oss
alias sound-service-3-12 snd-pcm-oss
oscon@osconsfortress:~$

Most hogy látom nem értem a digitalrate miért 48000, de most már így marad, valami oka biztosan volt, hogy azt írtam bele anno :D

Ezt azért írom le, mert egyrészt el fogom felejteni 1 óra múlva, és ha 2 év múlva valamiért kell,

/ pl. felteszek egy debian-kfreebsd squeeze t :-), és emiatt újratelepítek

akkor itt megtalálom, másrészt meg, hébe hóba voltak topikok a hupon fórumban,
ahol analóg tunerkártyával szenvedtek mert nincshang, rosszahang, serceg mittomén.

A hátsó kábeles összeköttetés miatt felvételkor természetesen áthallás van.
Tehát felvétel közben elvileg hallani a hangot. Ez nekem nem jön be, úgyhogy:

A felvételi szkriptben ezért:

 amixer set 'Line',0 0

előzi meg a mencoder parancsot.

A mencoder után pedig:

amixer set 'Line',0 30

Szóval a gányolás jó mert egészséges, gyors, és működik :D.

A mencodert ellátom majd élesben egy --really-quiet/quiet kapcsolóval, hogy ne szemeteljen a logba,
csak most mivel első körben tesztüzem volt, meghagytam hagy pofázzon.

Kis info még a végére:


Selected device: BT878 video (Askey CPH06X TView
 Tuner cap:
 Tuner rxs: MONO
 Capabilites:  video capture  video overlay  VBI capture device  tuner  read/write  streaming
 supported norms: 0 = NTSC; 1 = NTSC-M; 2 = NTSC-M-JP; 3 = NTSC-M-KR; 4 = PAL; 5 = PAL-BG; 6 = PAL-H; 7 = PAL-I; 8 = PAL-DK; 9 = PAL-M; 10 = PAL-N; 11 = PAL-Nc; 12 = PAL-60; 13 = SECAM; 14 = SECAM-B; 15 = SECAM-G; 16 = SECAM-H; 17 = SECAM-DK; 18 = SECAM-L; 19 = SECAM-Lc;
 inputs: 0 = Television; 1 = Composite1; 2 = S-Video; 3 = Composite3;
 Current input: 0
 Current format: BGR24
v4l2: current audio mode is : MONO
Selected channel: SE11 (freq: 231.250)
[V] filefmt:9  fourcc:0x30323449  size:640x480  fps:25.000  ftime:=0.0400
Pos:4502.0s 112697f ( 0%) 25.00fps Trem:   0min   0mb  A-V:0.000 [461:42]
Flushing video frames.
Writing index...
Writing header...
ODML: vprp aspect is 4:3.
Setting audio delay to 0.078s.

Video stream:  461.128 kbit/s  (57641 B/s)  size: 259513641 bytes  4502.240 secs  112697 frames
Audio stream:   42.259 kbit/s  (5282 B/s)  size: 23781084 bytes  4502.021 secs

v4l2: 112700 frames successfully processed, 2 frames dropped.

A fájl mérete: 290195352 byte = 278 Mbyte. Ez 75 perc anyagra nekem tökéletesen megfelel, percenként kevesebb mint 4 megát foglal.
A szükséges, és számomra tökéletes kompromisszum. Ezennel a vcodec=mpeg4es szkripteket nyugdíjaztam.

A felvett műsor felvétel közben pl. mplayer -noidx paraméterrel nézhető. Tekerni ilyenkor nem lehet értelemszerűen. :-)