2017-08-20
dvd - mplayer - mencoder2006-04-05

Újra egy példa arra, hogy a megoldások további igényeket szülnek.

DVD-t másolni nem szoktam, és különösen nem igénylem halivúdi film-opuszok egy-az-egyben eltulajdonítását. Zenei felvételekkel, koncert-filmekkel, operákkal kapcsolatban viszont már többször felmerült, hogy egy sávot, esetleg csak néhány részletet meg tudjak osztani a kollégákkal. Hasznos lehet, ha konzíliumot tudunk tartani fölötte, de tanításhoz demonstrációs eszközként is nagyon jól jöhet egy-egy jelenet.

Amikor Eugen Jochum egy felvételéről írtam recenziót, többen is szóltak, hogy a Bruckner szimfónia előadását szívesen összevetnék tapasztalataikkal. Egy egész DVD-t lemásolni nem illik, de ebben az esetben nem is praktikus. Valami ok miatt sok DVD, ha kevéssel is, de több tárhelyet igényel, mint 4.3 Gigabájt. A double layer írható DVD nem olcsó, ráadásul ha csak azért kellene, hogy a kiadó más filmjeinek a reklámja is ráférjen...

Ekkor döntöttem úgy, hogy egy kicsit mégiscsak foglalkozom kell a linuxos videózás lehetőségeivel.

Nem használom, de azért ideírom. Körülbelül így kellene egy komplett DVD-t átmásolni:

Mentés fájlba

vobcopy -m
mkisofs -dvd-video -o isofile.iso könyvtár

Aztán maga az írás

growisofs -dvd-compat -Z /dev/dvd=isofile.iso

A bevezetőben említett esetben csak a második sávra volt szükségem. (Az elsőn csak a forgalmazó logója van, és persze a figyelmeztetés! :-)

Ennek a leszedésére azt a 'mencoder' parancsot használhatjuk, amihez az 'mplayer' lefordításával és telepítésével jutottunk. A kétmenetes tömörítésre konkrét példát is találunk a (magyar nyelvű) dokumentációban. A filmet sikerült is ezzel leszedni, de kisérő-hang helyett csak sistergést kaptam. Mivel koncert-videóról van szó, nekem a hang szinte fontosabb a képnél. Szerencsére elég volt a 'copy' helyett pontosan megadni a kimeneti hang-kódolás módját (pcm), és ezután már nem volt semmi gondom.

mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 -oac pcm -o /dev/null

Ez a parancs a videó kimenetet létre sem hozza, (pontosabban a /dev/null névre hallgató fekete lyukba irányítja). A művelet eredménye mindössze egy naplófájl, ami pontos jegyzőkönyvet tartalmaz a divx számára. Ezekután a következő lépésben történő "valódi" beolvasáskor az enkóder már minden egyes képkockáról előre fogja tudni, hogy milyen változásokra kell felkészülnie. Ezzel a kétlépéses módszerrel igen jó képminőséget lehet elérni. (TV-n lejátszva nem nagyon látok különbséget az eredeti és a tömörített változat között.)

mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:vpass=2 -oac pcm -o kimenet.avi

Erősebb kompresszálásra nem volt szükségem. A koncert teljes anyaga három fájl, így tömörítetlen hangsávval is csak 1,6 Gigabájt helyet foglal. Ezt már könnyen fel tudom írni - pedig az eredeti csak double-layer DVD-re fért volna el.

Egy windows-on szocializálódott felhasználónak esetleg ijesztő, hogy valamit csak ilyen bonyolult módon - parancssorban - lehet megoldani. Valójában lehetne másképp is, de az egyes funkciók tisztázása után a parancssor fantasztikus rugalmasságot biztosít. Meghatározom, hogy honnan jöjjenek az adatok, majd hová menjenek, és a különböző kapcsolókkal leírhatom, hogy a kettő között mi történjék velük. Mi van például, ha a filmet nem DVD-ről akarom rögzíteni?

Semmi! Jöjjenek például a tv-tuner kártyáról!

