如何用mplayer播放dvd以及用mencoder压缩DVD。(v0.1)
mplayer是linux下的好软件就不用我说了。不过,因为纯属命令行
方式,所以用起来真的不是很方便。但是也不是难到上青天的地步,
这里分享一下偶使用的一点点体会,(换句话说是在man page里爬
上爬下的体会)希望能帮到大家。
1,编译mplayer的注意事项
我用mplayer主要看常用的格式,所以,没有特别去下载特殊的codec,
但是,我最喜欢用mencoder压缩DVD,所以,编译的时候,一定注意要
先编译 lame,在sourcefourge里有,编译lame很简单,就是:
tar zxvf ...
./configure
make
make install
不过完了别忘了:
ldconfig
一下,好让稍后的mplayer编译找得到。
编译mplayer也很简单:
tar jxvf ...
./configure
make
make install
我所有东西都用缺省,不过倒是想做一个slackware的包,偷懒了,以后吧。:P
2,用mplayer看DVD
如果是 1.0 (per版本),一般要用下面的命令:
mplayer <a href="dvd://N" target="_blank">dvd://N</a>
这里的N是你的DVD的标题号,一般是 1,不过有时候有些DVD前面有好多广告,
后面有片断,这个时候,正文标题号可能就不是 1 了,那你就用 1,2,3,4 试试,
看看哪个是。
2.1快进
mplayer没有快放(我没玩出来),但是有快进,就是:
page up,每次进1000秒,
上箭头,每次进100秒,
右箭头,每次进10秒,
结合快进,我们可以找哪个DVD标题是正片,;-)
2.2全屏
f键,用于切换全屏。
2.3暂停
空格键
2.4字幕
这个复杂点,我搞了好久(可能笨吧,没仔细看man page :P)。
其实一点都不难,最简单的中文字幕(如果有)可以这么看:
mplayer <a href="dvd://N" target="_blank">dvd://N</a> -slang zh
这里的 N 是你的正片的DVD标题号,上面我介绍了找法了。
-slang 是字幕的意思,zh 就是中文啦。缺省编译安装的mplayer
可以直接出来中文字幕,条件是系统里一定要有中文ttf字体。
(这个属于 X 的汉化问题,到其它地方找解法吧,将来我的这个怎么办
也许会写进来。)
2.5语言
mplayer还可以选语言呢!不知道吧(嘿嘿,也许就我不知道),其实也很简单
-alang 选项:
mplayer <a href="dvd://N" target="_blank">dvd://N</a> -alang en -slang zh
上面这个意思就是用英文对白,中文字幕。
mplayer <a href="dvd://N" target="_blank">dvd://N</a> -alang zh slang en
就是中文对白,英文字幕
那位说了,要我不知道这个碟里面有啥语言,啥字幕怎么办。好办:
mplayer <a href="dvd://N" target="_blank">dvd://N</a> -vo null -ao null -frames 0 -v 2>&1 |grep sid
这样会列出DVD里字幕的列表,你会看到什么zh,fr,en,ja等字样。
像我看的肖申克的救赎D9,列出来就是这样:
mplayer <a href="dvd://1" target="_blank">dvd://1</a> -ao null -vo null -frames 0 -v 2>&1|grep sid
[open] subtitle ( sid ): 0 language: en
[open] subtitle ( sid ): 1 language: zh
[open] subtitle ( sid ): 2 language: zh
[open] subtitle ( sid ): 3 language: zh
[open] subtitle ( sid ): 4 language: ja
[open] subtitle ( sid ): 5 language: ja
mplayer <a href="dvd://N" target="_blank">dvd://N</a> -vo null -ao -null -frames 0 -v 2>&1 | grep aid
会列出所有支持的语言,还是上面那张碟:
mplayer <a href="dvd://1" target="_blank">dvd://1</a> -ao null -vo null -frames 0 -v 2>&1|grep aid
[open] audio stream: 0 audio format: ac3 (5.1) language: en aid: 128
[open] audio stream: 1 audio format: dts (5.1) language: en aid: 137
[open] audio stream: 2 audio format: ac3 (5.1) language: zh aid: 130
这里我们感兴趣的就是language:后面的以及叫xid的东西。(后面说怎么用
mencoder的时候要用到 )
这样,我要想看我这张肖申克救赎的英文对白,中文字幕,可以:
mplayer <a href="dvd://1" target="_blank">dvd://1</a> -alang en -slang zh
那位又说了,你上面字幕叫zh的好几个,啥意思啊?
其实我也不知道,那就看看呗:除了-slang选项,mplayer还支持-sid选项,
-slang是用国家代码表示字幕的方式,而-sid是用字幕标号(就是上面的sid 0, 1, ...)
这样,我们要选第二种中文字幕,可以:
mplayer <a href="dvd://1" target="_blank">dvd://1</a> -alang en -sid 2
结果一看,是中英文双字幕,英文在上,中文在下。这样,用快进和上面那条
命令结合,你就可以选合适的东西来看了。
我这里都是缺省啦,有配置文件我也没仔细看。总是我写的都是大陆货啦。:D
3,怎么用mencoder压缩
有时候想和朋友分享DVD,但是没DVD驱动器,怎么办,没问题,可以用mencoder
把4.5G的DVD压缩成700M左右,刻成光盘,或者是放在网上下载。mencoder压缩
DVD的方法有两种,一种是dvd-to-divx脚本的三遍法。不过这种方法比较慢,而且
有好多东西无法配置,于是就找了一种单遍法,用一条命令搞定:
mencoder -alang en -slang zh -aspect 16:9 <a href="dvd://N" target="_blank">dvd://N</a> -ovc -lavc -lavcopts vcodec=mpeg4:vhq:vbitrate=694 -vop scale -zoom -xy -640 -oac mp3lame -lameopts abr:br=128:vol=9 -o Outfile.avi
上面这里的
-alang
-slang
你可以用前面介绍的方法找出你自己需要的,也可以相应替换成
-aid
-sid
上面的
<a href="dvd://N" target="_blank">dvd://N</a>
里面的 N 就是前面用方法找出来的DVD正片的标题号,
这里面最难的是 vbitrate 的计算,不过还好有个现成的脚本可以计算这个数值,
我从linuxmedia找到的,贴在后面,稍微修改了一点最后输出的命令(因为发现
几乎所有的DVD的声音都偏小,于是,用vol参数放大了。)
这个脚本要求你输入DVD正片播放时间的总秒数,这个不难,我们可以用mplayer
来测:
mplayer <a href="dvd://1" target="_blank">dvd://1</a> -vo null -ao null
这个时候,mplayer在其控制台上会输出很多信息,类似:
A:7182.0 V:7187.0 A-V: ....
这个样子,这个就是已经播放的秒数,你可以用前面说的快进将DVD播放到接近最后
的位置,然后让DVD自然播放完毕,这样最后留下的数字就是正片总秒数。比如,我
这里压缩的兄弟连第一集,用这个方法最后得出的秒数是:
7512.5 秒
然后我们就用 dvd-ripping.sh 算一下这个 vbitrate:
dvd-ripping.sh 7513 (四舍五入)
脚本就会给你一条命令的建议,像这样:
mencoder <a href="dvd://1" target="_blank">dvd://1</a> -slang zh -ovc lavc -lavcopts vcodec=mpeg4:vhq:vbitrate=617 -vop scale -zoom -xy 640 -oac mp3lame -lameopts abr:br=128:vol=9 -o file.avi
适当修改这条命令,比如把file.avi改成对应的文件名(我的BandOfBrother-1.avi),
再运行它,你就可以开始压缩啦。不过压缩速度因机器速度而异,我在P3 500 5速DVD
上压缩肖申克的救赎,用了8小时。:P
还有一些其它技巧,比如crop掉电影两边的黑边等等,因为比较烦琐,以后的版本再
聊吧。
引用材料:
http://dvdripping-guid.berlios.de/
dvd-ripping 脚本:
#!/bin/sh
if [ $# != 1 ]; then
echo "Use: dvd-ripping <movie size in seconds>"
echo ""
exit 1
fi
MAXSIZE=700000
SEGUNDOS=$1
MINUTOS=$(($SEGUNDOS/60))
AUDIOSIZE=$((16*$SEGUNDOS))
LIBRE=$((MAXSIZE - $AUDIOSIZE))
RATE=$((($LIBRAE*8) / $SEGUNDOS))
echo "Calculating rate for movie which lasts $MINUTOS minutes.."
echo "Estimated rate $RATE"
echo "The command is: "
echo "mencoder <a href="dvd://1" target="_blank">dvd://1</a> -aspect 16:9 -slang zh -ovc lavc \
-lavcopts vcodec=mpeg4:vhq:vbitrate=$RATE \
-vop scale -zoom -xy 640 -oac -mp3lame \
-lameopts abr:br=128:vol=9 -o file.avi"
对于用mplayer 0.9x 的用户,把 <a href="dvd://N" target="_blank">dvd://N</a> 改成:-dvd N。
http://www.pgsqldb.org