3.6. DVD回放

对于完整的可用选项,请阅读man页。 播放标准DVD的语法如下:

mplayer dvd://<track> [-dvd-device <device>]

例如:

mplayer dvd://1 -dvd-device /dev/hdc

如果你使用dvdnav支持编译MPlayer,语法是一样的,但你要用 dvdnav://而不用dvd://。

默认的DVD设备是/dev/dvd。如果你的设置不同,创建 个连接或者在命令行中用-dvd-device指定正确的设备。

对于DVD回放及解密,MPlayer使用 libdvdreadlibdvdcss 这两个库在 MPlayer的源码树中,你不必单独安装。你也可以使用 全系统可用的版本,但这种做法不被推荐,因为它能导致错误,库不兼容以及更慢的 速度。

注意

对于DVD解码问题,尝试禁用supermount,或者其它相应特性。一些RPC-2驱动器 可能还需要设置区域代码。

DVD结构.  DVD磁盘的每个簇有带有ECC/CRC的2048字节。每个轨上采用UDF文件格式,包含各种文 件(小的.IFO及.BUK文件以极大的(1GB)的.VOB文件)。它们是真正的文件能从被挂 载的未加密的DVD中复制/播放。

.IFO文件包含电影的浏览信息(章/标题/视角图,语言表等),它们被用于读及解析 .VOB的内容(影片)。.BUK文件是它们的备份。他们到处使用, 所以你需要指定光盘上真正的簇地址以完成DVD浏览或对内容进行解密。

DVD支持通过原始的对设备基于簇的访问。不幸的是,(在Linux中)要得到一个文件 的簇地址,你必须是超级用户。那就是我们不使用内核的文件系统的原因,我们在用 户层对此进行了重新实现。libdvdread 0.9.x完成了此项 工作。我们并不需要内核中的UDF文件系统驱动因为它们已经有了自己内置的UDF文件

有时/dev/dvd对用户不可读,所以 libdvdread的作者实现了一个模拟层,其实现了将簇地址 提交到文件名+偏移量中,以模拟在挂载的文件系统甚至是硬盘上的直接访问。

libdvdread对于直接访问甚至支持挂载点而不是设备名并 检查/proc/mounts以得到设备名称。其被开发在Solaris上, 在那系统上设备名是动态分配的。

DVD解密.  DVD解密通过libdvdcss完成。这个方法可以通过 DVDCSS_METHOD环境变量设置,具体细节参考man页。

RPC-1 DVD驱动器只使用软件对区域设置进行保护。RPC-2驱动器有一个硬件保护,只准 许做5次更改。你可能需要或被推荐把firmware升级到RPC-1,如果你有个RPC-2 DVD驱动 器。你可以在因特网上寻找firmware的升级, 此firmware论坛 对你的搜索可能是个好起点。如果没有针对你的设备的firmware升级,使用 区域工具 来设置你DVD的区域码(在Linux下)。 警告:你只可以设置5次区域。