[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