mpv/DOCS/xml/zh_CN/cd-dvd.xml

278 lines
10 KiB
XML
Raw Normal View History

<?xml version="1.0" encoding="utf-8"?>
<!-- synced with r21612 -->
<chapter id="cd-dvd">
<title>CD/DVD用法</title>
<sect1 id="drives">
<title>CD/DVD驱动器</title>
<para>
现代的CD-ROM驱动器能达到很高的速度然而一些CD-ROM也可以在降低速度下运行。
有几条原因可能使你考虑改变CD-ROM的读盘速度
</para>
<itemizedlist>
<listitem><para>
有报告称告诉读取可产生错误尤其是制作恶劣的CD-ROM。降低速度可以防止这些
情况下的数据丢失。
</para></listitem>
<listitem><para>
许多CD-ROM驱动器有很讨厌的噪音低俗可以降低这些噪音。
</para></listitem>
</itemizedlist>
<!-- ********** -->
<sect2 id="drives_linux">
<title>Linux</title>
<para>
你可以使用<command>hdparm</command><command>setcd</command>
<command>cdctl</command>以减慢IDE CD-ROM的驱动器。使用方法如下
<screen>hdparm -E <replaceable>[speed]</replaceable> <replaceable>[cdrom device]</replaceable></screen>
<screen>setcd -x <replaceable>[speed]</replaceable> <replaceable>[cdrom device]</replaceable></screen>
<screen>cdctl -bS <replaceable>[speed]</replaceable></screen>
</para>
<para>
如果你使用SCSI模拟你必须把设置应用到真正的IDE驱动器不是被
模拟的SCSI设备。
</para>
<para>
如果你有root权限下面的命令也可能有帮助
<screen>echo file_readahead:2000000 &gt; /proc/ide/<replaceable>[cdrom device]</replaceable>/settings</screen>
</para>
<para>
这将预读取的文件设置为2MB这对有划痕的CD-ROM有帮助。如果你设置
的太大,驱动器会不断来回转动,极大降低性能。
推荐你使用<command>hdparm</command>调整你的CD-ROM
<screen>hdparm -d1 -a8 -u1 <replaceable>[cdrom device]</replaceable></screen>
</para>
<para>
这开启了DMA读取预读以及IRQ遮盖对于详细解释阅读
<command>hdparm</command>man页
</para>
<para>
请阅读
"<filename>/proc/ide/<replaceable>[cdrom device]</replaceable>/settings</filename>"
以很好调整你的CD-ROM。
</para>
<para>
SCSI驱动器没有统一设置参数的方法你知道告诉我们有一个工具
<ulink url="http://das.ist.org/~georg/">Plextor SCSI drives</ulink>可参照。
</para>
</sect2>
<!-- ********** -->
<sect2 id="drives_freebsd">
<title>FreeBSD</title>
<para>speed:
<screen>
cdcontrol [-f <replaceable>device</replaceable>] speed <replaceable>[speed]</replaceable>
</screen>
</para>
<para>DMA:
<screen>
sysctl hw.ata.atapi_dma=1
</screen>
</para>
</sect2>
</sect1>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<sect1 id="dvd">
<title>DVD回放</title>
<para>
对于完整的可用选项请阅读man页。
播放标准DVD的语法如下
<screen>
mplayer dvd://<replaceable>&lt;track&gt;</replaceable> [-dvd-device <replaceable>&lt;device&gt;</replaceable>]
</screen>
</para>
<para>
例如:
<screen>mplayer dvd://1 -dvd-device /dev/hdc</screen>
</para>
<para>
如果你使用dvdnav支持编译<application>MPlayer</application>,语法是一样的,但你要用
dvdnav://而不用dvd://。
</para>
<para>
默认的DVD设备是<filename>/dev/dvd</filename>。如果你的设置不同,创建
个连接或者在命令行中用<option>-dvd-device</option>指定正确的设备。
</para>
<para>
对于DVD回放及解密<application>MPlayer</application>使用
<systemitem>libdvdread</systemitem><systemitem>libdvdcss</systemitem>
这两个库在
<application>MPlayer</application>的源码树中,你不必单独安装。你也可以使用
全系统可用的版本,但这种做法不被推荐,因为它能导致错误,库不兼容以及更慢的
速度。
</para>
<note><para>
对于DVD解码问题尝试禁用supermount或者其它相应特性。一些RPC-2驱动器
可能还需要设置区域代码。
</para></note>
<formalpara>
<title>DVD结构</title>
<para>
DVD磁盘的每个簇有带有ECC/CRC的2048字节。每个轨上采用UDF文件格式包含各种文
件(小的.IFO及.BUK文件以极大的1GB的.VOB文件。它们是真正的文件能从被挂
载的未加密的DVD中复制/播放。
</para>
</formalpara>
<para>
.IFO文件包含电影的浏览信息章/标题/视角图,语言表等),它们被用于读及解析
.VOB的内容影片。.BUK文件是它们的备份。他们到处使用<emphasis role="bold"></emphasis>
所以你需要指定光盘上真正的簇地址以完成DVD浏览或对内容进行解密。
</para>
<para>
DVD支持通过原始的对设备基于簇的访问。不幸的是在Linux中要得到一个文件
的簇地址,你必须是超级用户。那就是我们不使用内核的文件系统的原因,我们在用
户层对此进行了重新实现。<systemitem>libdvdread</systemitem> 0.9.x完成了此项
工作。我们并不需要内核中的UDF文件系统驱动因为它们已经有了自己内置的UDF文件
</para>
<para>
有时<filename>/dev/dvd</filename>对用户不可读,所以
<systemitem>libdvdread</systemitem>的作者实现了一个模拟层,其实现了将簇地址
提交到文件名+偏移量中,以模拟在挂载的文件系统甚至是硬盘上的直接访问。
</para>
<para>
<systemitem>libdvdread</systemitem>对于直接访问甚至支持挂载点而不是设备名并
检查<filename>/proc/mounts</filename>以得到设备名称。其被开发在Solaris上
在那系统上设备名是动态分配的。
</para>
<formalpara>
<title>DVD解密</title>
<para>
DVD解密通过<systemitem>libdvdcss</systemitem>完成。这个方法可以通过
<envar>DVDCSS_METHOD</envar>环境变量设置具体细节参考man页。
</para>
</formalpara>
<para>
RPC-1 DVD驱动器只使用软件对区域设置进行保护。RPC-2驱动器有一个硬件保护只准
许做5次更改。你可能需要或被推荐把firmware升级到RPC-1如果你有个RPC-2 DVD驱动
器。你可以在因特网上寻找firmware的升级
<ulink url="http://forum.rpc-1.com/dl_all.php">此firmware论坛</ulink>
对你的搜索可能是个好起点。如果没有针对你的设备的firmware升级使用
<ulink url="http://linvdr.org/projects/regionset/">区域工具</ulink>
来设置你DVD的区域码在Linux下
<emphasis role="bold">警告</emphasis>你只可以设置5次区域。
</para>
</sect1>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<sect1 id="vcd">
<title>VCD回放</title>
<para>
对于可用选项的详细列表请阅读man页。对于标准视频CD (VCD)的语法如下:
<screen>mplayer vcd://<replaceable>&lt;track&gt;</replaceable> [-cdrom-device <replaceable>&lt;device&gt;</replaceable>]</screen>
例如:
<screen>mplayer vcd://2 -cdrom-device /dev/hdc</screen>
默认的VCD设备是<filename>/dev/cdrom</filename>。如果你的设置不同,建
立个连接或者在命令行通过<option>-cdrom-device</option>选项指定正确设备。
</para>
<note><para>
至少Plextor及一些Toshiba SCSI CD-ROM驱动器对读取VCD有着恐怖的性能。这是因为
针对这些设备的CDROMREADRAW <systemitem>ioctl</systemitem>没有完成。如果你有
SCSI编程知识<ulink url="../../tech/patches.txt">帮我们</ulink>实现对SCSI
VCD的支持。
</para></note>
<para>
同时,你可以通过
In the meantime you can extract data from VCDs with
<ulink url="http://ftp.ntut.edu.tw/ftp/OS/Linux/packages/X/viewers/readvcd/">readvcd</ulink>
从VCD提取数据并用<application>MPlayer</application>播放最终文件。
</para>
<formalpara>
<title>VCD结构</title>
<para>
视频CD (VCD)由CD-ROM XA簇组成例如CD-ROM 模式 2
表格1及2轨
<itemizedlist>
<listitem><para>
第一个轨道处于模式2表格2格式下这意味着他使用L2错误恢复。此轨道含有
ISO-9660文件系统其拥有2048字节/簇。此文件系统含有VCD属性数据信息
以及经常用于菜单上的静态桢。对菜单的MPEG块也能存于这第一个轨道上
MPEG不得不被分散成一系列的150个簇的块。ISO-9660文件系统可以包含其它
对于VCD操作不重要的文件或程序。
</para></listitem>
<listitem><para>
第二及余下的轨道通常是原始的2324字节/簇的MPEG(影片)轨道,每个簇包含
一个MPEG PS数据包。这些处于模式2表格1格式所以他们没簇存储更多数据
损失了一些纠错。在一个VCD的第一个轨道后也包含CD-DA轨道也是合法的。在
一些操作系统中有些技巧是这些非ISO-9660轨道出现在文件系统中。在另外
一些操作系统中如GNU/Linux这还被实现。在此MPEG数据
<emphasis role="bold">不能被挂载</emphasis>。因为大部分电影在这种轨道
内,你应先试<option>vcd://2</option>
</para></listitem>
<listitem><para>
还存在没有第一个轨道的VCD单一轨道根本没有文件系统。他们仍然是可
播放的,但不能被挂载。
</para></listitem>
<listitem><para>
视频CD的定义被称为Philips"白皮书",它通常并不出现在网上因为它要从
Philips购买。对于视频CD更详细的资料可从
<ulink url="http://www.vcdimager.org/pub/vcdimager/manuals/0.7/vcdimager.html#SEC4">vcdimager文档</ulink>
获取。
</para></listitem>
</itemizedlist>
</para>
</formalpara>
<formalpara>
<title>关于.DAT文件</title>
<para>
被挂载的VCD上处于第一个轨道上的~600MB的文件并不是真正的文件它是所谓的ISO网
其被创建以便Windows处理这些轨道Windows根本不允许应用程序直接访问原始设
。在Linux下你不能复制或播放这些文件它们包含垃圾。在Windows下这是可
能的因为他的iso9660驱动模拟了在文件内直接读取轨道。要播放.DAT文件你需要内核
驱动岂可再PowerDVD的Linux版本中找到。其有一个更改的iso9660文件系统
(<filename>vcdfs/isofs-2.4.X.o</filename>)驱动,你可以通过<application>MPlayer</application>
复制甚至播放.DAT文件。但在Linux内核的标准的iso9660驱动上它不能工作另外使用
使用<option>vcd://</option>。对于VCD复制另外的方法是内核新的
<ulink url="http://www.elis.rug.ac.be/~ronsse/cdfs/">cdfs</ulink>驱动(不是
官方内核的一部分其将CD会话显示为镜像文件及<ulink url="http://cdrdao.sf.net/">cdrdao</ulink>
一个逐位的CD抓轨/复制程序。
</para>
</formalpara>
</sect1>
</chapter>