如果CD损坏(例如,如果放置在CD播放器中,则会结结等),如果将其撕裂在计算机上以创建MP3,则损坏的数据将如何响起?
只是轨道中间的“空白”吗?还是会听到乱码的音频/静态声音等?
为清楚起见,此问题与从CD读取音频并编码为MP3有关,而不是与上面带有MP3的数据CD有关。
如果CD损坏(例如,如果放置在CD播放器中,则会结结等),如果将其撕裂在计算机上以创建MP3,则损坏的数据将如何响起?
只是轨道中间的“空白”吗?还是会听到乱码的音频/静态声音等?
为清楚起见,此问题与从CD读取音频并编码为MP3有关,而不是与上面带有MP3的数据CD有关。
Answers:
好的CD开膛手软件会cdparanoia
尽力纠正CD的不良读数,并且会多次遍历受影响的部分;有时要等待几分钟,直到数据恢复。这是可能的,因为CD包含用于纠错的校验和,并且应立即检测到误读。
由于这种策略,与典型的实时播放CD播放设备相比,CD开膛手软件恢复正确数据的机会要高得多。
在极少数情况下,部分数据(在您的示例中为音频)仍然不可读,开膛手通常只会跳过该段。因此,对于已编码的MP3文件,它将跳过不良部分(可以在生成的音频文件中进行插值或听得到的跳过)。
MP3文件格式由帧组成。每个帧都以11个“ 1”位开始,还有几个字节的元数据来控制位速率并定义一些其他属性。每个帧都是独立的,因此以支持流的方式进行设计。
帧可以具有CRC-错误检查。它是可选的。
如果操作系统遇到CD上的坏扇区,则操作系统可能会重试读取(CD硬件在MP3编码器甚至看不到任何东西之前都有自己的错误检查机制)。假设解码器未在缓冲区上工作,则解码器在此过程中将不会接收新数据,因此必须停止。如果操作系统无法读取数据,则可能会向操作系统报告错误,该错误最终将报告给托管MP3编码器的进程。取决于软件,这里到底发生了什么。
如果错误地读取了CD中的数据并将其传递给解码器,则可能会发生一些可能的事情(在PC上可能不会发生,但在汽车立体声或其他非PC设备中可能会发生):
MP3解码器会寻找这11个1位来找到帧的开始-如果找不到它们,它可能会停止解码直到下一个帧。
如果标题数据不正确,则可能会以错误的比特率播放帧,因为指示哪个比特率可能是错误的字节。
如果标头CRC位置1且CRC不匹配,则解码器可能会将帧丢掉而不播放。大多数MP3文件没有设置CRC位。
如果有效载荷(标头后的数据)错误,则MP3解码器将尝试播放它。
解码器的工作是获取压缩数据并生成未压缩数据,以移交给“较高”级别。该上层实际上使用未压缩的数据来驱动音频设备。我可能会猜测大多数编码器/音频驱动器设置都有一个缓冲区-具有可配置的大小-MP3解码器可以在其中为音频驱动器建立一些数据并允许重试读取。
因此,无论如何,如果解码器由于未获取数据而停止,那么实际驱动音频的高层可能会执行以下任一操作:
如果解码器输出了错误的数据,您将听到静电或音频突然弹出。
参考。
在最好的情况下,开膛手设法检索足够的数据以使曲目播放得很好。在第二好的情况下,它放弃并且不会产生音轨,因为它不会。在最坏的情况下,您会得到一个音频文件,听起来像是您尝试在常规CD播放器中播放音轨或什至更糟(暂停,重复,卡结,尖音等)。
我对基于cdparanoia的撕裂者的经验通常是最好的情况,但是我遇到了这三种情况。