2.制作CDTracks=1的特殊光盘(修改CDLabel和CDAllTime)
特殊光盘对于CDTracks和CDAllTime都有明确的要求,所以这次不能做空光盘了。
CDLabel的改法在上小节已经讲过,但是在这里遇到了一个特殊情况,就是特殊光盘几乎都是空卷标,所以再说一下,怎么做空卷标。在Winiso里,如果直接把原有的卷标全删掉,然后按回车,就会发现卷标没有修改成功。我们可以在卷标位置只输入一个空格,然后按回车,就会发现,光盘变成了无卷标。原因就是Winiso会自动删掉卷标结尾的空格。
CDAllTime音乐总时长又是个什么东西呢?
即使你往光盘里只放入MP3文件,也很难看出这个参数和MP3的实际时长有什么直接关联。实际上,这个所谓的“总时长”只是衡量光盘已用空间大小的,无论光盘里放的是音乐文件还是其他什么文件。
所以我们要知道怎么样换算音乐总时长和光盘已用空间。
例如0号特殊光盘,CDAllTime=17916034,我们首先把末两位和前面的数位分隔开,变成179160:34,前面是时间(不知道具体以什么为单位),一定是60的倍数,后面是零头帧数,取值范围是0~74。你也可以看看其他光盘的CDAllTime,都是满足这个规律的。
前后两部分数字的进位关系是逢75进60,也就是60单位时间=75帧。
例如某个光盘一共有752帧,752÷75=10……2,也就是有10组75帧,外加2帧的零头,然后这10组75帧进位成10组60单位时间,即600单位时间,于是这张光盘CDAllTime=60002
反过来计算,这个CDAllTime=17916034的光盘,换算成帧数就是179160÷60×75+34=223984帧。
然后帧数与光盘已用空间的关系是:(帧数+1)×2048=已用空间字节数。也就是说,毎帧是2KB(即2048字节),多加个1是因为程序猿都是从0开始数数的。
那么CDAllTime=17916034的光盘需要做成已用空间(223984+1)×2048=458721280字节。


所以为了达到想要的总时长,当然是往光盘里塞文件了,怎么放可以让它的字节数恰好达到我们想要的数呢?
首先要知道,光盘存储自身的格式信息固定要使用77824字节(77824=38×2048,这就是空盘的总时长是37的原因),剩下的就靠其中的文件。
在winiso界面最下方可以看到文件占用的空间,这个数字再加上77824就是总的光盘已用空间。


这里有一个文件大小,还有一个占用空间大小,计算时以后者为准,后者≥前者。因为占用空间一定是2048的倍数,如果实际的文件大小不是2048的倍数,那么文件占用的空间会略大于实际大小,向上凑整成为2048的倍数。
图中看到文件大小和占用空间恰好相等,那是因为我在做这些文件的时候就把他们的大小做得很整。
我使用的都是文本文档,它的大小是最好精确控制的。考虑到单个文件如果做的太大,打开就比较卡,所以我是做成每个文件16M,最后用一个文件来补齐零头。
文档内容全都是用UE填充的ASCII码00,这样做的好处是方便压缩。虽然36张特殊光盘平均都是几百M,加起来16个G,但是做成压缩包之后,连1个M都不到,神奇吧!