[Mplayer-felhasznalok] miniDV -> DVD

Robert Klug rklug at arcor.de
Sun Dec 19 22:51:08 CET 2004


Sziasztok!

Azt vettem fejembe, hogy miniDV kameraval felvett videot megszurve, de fesusen 
(interlaced) irok at DVD-re. Az mplayer -vf szuroivel sokkal szebb eredmeny 
irheto el mint akar a kino lassu denoise - mpeg2enc parosa.

Azert nem akarok deinterlace szurot hasznalni, mert 
1. szerintem deinterlace-szel informacio (reszlet) vesz el
2. TV-n asztali lejatszoval nezve a DVD-t nem latszik a fesu, akkor se, ha 
framenkent leptetem a felvetelt
3. mplayer-rel nezve a -vf tfields=0,scale... segitsegevel se latszik a 
fesu ;)
4. amit egy haver windows alatt irt at ulead-del, az is fesus es igen jo.

DE hogyan lehet mplayer-rel jo minosegu interlaced mpeg2video-t csinalni? Az 
en megoldasomat alabb talalhatjatok. Elegge megszenvedtem vele.
A julius dvdiras threadet, az MPlayer-1.0pre5/TOOLS/mencvcd-t, 
a mjpegtools-1.6.2/mjpeg_howto.txt-t, man:mplayer-t es man:mpeg2enc-t 
hasznaltam fel a megoldashoz.

Eloszor az alabbi mplayerFilter-ben leirtakkal teszteltem a DV stream-ben a 
field sorrendet illetve az mplayer filtereit. Azt tapasztaltam, hogy a 
tfields - tinterlace paros csak az mencoder-rel mukodik, -vo yuv4mpeg eseten 
duplazodik a fps, akkor is ha a -vf szurok vegen tinterlace=0.
A -vf il=d egymas fole tenne a fieldeket, igy konnyebb lenne oket megnezni, 
tesztelni, de nalam az il=d hibasan, narancssarga foltosan valasztotta szet a 
fieldeket.
A '-vo png'-hez mindig kell a -vf vegere egy scale, a '-vo yuv4mpeg'-nek nem.

A hqdn3d=6:4:2 nekem eleg a zajszureshez, a smartblur=3:-0.4:-15 kiemeli az 
eleket. (Nem csak elkenni lehet a smartblur-ral :))

A fil=d ket kepet csinal a fesus kepbol, ezt a ket kepet szuri meg a hqdn3d es 
a smartblur, igy a szuroket nem zavarja az eredeti kepek fesus szerkezete, 
aztan fil=i ujra osszefesuli a kepeket.

Ez utan kovetkezik a meg nagyobb feladat, az mpeg2enc-nel elmagyarazni, hogy 
az asztali lejatszonk szamara emesztheto interlaced mpeg2-t encodoljon. Azert 
az mpeg2enc-t valasztottam, mert nem tudom, hogy a libavcodec-t hogyan kell 
intarleced mpeg2-hoz parameterezni.

Az mplayer '-vo yuv4mpeg' eseten ir egy stream.yuv-t, es azt irja a fejlecebe, 
hogy nem interlaced, azt plane nem hogy bottom first v. top first. Ezen lehet 
a 'yuvcorrect -T INTERLACED_BOTTOM_FIRST' segitsegevel valtoztatni.
Ugy tunik, az asztali lejatszonk csak I-P-B-B-P-...-I frameket szereti, az 
I-P-P-...-P-I sorozatot nem. Ezt az mpeg2enc-nek igy lehet elmagyarazni:

mpeg2enc -R 2 -P -I 1

De hogyan kell ezt megadni az ffmpeg-nek? (mencoder -lavcopts ???)

A -vf szuroknek ha'la, a DVD-n az atlagos bitrate kb. 5000, pedig az mpeg2enc 
-f 8 lenyegesen tobbet is engedelyezne. Koszonet erte!

Robi

--- mplayerFilter ---
# scale a -vo png-hez kell!!
# szuro es fazis teszt
mplayer -ao null -vf 
phase=b,tfields=0,hqdn3d=6:4:2,smartblur=3:-0.4:-15,scale=720:576 -sws 0 -vo 
png ../test001.avi
# fil=d teszt
#mplayer -ao null -vf fil=d,scale=1440:576 -sws 0 -vo png ../test001.avi
# fil=i teszt a bevalt szurokkel
#mplayer -ao null -vf 
fil=d,hqdn3d=6:4:2,smartblur=3:-0.4:-15,fil=i,scale=720:576 -sws 0 -vo 
png ../test001.avi

# elokeszuletek a yuv4mpeg-hez
mplayer -ao null -vf fil=d,hqdn3d=6:4:2,smartblur=3:-0.4:-15,fil=i -vo 
yuv4mpeg ../test001.avi
mkdir pnm
# mplayer nem ir aspect ratio-t a stream.yuv-ba 
# es not-interlaced/progressive-nek definialja
cat stream.yuv | yuvcorrect -T INTERLACED_BOTTOM_FIRST | y4mtoppm | pnmsplit - 
pnm/image%d.pnm
# pnmsplit nem ir nullakat sorozatszam ele
rm pnm/image?.pnm
--- end mplayerFilter ---

--- yuvpipe ---
#!/bin/sh

################################################################################
AUDIO="audiodump.wav"
VIDEO="stream.yuv"
NAME=$1

rm -f $VIDEO
rm -f $AUDIO
# create a named pipe for video stream
mkfifo -m 660 $VIDEO

# start mplayer
command="mplayer -noframedrop -ao pcm -vf 
fil=d,hqdn3d=6:4:2,smartblur=3:-0.4:-15,fil=i -vo yuv4mpeg -v $NAME.avi"
echo "$command"
$command &

# mpeg2enc options 
# -R 2 -> 2 b-per-refframe for -P 
# -f 8 -> DVD
# -n p -> PAL norm
# -a 2 -> aspect 3:4
# -g, -G GOP min/max
# -r search radius
# -q -4 -2 quality
# -I 1 -> interlaced frames

# mjpegtools 1.6.2
( cat $VIDEO | \
yuvcorrect -T INTERLACED_BOTTOM_FIRST -v 0 | \
mpeg2enc -v 0 -R 2 -f 8 -n p -a 2 -r 16 -q 7 -4 1 -2 1 -P -g 6 -G 15 -c -I 1 
-o $NAME.mpv ) &

# wait for finishing the subprocesses
wait

# remove pipe, won't need anymore!
rm -f $VIDEO

# -s 48 -> input smpl rate 48 kHz
# -b 224 -> total bitrate in kbps
toolame -s 48 -b 224 $AUDIO $NAME.mpa

# remove wav file, won't need anymore!
rm -f $AUDIO

mplex -f 8 $NAME.mpv $NAME.mpa -o $NAME.mpg

# clean up
rm -f $NAME.mpv $NAME.mpa
--- end yuvpipe ---




More information about the MPlayer-felhasznalok mailing list