探索真相:精确读取和复制CD-Audio
Lucifer 于 2006.08.25 14:54:25 | 源自:IT168评测中心 | 版权:转载 | 平均/总评分:08.70/87

本文转载自IT168(原文地址

一直以来,玩电脑入门的人通常都被老鸟告知,通过刻录机精确读取、复制CD-Audio是不可能的,虽然之间的争吵也没有停息过,然而基本上这个言论已经被当作了一种常识了,它是否就是正确的呢?我们首先阐述一下精确读取CD-Audio的可能性,再阐述一下影响读取、复制CD-Audio的因素。

Red Book——CD-Audio

CD(Compact Disk),是由Sony和Philips共同开发的技术规范。最早出现的CD产品就是CD-Audio,技术规范就是红皮书——Red Book。
标准CD-Audio的直径为120mm,厚度为1.2mm,音频规格为双通道16位/44.1kHz,频响5-20,000Hz,动态范围96dB,播放时间为74 min。

在CD-Audio中,数据的最小可访问存储单位为Block(块),相对地在CD-ROM中则称之为Sector(扇区)。
在CD-Audio中,每一秒音乐划分为75个Block,每个Block被划分为98个Frame(帧),通过比特率之类的计算可以很容易得出每一个Block的大小为2352Bytes,每一个Frame的大小为4Bytes。

在CD-Audio中,每个Block的2352Bytes内容全部是PCM编码的音频数据,而在CD-ROM中,则只有2048Bytes的内容为数据,其他304Bytes内容则为校验、同步所用,以CD-ROM Mode 1为例:12Bytes Sync(同步内容)、4Bytes Header(头)、2048BytesData、4Bytes EDC(CRC校验码)、8Bytes Resevered(保留)、276Bytes ECC(错误纠正码),显然,CD-ROM标准比CD-Audio对数据的保护更加完善。

不管是CD-Audio还是CD-ROM还是其他CD,每个Frame都是用了两种编码转换成为实际光盘上面的Pit(凹坑)和Land(平面):一个是CIRC编码,保证信息的逻辑正确性;另一个是EFM编码,提供物理读取/写入的信号识别可靠性。
CIRC(Cross Interleaved Read-Solomon Code)编码过程在24Bytes原始数据中加入
8Bytes的校验帧,它包括了C1和C2各4Bytes的纠错码。需要指出的是,原始的24Bytes数据经过CIRC编码后,分散到包括本CIRC帧在内的109个CIRC帧当中,这大大提高了容错能力。
CIRC编码生成的32Bytes帧中还要加入1Bytes的Sub-Code控制码,这个控制码对CD-Audio而言是一个关键。
所有的33Bytes CIRC帧要经过EFM编码,EFM(Eight to Fourteen Modulation)即8到14编码,同时EFM编码要符合二进制光盘的RLL(Run Length Limited,游程控制)编码规则,每8bits数据经过EFM编码为14bits之后都要加上3bits的Merging Bit(合并码),因此EFM编码从效果上实际上是一个Eight to Seventeen Modulation,即8到17编码。
这样33Bytes的CIRC帧便变为一个561bits的EFM帧,然而这还不是全部,每一个EFM帧需要3Bytes即24Bits的同步字节,同时这个同步字节需要3bits的Merging Bit,这样一个完整的Frame就需要共588Bits的信道脉冲。然后每个脉冲就转换为CD盘片上的Pit和Land,1就是Pit/Land互相转换,0就是保持不变。

以上就是CD纪录模式的大概技术细节。

Sub-Code控制码

再介绍每一个Frame上存在的1Bytes的Sub-Code控制码:每一个Block有98Frames,
75Frams的所有Sub-Code组合成为一个Sub-Code Block,显然它的大小为98Bytes。这98Bytes中,头2Bytes标志着Sub-Code Block的开头,独特地称之为S0和S1。
对于每一个Frame上的1Bytes即8bits的Sub-Code控制码,按顺序称之为P、Q、R、S、T、U、V、W。这样每个98Bytes的Sub-Code Block除去S0、S1 Bytes剩下的96Bytes便可以划分为P、Q、R、S、T、U、V、W words,每个Words就由所有相对的bits组成,如P words就由96Frame里的96个P bit组合而成,每个Words长度为96bits。音频应用只使用了P words和Q words,其他6个用于Text、Photo、Video之类的控制。

P words的作用非常简单,在每一个Audio Track音轨的开头,P words全部为二进制1(还有一些其他规则),在音轨中,P words全部为二进制0。Lead-Out区域,P words以交替
为0和1,周期为每秒2个循环。

Q words,96bits,分为4个部分:
第一个4bits的部分用于控制,Bit 1为0时CD盘片即为双声道,为1时即为四声道(当然……CD-Audio并不支持4声道,所以这个bit没什么大路用),Bit 2 未定义,Bit 3即为复制开关,为0时禁止复制,1时则可以——最后效果如何,要看读取的光驱买不买账——Bit 4控制Pre-Emphasis需要如否,为0则不需要,这个选项仅对模拟输出有效,同时还有一些其他不重要的限制。
第二个部分的4bits决定着第三个部分72bits的结构模式。最后16bits的第四部分为CRC错误检测,纯粹是检测,无法纠错,基本上没什么用。
第二部分的4bits可以定义16种模式——通常只有3种有用:

Mode 1定义第三部分的72bits纪录CD-Audio碟片音轨的号码以及开始的时间。72bits分为9Bytes,每Bytes使用BCD(Binary Coded Decimal)编码解码为两个十进制数字。
第一个Byte就包括着音轨号,范围就是01到99,在Lead-In,这个值为00,在Lead-Out,这个值为AA。
第二个Byte在音轨内记录着索引号,范围是01到99,00用于音轨之间。在Lead-In区域,它记录着音轨号。Lead-Out区域这个值为01。
接下来使用3个字节来记录当前Block的分、秒、Block间隔,因为Sub-Code Block出现的频率跟纪录Block出现的频率是一样的,都是每秒75次。在Lead-In,这个间隔从唱片开头计算,在音轨内,这个从音轨开头开始计算,音轨之间,这个间隔从下一个音轨开头往回开始计算。
第6Byte没有使用,并总是为0。
第7、8、9 Byte作用跟3、4、5 Byte相似,它在Lead-In区域之后,记录着从第一个音轨开头开始计算的分、秒、Block间隔。在Lead-In区域,它们跟第2 Byte一起被称为唱片的TOC(Table Of Contents),为了容错,这时每一个Sub-Code Block都连续重复三次,7、8、9 Byte记录着到达唱片第一个音轨开头的分、秒、Block间隔;当第2 Byte值为A0或者A1的时候,第7 Byte(分间隔)就记录着第一个音轨或最后一个音轨的数值,当第2 Byte值为A2的时候,第7 Byte(分间隔)就记录着唱片的所有音轨时间(包括音轨之间的静音)。

Mode 2定义纪录UPC(Universal Product Code),这就是很多唱片上面的条形码,开始的52bits被编码为13个BCD数字,接下来的12bits全为0,最后的8bits包括着当前Sub-Code Block在当前秒中的编号。Mode 2 Q words在使用的时候每100个Sub-Code Block必须最少出现一次。

Mode 3定义纪录每一条音轨的ISRC(International Standard Recording Code),跟Mode 2一样,这是可选的,然而在使用的时候每100个Sub-Code Block必须最少出现一次。ISRC使用了60bits,接下来的是4bits的0和跟Mode 2 Q words一样的8bit名当前Sub-Code Block在当前秒中的编号。
这三种模式都有着定位音轨、时间的功能。

最后,CD光盘还使用ATIP(Absolute Time In Pre-groove,绝对时间预制沟槽技术)来指示地址信息,一个ATIP地址信息共42bits,每秒钟出现75次,即每一个Block就对应着一个ATIP地址信息,这个42bits的数据块包括着4bits的同步码、24bits的分、秒、帧信息(每一项使用8bits)以及14bits的CRC校验码。

由此可见,我们的CD播放器上看到的音轨以及时间信息,都记录在Sub-Code的Q words里面,通过这个信息,对照ATIP地址以及Q words本身,CD-Audio就可以精确定位每一个Block的每一个Frame,因此我们可以完全确定地读出每一Frame的内容,并且每一Frame的内容都受着CIRC编码和EFM编码的保护,最后我们可以有序、精确地读出完整的CD-Audio信息。

简而言之,精确地读取CD-Audio的信息是可能的,影响着这个可能精确读取度的因素是CIRC编码及EFM编码的可靠度。影响CD-Audio复制、刻录、回放的另有原因。

CD-ROM具有额外的ECC/EDC纠错码而具有着更高的可靠性。

CD-Audio Beta、Jitter、回放及复制

对于CD-Audio的精确读取,在上一页已经阐述了其可行性:CD-Audio上每一个帧都可以有序精确定位,每一帧的内容都可以完整读出。现在我们来看看实际情况,以及一些以前的观点。

对于CD-Audio盘片而言,有两个影响/读取回放质量的因素:Beta和Jitter
Beta就是激光功率在Pit和Land区域相对于功率中间点的对称性。CD-Audio规定为不大于+-0.008。
Jitter就是碟片的的数据周期/长度与标准数据周期(时钟)/长度之间的误差,参照物为标准的3T周期/时钟,单位为%或者ns。CD-Audio标准为不超过15%,即约为35ns。
显然,光盘的Beta和Jitter同时也跟读取/刻录光驱相关。通常Beta不是一个太重要的因素,人们谈论更多的是Jitter。

对于CD唱机而言,可以分为唱盘和DAC两大部分,纯数字的唱盘部分可以/可能做到输出正确的数字信息,可能的音质影响因素便存在于唱盘机械部分引起的无法纠正的读取错误(光头数字部分时基电路的Jitter也有可能会引起这些错误,然而大部分情况下,被CIRC编码和EFM编码所修正),以及由于时基电路的Jitter引起的DAC过程不精确上(这个,无法修正……)。
对于CD播放器而言,Jitter就是时基抖动,归根到底就是频率发生器/晶体振荡器产生的时钟信号的准确程度。同时,时基电路的Jitter也引起了光头的数据周期/长度与标准数据周期(时钟)/长度之间的误差,即Jitter是一脉相承的。
一些传统的观点认为CD-Audio是没有定位信息的,由于Jitter的原因光驱无法得到准确的读出信号,现在我们知道CD-Audio确实是有很多同步、定位信息的,所以这种观点自然不再成立。
另一些观点则承认CD-Audio可以完整读出,但是因为Jitter原因无法得到精确的音频数据,这是对Jitter的误解,由Jitter引起的Pit/Land读取错误会被EFM编码纠正,更大范围的错误则可以被CIRC编码纠正(当然CIRC编码之后就没有更多的保护措施了),这种观点自然不是正确的。

然而,CD唱机的通常遇到错误的数据块的时候是不会反复读取的,这时就会产生爆音,或者,按照机理的不同,通过运算生成一个接近真实值的新值来代替,这样回放效果自然不会好。高级的CD播放器会通过机械、时钟电路等各方面的改进来提升回放的效果,相对地成本也会更高。

对于CD光驱而言,回放通常由声卡来完成,这时跟CD唱机的情形也差不多,因此光驱数字部分时基电路的Jitter和声卡DAC部分的Jitter影响着音质。
读取CD-Audio的时候,通常CD播放器不会反复读取CD-Audio的Frames,因此要得到完美的声音,需要付出较大的代价,而CD光驱抓音轨则可以反复读取,因此CD光驱抓轨对于复制而言可以/可能做到100%的,这一方面而言CD光驱对于CD唱机具有一定的优势——不过CD唱机也可以完全设计为遇到错误重新读取。
光驱读出的无损PCM编码数据通过各种总线传输至声卡,再通过声卡DAC最终输出模拟信号,这方面通常的CD唱机或者配备的额外的DAC就要比声卡具有更多的优势——当然声卡中也有DAC效果很好的产品存在。
CD光驱模拟方式播放CD则通常比CD播放器糟糕得多,数字播放方式则同样会受到声卡DAC的Jitter困扰,并且这时光驱读取错误通常不会反复读取错误段(基本都如此设计)。

总体而言,精确读取CD-Audio方面CD光驱具有一定的优势,而在回访方面,CD唱机会做得更好。

CD-Audio复制

我们暂不考虑版权问题,只考虑技术。
对于个人复制而言,通常是指将音频抓轨的WAV文件刻录到CD-R盘片中,如前面所述精确的读取是有可能实现的,同样的逆过程按照原理也可以/可能实现,即音乐内容一模一样的复制碟片是可以的,不过复制的碟片同时受到刻录机和刻录碟片的Beta、Jitter影响,因此通常难以做到100%复制,不同的的刻录机、刻录碟片表现也不相同,这也是玩家不停追寻高档刻录机和刻录碟片的原因。
关于音频抓轨和刻录还有一个脚注:Offset(偏移),这是因为不同的光驱/刻录机起始的读取/刻录时间有差异造成的,不过除了Offset不同之外,其它数据都一样,因此它们不影响音质。同一个光驱/唱机流行的音频抓轨软件Exact Audio Copy里面具有专门的Offset相关选项。
CD唱片的复制制造则不同,通过一个钢制的母片(第二母片,第一母片是一个很软的材料制作的,不适合复制),使用类似铅字印刷的方式制造出大量几乎是100%一模一样的CD碟片——就是我们买到的CD唱片。

请评分
1
2
3
4
5
6
7
8
9
10
183.034.103.***
183.034.103.***
发表于2019.07.25 16:19:12
29
221.204.169.***
221.204.169.***
发表于2015.09.12 10:29:23
28
肯定可以读取的
发表于2015.02.24 16:13:38
27
027.189.***.***
027.189.***.***
26
027.189.***.***
027.189.***.***
25
116.228.***.***
116.228.***.***
按照文中所述,jitter只对cd唱机有影响,数据是不变的,所以一张光盘抓出来,再刻录到一张盘,会产生offset,但如果不用cd唱机,用cd光驱再抓出来,再用外置独立时钟dac解码应该依然不会丢失音质,对不对呢?
发表于2012.08.23 12:55:12
23
106.003.082.***
106.003.082.***
发表于2012.07.12 00:01:26
22
113.105.***.***
113.105.***.***
我一直想知道的是Clone CD可以“1:1”复制CD吗?
发表于2011.07.01 15:18:52
21
116.233.***.***
116.233.***.***
他显然不会给出99.98963742%这样的数据
发表于2011.02.08 00:16:15
19
058.248.***.***
058.248.***.***
好哦
发表于2010.07.28 17:01:24
18
03
发表于2010.05.04 11:17:08
17
060.016.***.***
060.016.***.***
Offset(偏移)影响音质。
两个不同Offset(偏移)的光驱抓出的两个wav在wav编辑软件中的wav波形稍有不同。
发表于2010.02.22 08:55:04
16
058.062.***.***
058.062.***.***
发表于2009.05.24 15:23:42
15
220.179.***.***
220.179.***.***
14
发表于2006.09.15 08:17:33
11
提示
本贴不可匿名回复,回复等级为:1 ,您现在正处在潜水状态
回复
验证码
3174 为防止广告机贴垃圾,不得已而为之
表情
正文
京ICP备11010137号 京ICP证110276号 京公网安备110114000469号