动态网站制作指南
[  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
电脑书籍下载:程序设计书籍 | 数据库教程书籍 | 平面与多媒体书籍 | 网络通讯书籍 | 系统管理书籍 | 网络安全书籍 | 认证考试书籍
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 操作系统 > Linux教程
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Linux教程 ]的信息



本月文章推荐
.Shell编程基础:单引号和双引号含.
.Linux 网管 123 --- 第7章. 自订.
.Ubuntu Linux系统设定服务自行开.
.实用技巧:Linux下用Samba作PDC配.
.解读Linux系统下文件权限的设置方.
.Linux系统中静态库和动态库的生成.
.Linux下的驱动安装在MC上提供了三.
.Linux环境下实现组件返回消息的技.
.ISP-Connectivity-mini-HOWTO.
.VI 快速上手.
.Linux系统下用RedOffice实现矢量.
.在 Ubuntu 系统上安装 Google Ea.
.如何格式化软碟?.
.如何修改Linux系统的文件权限.
.常用Linux与Windows共享建最简Sa.
.Linux管理员手册(4)--内存管理.
.教你制作Linux操作系统的USB启动.
.SWsoft公司推出Windows版Linux服.
.Linux新手精彩问答.
.如何用鼠标拷贝与粘贴?.

Linux系统中提取DVD音频的方法介绍

文章类别:Linux教程 | 发表日期:2006-12-25 |


  老婆借了盘DVD,非要让我把它想办法留下来。保存.vob是不现实了。为了给老婆展示一下Linux的强大,特地到网上攻读了一番。
  很可惜的是:工作的最开始还是用了一下Windows,因为我的机器都没有DVD-ROM, 所以用别人的机器把那些VOB文件copy下来,然后上传到我的Linux服务器上。这台机器上没有X Window, 所以下面全部的工作都是ssh到服务器上,然后在命令行下做的。

  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 

  几个解释补充:
  1:音频加字幕:

  PHP代码:

  mencoder dvd://1 -vobsubout subtitles -vobsuboutindex 
    0 -sid 2 -o frameno.avi -ovc frameno

  注意 :这里的frameno.avi就是你得到的音频。我这里没有进行编码,就是说直接把dvd的音频流给剥离出来(其实就是ac3编码)。如果如果你想用lame编码成mp3那么参考Fortraner的介绍。

  -vobsuboutindex 0 -sid 2 这个参数就是为了从dvd文件里把字幕给剥离出来。前面的0就是说我们选的字幕(就是sid 2)做为我们最后得得到字幕文件的index 编号为0的字幕。(字幕包括以.idx和.sub结尾的一对文件。)

  sid 2 表示我们选的dvd字幕中的sid编号(language id)为2字幕。为什么选2呢?因为你用mplayer -vobsubid 2播放dvd时正好出来的是中文。如果你用-vobsubid 1得到的是中文那么你就用1。关于字幕提取。详见mplayer的官方文档(有中文的)。

  举个一次性在进行3-pass编码的同时从DVD复制两份字幕的例子:

  PHP代码:

  rm subtitles.idx subtitles.sub //这里是为了防止原先存在的字幕的干扰。
  mencoder dvd://1 -vobsubout subtitles -vobsuboutindex
   0 -sid 2 -o frameno.avi -ovc frameno
  mencoder dvd://1 -oac copy -ovc divx4 -pass 1
  mencoder dvd://1 -oac copy -ovc divx4 -pass 2
     -vobsubout subtitles -vobsuboutindex 1 -sid 5

  

  2:视频编码

  视频编码的参数设置 Fortraner已经说的很详细了。我对参数的设置就不知其所以然了。问题是如何用参数才能使编码质量达到比较高的水平。这里是有很多东西可以研究的。但我拼命看man,文档,实验了好多方法,感觉也和上面给出的简单的例子的编码质量差不多。-_- ! 大家试试Fortraner兄的参数。看看有没有大的改观。

  3:还是讲讲怎么从dvd copy吧

  a:上面的例子是用来 dvd://? 的参数。这表示直接用dvd光驱。?表示的是我们从那个轨道开始编码。一般dvd有好几个轨道。第一个往往是片头和什么节目预告之类的。所以我一般直接从2开始。3也是。一般没什么用了。具体你可以看看光盘里的info文件。有几个。

  b:那么像Fortraner兄说的没有光驱或已经把vod文件拷贝出来的怎么办?

  其实我们可以一次性的搞定:

  先建立一个目录比如:DVD。然后把那些dvd光盘里的文件都扔到这个目录。注意,不要忘了把那些info文件也扔进去。那时dvd的轨道信息。有用。然后我们就把这个DVD目录当成dvd光驱。PHP代码:

  mencode dvd://2 -dvd-device DVD/ (这里指定你的DVD的路径)

  

  c:那么我要是不用上面的办法呢?就是说我就选几个vod文件。我能一次性给搞定呢?行。

  请看例子,PHP代码:

  cat 1.vod 2.vod | mencoder -noidx -ovc copy -oac copy -o output.avi -

  

  注意不要忘了加“-”。在linux系统好像直接可以用mencode *.vob.我想不行的话你就用cat吧。cat好强啊。最后我们可以用一个脚本来自动完成所有的步骤:

  我的730M的3pass编码的脚本,PHP代码:

#!/bin/sh
rm -rf frameno.avi
mencoder dvd:// -vobsubout subtitles 
-vobsuboutindex 0 -sid 0 -ovc frameno -o 
frameno.avi -oac mp3lame -lameopts vbr=3:abr=80
mencoder dvd:// -ovc lavc -lavcopts 
vcodec=mpeg4:vqh:vpass=1 -oac copy -o aa.avi
mencoder dvd:// -ovc lavc -lavcopts
 vcodec=mpeg4:vqh:vpass=2 -oac copy -o aa.avi
 

  不知道哪里还没有明白。大家主要还是看doc文档和man吧。很详细的。


上一篇:在Linux桌面环境下运行Photoshop简介 人气:5969
下一篇:如何才能让MySQL与OpenOffice共舞 人气:4346
点击此处浏览全部Linux的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-5-20 站长俱乐部新闻发布系统 v5.19
2008-5-20 DotNetTextBox网页编辑器 v3.4.7
2008-5-20 phpMyFAQ v2.5.0 多国语言版
2008-5-20 DreamArticle 文章管理系统 v2.0
2008-5-20 Drupal v7.xdev Build080518
2008-5-20 逐迹内容管理系统AspxNuke v2.0.
2008-5-20 ajax奥运留言本 v1.0
2008-5-20 QQ空间博客全自动挂机互踩好友
2008-5-20 网人采集 v1.2.0
2008-5-7 Windows XP SP3 官方英文版
2008-5-7 Windows XP SP3 官方香港中文版
2008-5-7 Windows XP SP3 官方繁体中文版
2008-5-7 Windows XP SP3 官方简体中文版
2008-4-30 Multiple Unzip Wizard 1.02
2008-4-30 Multiple Unrar Wizard 1.0.0
2008-4-30 WinZip Install/Try/Uninstall a
2008-4-30 ZIP压缩文件修复器WzipFix 2.0
2008-4-30 Pentazip 6.01 Build 189 For Wi
  发表评论
姓 名: 验证码: [ 全部贴吧 ] [ 浏览评论 ]
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号