Mplayer和Mencoder对DVD的播放与抓取
老婆又下达任务了,这次是要把同事借给她的港剧DVD抓到iPodTouch里. 因为是土制港剧集成DVD,声道选择应该可以无视.基本步骤是这样滴…
播放
mplayer 播放dvd基本是这样的:
mplayer dvd://
用下来发觉我电脑里这样找不到碟,原来要指定以下设备:
mplayer -dvd-device /dev/sr0 dvd://
字幕要看一下… 用mplayer 的 -identify参数可以获得一些基本信息. 包括有几个章节,哪些字幕可选.
#!/bin/bash mplayer -dvd-device /dev/sr0 dvd:// -identify -frames 0 -vc null -vo null -ao null
播放一段试试看,指定开始和结束章节和字幕1:
#!/bin/bash mplayer -dvd-device /dev/sr0 dvd://$1-$2 -sid 1
好了,可以正常播放了, 接下来的事情就交给mencoder/ffmpeg了.
抓取和转码
mencoder和mplayer共享很多参数,基本就是这样的
#!/bin/bash mencoder -dvd-device /dev/sr0 dvd://$c -o $c.avi -oac copy -ovc lavc -lavcopts vcodec=mpeg4 -quiet
根据参数转某个章节
这里没有直接转码成iPhone/iPodTouch需要的h264.因为我实在对自己的mencoder解码参数没有信心, 以前blog过,效果不怎么好,写出来因该是这样的:
#!/bin/bash mencoder -dvd-device /dev/sr0 dvd://$c -o $c.mp4 -vf scale=480:320,harddup -of lavf -lavfopts format=ipod -alang en -sws 2 -oac faac -faacopts br=128:mpeg=4:object=2:raw -srate 44100 -ovc x264 -x264encopts bitrate=800:nocabac:level_idc=30:bframes=0:global_header:threads=2:subq=5:frameref=6:partitions=all:trellis=1:chroma_me:me=umh
还是ffmpeg顺手些,先弄成avi再用ffmpeg转吧,最近用的比较多的参数:
#!/bin/bash ffmpeg -i "$1" -acodec libfaac -ab 192k -ar 48000 -vcodec libx264 -b 768k -s 480x320 -aspect 3:2 -r 26 -flags +loop -cmp +chroma -partitions +parti4x4+partp8x8+partb8x8 -me_method dia -subq 1 -trellis 0 -refs 1 -bf 16 -b_strategy 1 -coder 1 -me_range 16 -g 250 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -bt 500k -qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -threads 0 -f mp4 -y $1_iphone.mp4
这里没有考虑DVD的切割,音轨等问题,网上有好多高人说的详细的多…
Windows的话,ffmpeg,mplayer,mencoder的参数是没区别的,就是DVD设备路径不同而已. Windows的上述软件的binary也是很好找的…

Discussion