- 论坛徽章:
- 0
|
在网上找到了一份转DVD的。
1. 音频编码:
mencoder -ovc frameno -o frameno.avi -oac mp3lame -lameopts abr:br=96 -alang en VTS_01_1.VOB
稍微解释一下参数的意思:一般字母o开头的参数就是指output的意思了, a就是audio, v是
video, c是codec, br是bit-rate(br有几
种:vbr, abr, cbr。v,a和c意思分别是variable,average和
constant。) alang是指audio language。en是英文,中文是zh。有时可能会有两个声道,
都是中文(zh),一个普通话,一个广东话。这时就不能用alang这个参数了,要用-aid。还有,就是这里用了LAME的mp3编码。
总之,这行命令中需要改的就是"en"和文件名了。"96"也可改成128,但最终的文件可能会比较大。frameno和frameno.avi不要改。
2. 视频编码:(1st pass)
mencoder -oac copy -o /dev/null -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=576:vhq:vpass=1 -vf scale=640:480,crop=640:344:0:66,lavcdeint VTS_01_1.VOB
这里用了libavcodec来做mpeg4的编码。最重要的就是-vf了,vf意思是video filter。所有的
filters要用逗号隔开。我用了scale,crop和lavcdeint三个filters。scale就是把DVD原本的
720x576变成640x480。crop就是把已经scaled成640x480的图像继续切成640x344。0:66是告诉mencoder从什么地方开始切,从左上角开始算,横者数0,竖者数66。注意切出来的图像最好是8的整数,如上面的344。lavcdeint就是de-
interlace,不知道中文怎么译。如果你弄出来图像上能看到明显的横纹,就要加上这个选项。
3. 视频编码:(2nd pass)
mencoder -oac copy -o mymovie_1.avi -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=576:vhq:vpass=2 -vf scale=640:480,crop=640:344:0:66,lavcdeint VTS_01_1.VOB
在first pass里我们已经看到,输出是到/dev/null的,也就是丢掉不要了。输出的只有divx2pass.log这么
一个文件。到了这个second pass,就要在-o后面放上真正的文件名了。还有就是把vpass改成2。我用的
vbitrate=576是为了控制2小时10分钟片子压到小于700MB。我记得音频部分做完时会有一个建议的vbitrate,可以参考。
好了,已经把第一个vob变成avi了。然后删掉divx2pass.log和frameno.avi,重复上面的步骤,把所有的vob都变成avi。
4. 把所有的avi文件用下面的命令处理一下
mencoder -idx mymovie_1.avi -ovc copy -oac copy -o mymovie_1_out.avi
5. 合并所有的avi成一个文件
cat mymoive_1_out.avi mymoive_2_out.avi ... mymoive_8_out.avi > mymovie.avi
mencoder -noidx -ovc copy -oac copy -o mymovie_final.avi mymove.avi
OK! 搞定!dvd我们一般把它rip成avi格式。用的编码一半是xvid.mpeg4,lavcopts,质量较好的编码一半选用3pass编码
方式,得到的文件大小一般也是700M左右。就是说要编码三次。(可惜不能用rmvb,它就比avi小多了,质量也很好)。
第一次是音频编码,可以顺便剥离字幕,第二次是第一次视频编码,主要为了得到一个编码表,第三次就是按照第二次得到的码表再次编码,顺便把第一次得到的音频合成进去。
简单的就如下:
PHP代码:
3-pass编码的例子:dvd-rip
rm frameno.avi -- 移去这个文件,它可能来自以前的3-pass编码(它会干扰当前编码)
mencoder dvd://2 -ovc frameno -o frameno.avi -oac mp3lame -lameopts vbr=3
mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 -oac copy -o movie.avi
mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=2 -oac copy -o movie.avi
不知道哪里还没有明白。大家主要还是看doc文档和man吧。很详细的。
标题: 菜鸟rip DVD - 留此存照
老婆借了盘DVD,非要让我把它想办法留下来。保存.vob是不现实了。
为了给老婆展示一下Linux的强大,特地到网上攻读了一番,现留此存照。
很可惜的是:工作的最开始还是用了一下Windows,因为我的机器都
没有DVD-ROM, 所以用别人的机器把那些VOB文件copy下来,然后
上传到我的Linux服务器上。这台机器上没有X Window, 所以下面全部
的工作都是ssh到服务器上,然后在命令行下做的。
以下文字参考了下面列的几个网站:
1.
http://www.bunkus.org/dvdripping4linux/en/separate/
该教程也算是经典,google时基本上是第一个。但有些老,有些
mencoder的参数过时,或已经不能用了,例如:de-interlace。
2.
http://www.mjmwired.net/resources/mplayer-fedora.shtml
该教程是安装MPlayer(包括MEncoder)。主要针对Fedora3, 但
其他distros也可以参考。象Gentoo, 我知道用上适当的USE flags,
ACCEPT_KEYWORDS="~x86" emerge mplayer 就可以了。
值得注意的就是要装上LAME(mp3的编码器),而且要先装LAME,再
编译MPlayer。Gentoo可以USE="lame"。
3.
http://www.mplayerhq.hu/DOCS/man/en/mplayer.1.html
最强大的资料末过man page了,当然我是没认真读了,只是需要的
时候,到里面查了几次。crop和de-interlace的功夫就是从这里学的。
4. 再有就是MPlayer的user mailing-list. 实际上,你根本不用问,
只要search就好了,你碰到的问题十有八九都被问过了。在这些
mailing-list上问FAQ不太好。
话不多说,言归正传。
1. 音频编码:
mencoder -ovc frameno -o frameno.avi -oac mp3lame -lameopts abr:br=96 -alang en VTS_01_1.VOB
稍微解释一下参数的意思:
一般字母o开头的参数就是指output的意思了, a就是audio, v是video, c是codec, br是bit-rate
(br有几种:vbr, abr, cbr。v,a和c意思分别是variable,average和constant。) alang是指
audio language。en是英文,中文是zh。有时可能会有两个声道,都是中文(zh),一个普通话,
一个广东话。这时就不能用alang这个参数了,要用-aid。还有,就是这里用了LAME的mp3编码。
总之,这行命令中需要改的就是"en"和文件名了。"96"也可改成128,但最终的文件可能会比较大。
frameno和frameno.avi不要改。
2. 视频编码:(1st pass)
mencoder -oac copy -o /dev/null -ovc lavc -lavcopts
vcodec=mpeg4:vbitrate=576:vhq:vpass=1 -vf
scale=640:480,crop=640:344:0:66,lavcdeint VTS_01_1.VOB
这里用了libavcodec来做mpeg4的编码。最重要的就是-vf了,vf意思是video filter。所有的
filters要用逗号隔开。我用了scale,crop和lavcdeint三个filters。scale就是把DVD原本的
720x576变成640x480。crop就是把已经scaled成640x480的图像继续切成640x344。0:66是
告诉mencoder从什么地方开始切,从左上角开始算,横者数0,竖者数66。注意切出来的图像
最好是8的整数,如上面的344。lavcdeint就是de-interlace,不知道中文怎么译。如果你弄出
来图像上能看到明显的横纹,就要加上这个选项。
3. 视频编码:(2nd pass)
mencoder -oac copy -o mymovie_1.avi -ovc lavc -lavcopts
vcodec=mpeg4:vbitrate=576:vhq:vpass=2 -vf
scale=640:480,crop=640:344:0:66,lavcdeint VTS_01_1.VOB
在first pass里我们已经看到,输出是到/dev/null的,也就是丢掉不要了。输出的只有divx2pass.log
这么一个文件。到了这个second pass,就要在-o后面放上真正的文件名了。还有就是把vpass改
成2。我用的vbitrate=576是为了控制2小时10分钟片子压到小于700MB。我记得音频部分做完时
会有一个建议的vbitrate,可以参考。
好了,已经把第一个vob变成avi了。然后删掉divx2pass.log和frameno.avi,重复上面的步骤,
把所有的vob都变成avi。
4. 把所有的avi文件用下面的命令处理一下:
mencoder -idx mymovie_1.avi -ovc copy -oac copy -o mymovie_1_out.avi
5. 合并所有的avi成一个文件:
cat mymoive_1_out.avi mymoive_2_out.avi ... mymoive_8_out.avi > mymovie.avi
mencoder -noidx -ovc copy -oac copy -o mymovie_final.avi mymove.avi
OK! 搞定!
关于加字幕,我只会做英文的,等有空再写。
不错!
有关字幕的选择可参考一下此贴:
http://www.linuxsir.org/bbs/showthre...hreadid=145978
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/18715/showart_1883567.html |
|