mencoder tv://1 -tv driver=v4l2:device=/dev/video0:audiorate=44100:alsa -oac lavc -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=600:acodec=mp3:abitrate=128 -o test.avi -vf pp=fd

folytatása következik...(2006.04.10.)

Méghozzá máris!

Természetesen a tv felvételnél nincs mód két menetes kódolásra. A fix 600-as bitráta viszont elég gyatra képet eredményez. Így percenként körülbelül 6 MB lesz a kész anyag, míg 1200 esetén kb 10, de sokkal jobb minőségben. Szóval lehet kalkulálni...
És ha egyáltalán nem tömörítek? Mondjuk egy operafelvételt szeretnék képileg-hangilag maradéktalanul megőrizni.
Az alábbi paranccsal próbálkoztam:

mencoder tv://96 -tv driver=v4l2:device=/dev/video0 -ovc copy -oac pcm -o test2.avi -vf pp=fd -endpos 60

(Az -endpos 60 másodpercnél leállítja a felvételt.) Sajnos a lejátszáskor akad egy-egy dropout. Úgy tűnik a merevlemez nem győzte nyelni a bájtokat. Ezen viszonylag egyszerű segíteni, ugyanez a felvétel SATA merevlemezre írva hibátlan. De az egy perces fájl 670 MB! Egy rövidebb opera lenne mondjuk 50 Giga. Igaz, hogy ezen a fájlon már lehetne "ráérős" optimalizált tömörítést alkalmazni, de még kérdéses, hogy a rengeteg macera megéri-e?

Az 1200-as bitrátával tömörített kép (mp3 hanggal) észrevehetően fakóbb, de ha nem rögtön a tömörítetlen után nézem meg, nem fáj nagyon. És az említett rövidebb opera elfér egyetlen CD-n.

Ugyanez 600-zal már nem jelent akkora megtakarítást, a kép pedig kockákra esik. Fontos felvételt nem szabad ilyen beállítással csinálni - de talán kevésbé fontosat sem.

Nem hagyom abba a kisérletezést...


Itt van rögtön még egy tapasztalat. Egy fájlba-kódolást magára hagytam éjszaka. (Míg Ön alszik, a gép dolgozik.)
A mintegy kétórás film mpeg4-be írva készen várt reggel, viszont a sérült lezárás miatt az mplayer nem volt képes előre-hátra léptetni, keresni a fájlban. Az "index" hiánya lejátszásnál könnyen orvosolható:

mplayer -idx sérült.avi

De ettől a fájl még úgy marad. A végleges megoldás nagyon egyszerű, és pár perc alatt készen is van!

mencoder serult.avi -o javitott.avi -forceidx -ovc copy -oac copy


Ha videót akarsz beszúrni - például blogba - akkor erre is gyakran szükség lehet:

mencoder {eredeti.avi} -of lavf -oac mp3lame -lameopts abr:br=56 -srate 22050 -ovc lavc -lavcopts vcodec=flv:vbitrate=500:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -o {flashvideo.flv}


Végül: az összegyűjtött videókat nem fájlként akarod DVD-re írni, hanem úgy, hogy azt az asztali DVD fejezet-címenként tudja lejátszani...
Először vob-fájlokat készítek belőlük.

for i in a_*.avi; do ffmpeg -i "$i" -target pal-dvd -acodec copy "$i".vob ; done

Az DVD írandó fájlokat a dvdauthor fogja kiírni (dvdauthor -x control.xml -o dvd-out-folder), de ehhez először kell egy vezérlő xml fájl, aminek a tartalma ilyesmi:

<dvdauthor>
<vmgm>
</vmgm>
<titleset>
<titles>
<pgc pause="0">
<vob file="00_elsofilm.vob" pause="0" />
<vob file="01_masodikfilm.vob" pause="0" />
<vob file="02_harmadikfilm.vob" pause="0" />
<vob file="0x_satobbifilm.vob" pause="0" />
</pgc>
</titles>
</titleset>
</dvdauthor>

természetesen az iso-fájlt is parancssorból hozzuk létre

genisoimage -o kesziso.iso -dvd-video dvd-out-folder/ls -l

status