2. 需要的软件
首先让我介绍一下你将用到的一些工具.
* MPlayer 是一个多媒体播放器, 支持很多种文件格式和媒体编码解码器: MPEG1, AVI(包括所有 Windows 编码解码器, 所有 DivX 编解码器), DVD, VCD, SVCD 等等. 我用它观看所有类型的文件.
* MEncoder 是 MPlayer包的一部分, 用来对视频和音频进行编码. 它也能对 DVD 进行转码.
* transcode是一个工具集, 可以从许多格式转换到需多种其他格式, 包括从 DVD 转到 AVI 或者 (S)VCD.
* 你知道大多数 DVD 都是加过密的. libdvdcss 是用来对 DVD 内容解密的一个库
* DVD 包含有关标题(title) / 章节(chapter) / 角度(angle) 和声音语言的信息. 这些信息保存 在 .IFO 文件中. libdvdread 用来解析这些文件, 提取出所需要的信息.
* lame (Lame Ain't an MP3 Encoder) 把 MP2/WAV 音频编码成 MP3 格式.
* vobcopy 可以用来拷贝 DVD 上的 VOB 文件. 解密是实时进行的.
* dvd::rip是一个 transcode 的图形界面前端.
我会给你演示两种 DVD 转码的方法: 使用 MEncoder 和使用 transcode. 然而两种方法都可能需要一些文件.
2.1. 有关编解码器
在理想世界中, 只会有一种编解码器 - 最好的一个. 但这个世界还远远不够理想. 结果就是有一大堆视频和音频的编解码器可以选择. 首先我要解释一下不同类型的编解码器.
* 本地编解码器 是一般的 Linux 二进制文件(通常是共享的对象, libCODECNANE.so). 对它们的支持正在试验中.
* Windows 编解码器 是原始的或者是稍微修改了的 Windows 动态连接库(DLL, AX 或者其他). 这些编解码器不会在 Linux 上直接工作 - 你需要一个特殊的库才能使用这些编解码器. 这个库 叫做 avifile. 几个月前这还是在 Linux 下看 AVI 的唯一方法.
现在大多数编解码器都会带一个 Linux 版的本地版本(象 XviD, DivX 4/5 以及其他).
这里是支持的视频编解码器的一个列表:
* MPEG4 是一个官方的视频压缩标准. 没有一个编解码器的名字简单地叫做 MPEG4. 你如果说 MPEG4, 你不是在说某一种编解码器 - 你是在说视频压缩的一套技术. MPEG4 兼容(compliant) 指的是一个编解码器产生的文件可以被其他 MPEG4 兼容的编解码器播放
* DivX ;-) 是"原始"破解出的 Microsoft MPEG4 编解码器, 引起来 rip 狂潮. 它没有全部支持 MPEG4 所有特性, 象 b-frame
* * 或者全局运动补偿(GMC *). 仍有人在 Windows 下配合非常好的工具 Nandub 使用它. 在 Linux 下很少使用, 因为还有其他的编解码器能提供更好的质量. 它是以 Windows 动态链接库 (divx.dll 以及其他)而给出的, 需要 avifile. DivX 4 和 5 是官方的成功者. DivX 5 取代了 DivX 4. 这就是为什么你不能同时安装他们的原因(当然技术上来说可以, 由于明显的原因, 你不应该). 这些都是 Linux 本地共享库, 叫做 libdivxdecore.so 和 libdivxencore.so. 这是封闭源码的. 对 Windows, 有各种版本可用, 只有商业版本支持所有的编码选项, 象 b-frame*, GMC* 或者 1/4 PEL*. 免费的版本也可以看所有的文件, 甚至是使用商业版本创建的. 不幸的是, 只有 Linux 下的免费版本不支持所有这些很好的选项. DivXNetworks 正在考虑也给 Linux 提供一个商业的解决方案. 但不要期望很快就能得到.
* XviD (它来自于 DivX 从后往前的读法) 是一个开放源码的 MPEG4 的实现, 很好地考虑了压缩和图像质量. 对 MPEG4 的高级特性 (b-frames*, GMC*) 正在做或者已经实现了.
* libavcodec 或者缩写 lavc 是另一个开放源码的 MPEG4 兼容的视频编解码器, 在性能和质量上优于 DivX 5 甚至 XviD. 这个编解码器支持 b-frames*. 是 ffmpeg 项目的一部分.
* 当然还有用于 VCD 的 MPEG1 兼容的编解码器, 和用于 SVCD 或者 DVD 的 MPEG2 兼容的编解码器. 这个时候这份指南定位在产生 AVI, 所以我不会说太多有关这些太细节的东西
* 多数其他的编码器要么过时了(象 Intel Indeo 5) 要么是 Mircrosoft 的 MPEG4 编解码器的其他破解版本 (象 AngelPotion). 也有一些编解码器正在紧张开发中(象 VP4), 暂时还不能给我们一个可用的方案.
这份指南想要集中在两个编解码器上: XviD 和 lavc. 原因是这两个都提供了很优秀的质量, 都很快, 都只需要一个 MPEG4 兼容的解码器(象 DivX 5 或者 XviD) 就能在 Windows 上进行播放. 在 Linux 播放一点问题也没有 - MPlayer 或者 Xine 能很好地播放使用 DivX 4/5, Xvid 以及 lavc 编码的电影.
又是一个列表, 这次是音频编解码器:
* MP3 是 MPEG1 layer 3 的缩写, 是音频压缩的官方标准. 如果你说 MP3, 实际上你是在说一种 压缩技术, 不是某一种编解码器. 有许多 MP3 的编解码器, 我能数上一整天.
* lame 是 "Lame Ain't an MP3 Encoder" 的缩写(实际上它是 ;-)). 它提供了一个可以产生高质量 MP3 文件 的编码器. transcode 和 MEncoder 都使用 lame 来进行音频压缩.
* AC3 是另一种音频压缩的官方标准. 几乎所有的 DVD 都包含 AC3 编码的音频. 现在 Windows 和 Linux 上都有能从 AVI 中播放 AC3 音频的解码器. 优点是不需要重新压缩(重新压缩通常会损失质量), 和多声道音频(杜比环绕或者类似)仍然会保留. 缺点是 AC3 音频比 MP3 编码的音频占用更多空间
* Vorbis 是一种新的开源的音频压缩标准. Windows 和 Linux 上都能得到. 它的优点是更好的质量: 相对 于 MP3 的压缩比和多声道的支持. 不幸的是你不能安全地在 AVI 文件中包含 Vorbis 音频 - 但是我现在 正在做一个工具, 能够在一个 OGG 容器中把视频和 Vorbis 音频结合起来. 一旦准备好了, 我就会在这份指南中包含.
我希望这能使事情更清晰一些.
2.2. 通用库 / 编解码器
我不会在这节中讲太细, 有更多的文档来说明怎么安装这些包. 如果你有问题可以参考那些文档. 也要注意: MPlayer 对于 gcc, binutils 以及其他系统核心部分的版本有更严格一些的要求. 请参考 MPlayer 安装文档.
注意: 在下载软件之前, 检查一下你的发行版是否已经包含了这些软件. 我用的是 Debian Woody (tesing), 发现有许多软件已经是可用的.
* libdvdcss - 去 the Ogle project page 并下载 libdvdcss-0.0.3.ogle3.tar.gz (注意版本号可能会不同, 因为软件总在开发中 解压, 编译, 安装到 /usr/local
* . 请注意这个库有很多版本(0.0.3, 1.0.1). MPlayer 仍建议使用 0.0.3. libdvdread - 象 libdvdcss 一样在同一网页得到. 注意 Debian Woody 已经包含了 libdvdread. 简单的命令 apt-get install libdvdread2 libdvdread2-dev 应该就可以了.
* XviD 编解码器 - 如果你想使用 transcode 就需要. 从 MPlayer 文档中摘出的简短介绍:
o cvs -z3 -d:pserver:anonymous@cvs.xvid.org:/xvid login 当要求输密码时敲回车.
o cvs -z3 -d:pserver:anonymous@cvs.xvid.org:/xvid co xvidcore
o cd xvidcore/build/generic
o 修改 Makefile.linux 来适合自己的需要.
o make -f Makefile.linux
o 把xvidcore/src/divx4.h 文件拷贝到 /usr/local/include/decore.h 以及 /usr/local/include/encore2.h 中. 记着要对你要改写的文件作备份.
o 把libxvidcore.so 和 libcore.a 拷贝到 /usr/local/lib/
编译的时候你可能需要 nasm 的特殊版本, 你可以在 这里得到.
* vobcopy - 可以在它的 主页得到.
* avifile - 就象以前解释的, 需要它来访问那些没有 Linux 本地版本的 Windows 编解码器, 可以去它的 主页. 做之前再检查一次, 你的 Linux 发行版是否已经提供了 avifile (Debian Woody 是这样). 你也需要 Windows 编解码器, 可以在 avifile主页或者直接在 MPlayer 的主页得到.
* DivX 5 - 虽然这份指南不关注于 DivX 5, 你可以在
http://www.divx.com/ 得到. 如果你还有空余时间, 你可以比较一下 DivX 5 和 XviD 或者 lavc, 自己看看它比不上后两个编解码器.
2.3. MPlayer
你需要 MPlayer. 你以后是否使用 MEncoder 或者 transcode 不重要 - 你仍然还需要. 所以从
http://www.mplayerhq.hu/ 获得 MPlayer. 我更喜欢 CVS 版本, 因为它经常会有一些正式发布中没有的特性! 实际上我的这份指南就是基于前几天(今天是 2002 年 4 月 30 号)刚刚提交到 CVS 的一些特性之上的. 照着做吧 - 勇敢地获取 CVS 版本. 如果你想使用 MEncoder 编码, 我建议也得到 libavcode 的一个版本来作编码. 如果你使用 MPlayer 的 CVS 版本, 就直接下载吧. 已经包含了打好包的 libavcodec. 一些从 MPlayer 文档中摘取的介绍:
* 从 CVS 中倒出 ffmpeg 项目: cvs -d:pserver:anonymous@cvs.ffmpeg.sourceforge.net:/cvsroot/ffmpeg login. 当要求输入密码的时候敲回车.
* cvs -d:pserver:anonymous@cvs.ffmpeg.sourceforge.net:/cvsroot/ffmpeg co ffmpeg
* 把 Ffmpeg 源码中的 libavcodec 目录移到 MPlayer CVS 树中的根目录. 符号链接不够, 你必须拷贝/移动它!!!
编译时候注意一点: 确信 没有包含 XviD 的支持. 而要包含 libavcodec 的支持. 安装指南在 MPlayer 文档中有提供. 要阅读正确: 编译 transcode 支持 XviD 以及 MPlayer 不支持 XviD 但 支持 libavcodec. 原因是 MPlayer 不能同时支持具有相同变量名的两种编解码器
2.4. transcode
从 它的主页上可以得到 transcode. 确信编译的时候支持 XviD, 以及对 MPlayer 后处理功能的支持. 我再一次建议选择 CVS 版本
另外, 你应该想要下载 dvd::rip, 一个基于 Gtk+ 的 transcode 的前端. 从 这里可以得到. 也包含了安装文档.
2.5. 获取 RPM
我知道至少有两个地方你可以得到这里提到的软件的 RPM 包:
*
* Penguin Liberation Front lair - RPMs for Mandrake
http://www.piorunek.pl/~dominik/linux/pkgs/mplayer/ - RPMs for Redhat 7.2