CUE 文件,即 CUESheets ,光盘镜像辅助文件。通常用于光盘刻录、音乐播放等等。
比如用 EAC 刻录CD光盘,或者用 Foobar2000 播放整轨音乐文件。
CUE 文件是非常好的音乐专辑信息载体,使用它可以使专辑信息和音乐文件分离,从而达到播放整轨 WAV、FLAC、APE 等文件的目的。
由于篇幅有限,本文只描述音乐文件播放相关的内容,因此和刻录有关的信息可能不大详细,敬请原谅。
本文档分为三部分:
一、CUE 基本规范
二、CUE 命令参考
三、范例解析
=====================================================
一、CUE 基本规范
1、CUE 是使用 ANSI 编码文本 格式储存的,以 .cue 为后缀储存的文件。
2、其内容分为 Header 文件头,和 Tracks-Info 数据轨描述表两部分。其中 Header 文件头是可选的。
3、CUE 文件必须与文件内描述的数据文件位于同一目录下。(FLAC 音频文件可以内嵌 CUE 文件)
4、CUE 文件的修改与数据文件无关,因而 CUE 文件的丢失对数据文件无实质影响。
=====================================================
二、CUE 命令参考
首先我们来看看 Header 文件头,其常见格式如下:(文件头是可选的,其全部内容都不是必须的)
TITLE
PERFORMER
SONGWRITER
CATALOG
REM DATE
REM DISCID
REM GENRE
REM COMMENT
CDTEXTFILE
这里出现了如下命令:(也许你发现了,这些命令全部用大写,其实大小写没关系,但是为了格式化,所以命令再次统一用大写的)
TITLE、CATALOG、SONGWRITER、PERFORMER、REM、CDTEXTFILE
下面我们对上面的命令逐行分析,记住 头部信息全部都是可有可无的,当然有就最好不过了。
-----------------------------------------------------------
TITLE 命令(头部)
这条命令很明显,指定唱片标题。格式为:
TITLE
比如MJ的专辑《Thriller》
TITLE "Thriller"
注意:
1、
2、对于长且有空格的名称,必须用半角双引号引起来。这里建议在任何情况下都把
3、刻录时,如果刻录机不支持 CD-TEXT,则此命令将被忽略。但是在播放器里是有效的。
-----------------------------------------------------------
PERFORMER 命令(头部)
这条命令也很简单,指定唱片演唱者。格式为:
PERFORMER
比如MJ的专辑《Thriller》
PERFORMER "Michelle Jackson"
注意:
1、
2、对于长且有空格的名称,必须用半角双引号引起来。这里建议在任何情况下都把
3、刻录时,如果刻录机不支持 CD-TEXT,则此命令将被忽略。但是在播放器里是有效的。
-----------------------------------------------------------
SONGWRITER 命令(头部)
这条命令也很简单,指定唱片乐曲编曲者。格式为:
SONGWRITER
比如冯曦妤的歌曲《幸运儿》
SONGWRITER "冯曦妤"
注意:
1、
2、对于长且有空格的名称,必须用半角双引号引起来。这里建议在任何情况下都把
3、刻录时,如果刻录机不支持 CD-TEXT,则此命令将被忽略。但是在播放器里是有效的。
-----------------------------------------------------------
REM 命令(头部)
这条命令表示注释,通常用来标明一些 CUE 阅读说明。格式为:
REM
比如
REM 这是说明哦。
但是 REM 命令通常不会被这么使用,因为 CUE 文件格式简单,不需要写什么注释。于是 REM 就被用来指定各种 CUE 的扩展命令,这些扩展命令一般也是用于头部信息(音轨信息部分也有,后面会提到),一般作用于 Foobar2000 等音乐播放器。下面将逐个说明:
REM GENRE
这个命令用于指定唱片、专辑的分类,建议后面的
例如贝多芬精选集里其中一张 CD:
REM GENRE "Classical"
REM DISCID
这个命令用于指定 CD 的唯一编号,建议后面的
例如贝多芬精选集里其中一张 CD:
REM DISCID "5C0D6808"
REM DATE
这个命令用于指定光盘的发行时间,精确到年。其中
例如,一张 2009 年发布的 CD:
REM DATE 2009
REM COMMENT
这个命令用于指定 CUE 的生成说明,建议后面的
例如使用 EAC 生成的 CUE 文件一般都带如下类似信息:
REM COMMENT "ExactAudioCopy v0.99pb4"
-----------------------------------------------------------
CATALOG 命令
这条命令用于指定唱片的唯一 EAN 编号。格式为:
CATALOG
比如 George Michael 的专辑 《Songs From The Last Century》。
CATALOG "7243848740251"
这是个比较重要的玩意儿,它表示这张唱片的身份证,是一个 13 位的数字,通常和唱片的 EAN 码一致。也就是说,这张唱片的唯一编号。世界上不会有两张唱片的 CATALOG 相同的。关于这个 CATALOG 码,要了解更多请参考百度百科。
注意:
1、
2、这里建议把
3、注意本命令最多只能在 CUE 文件内出现一次,可以没有。通常位于头部。
-----------------------------------------------------------
CDTEXTFILE 命令
这条命令用于指定光盘上使用的 CD-TEXT 信息文件的名称,具体用途不在此说明,需要的请自行查阅相关文献。格式为:
CDTEXTFILE
比如
CDTEXTFILE "cd-text1.cdt"
CDTEXTFILE "c:\cds\cd-text2.cdt"
注意:
1、
2、如果
3、如果刻录机不支持 CD-TEXT,那么此命令将被忽略。
-----------------------------------------------------------
至此,头部信息文件介绍完毕。下面开始介绍数据轨描述表部分。
数据轨描述表分为两部分:
一、核心部分,即下面格式中未被[]包含的内容,这一部分是必须存在的;
二、单轨描述信息,即下面格式中被[]包含的部分。
数据轨描述表的格式如下:(注意[]不是内容,只是表示其里面的内容为可选
FILE
TRACK
INDEX 01
[TITLE
[PERFORMER
[SONGWRITER
[ISRC
[FLAGS
[PREGAP
[POSTGAP
[REM REPLAYGAIN_TRACK_GAIN +/- *.** dB]
[REM REPLAYGAIN_TRACK_PEAK *.******]
[INDEX
数据信息描述表格式如上所示,其中 FILE 命令可以有多条,而每条 FILE 命令下又可以有多条 TRACK 命令。下面介绍各条命令。
-----------------------------------------------------------
FILE 命令
这条命令用于声明一个数据文件。格式为:
FILE
其中
说明
BINARY
二进制数据文件,必须是 Little-Endian 编码格式。
MOTOROLA
二进制数据文件,必须是 Big-Endian 编码格式。
AIFF
AIFF 音频文件
WAVE
WAVE 音频文件(WAV/FLAC/APE)
MP3
MP3 音频文件
不同的文件应该对应不同的文件类型。
比如:
FILE "01 - Niki Nana (We're One).flac" WAVE
注意:
1、每个 CUE 文件内至少含有一条 FILE 命令。
2、
3、注意
-----------------------------------------------------------
TRACK 命令
这条命令用于声明某个数据文件内的一条数据轨段。格式为:
TRACK
其中
比如:
TRACK 01 AUDIO
注意:
1、每个 FILE 命令内至少含有一条 TRACK 命令。
2、
-----------------------------------------------------------
INDEX 命令
这条命令对某个数据文件内的一条数据轨进行分段。格式为:
INDEX
其中
比如一个 TRACK 和前一个 TRACK 之间有50秒的空档:
TRACK 01 AUDIO
INDEX 01 00:00:00
REM 每个文件的第一个 TRACK 不能有 INDEX 00,其 INDEX 01 必须为 00:00:00。
TRACK 02 AUDIO
INDEX 00 00:05:00
REM 此处跳过 50s 的空档,直接到 05:50 继续播放。
REM 因为 INDEX 01 才是 TRACK 02 的开始,所以 INDEX 00 可以
REM 看作是 TRACK 01 的有效结束时间。
INDEX 01 00:05:50
注意:
1、每个 TRACK 命令内至少含有 INDEX 01。
2、每个文件第一个 TRACK 的 INDEX 01 都应从 00:00:00 开始,且不得有 INDEX 00。很多 CUE 文件无法被 Foobar2000 识别,就是因为这个错误。
-----------------------------------------------------------
PREGAP 命令
这条命令类似于 INDEX 00,但又略有所不同。格式为:
PREGAP
这条命令的作用和 INDEX 00 相似,但却又不相同。其中
1、PREGAP 是在该轨段前硬性加入一段空白时间(数据全为0),常用于刻录中,Foobar2000 不支持。
2、PREGAP 是在轨段前插入真实数据,而 INDEX 00 只是跳过轨段内部的一段数据,因此两者不同。
3、PREGAP 可以用于文件的第一个 TRACK 中,而 INDEX 00 不可以。
比如:
TRACK 01 AUDIO
PREGAP 00:02:00
INDEX 01 00:00:00
注意:
1、每个 TRACK 命令内最多只能有一条 PREGAP 命令。
2、PREGAP 必须位于 TRACK 命令后,所有 INDEX 命令之前。
-----------------------------------------------------------
POSTGAP 命令
这条命令类似于 INDEX 00,但又略有所不同。格式为:
POSTGAP
这条命令的作用和 INDEX 00 相似,但却又不相同。其中
1、POSTGAP 是在该轨段后硬性加入一段空白时间(数据全为0),常用于刻录中,Foobar2000 不支持。
2、POSTGAP 是在轨段后插入真实数据,而 INDEX 00 只是跳过轨段内部的一段数据,因此两者不同。
3、POSTGAP 可以文件的第一个 TRACK 中,而 INDEX 00 不可以。
比如:
TRACK 01 AUDIO
INDEX 01 00:00:00
POSTGAP 00:02:00
注意:
1、每个 TRACK 命令内最多只能有一条 POSTGAP 命令。
2、POSTGAP 必须位于所有 INDEX 命令之后。
-----------------------------------------------------------
TITLE、SONGWRITER、PERFORMER 命令
用于描述每条数据轨段的信息,用法参考 Header 部分。
注意:
1、在数据轨描述表内,这3条命令必须在 TRACK 命令后使用。
-----------------------------------------------------------
ISRC 命令
该命令指定数据轨的 ISRC 码(参考百度百科)。格式为:
ISRC
例如 NightWish 的《Imaginearum》专辑里第1轨:
ISRC FI3SN1100001
注意:
1、该命令是单轨信息部分,必须出现在 TRACK 命令后面,且每轨只能有一条 ISRC 命令。
2、
-----------------------------------------------------------
FALGS 命令
该命令指定数据轨的 SUBCODES,用于刻录中。格式为:
FLAGS
可用 SUBCODES 如下:
说明
DCP
允许数位复制。
PRE
允许预加重。
4CH
四声道音讯。
SCMS
连续复制管理系统。
例如 Bandari 的《Emerald Valley》专辑里第1轨:
FLAGS DCP
注意:
1、该命令是单轨信息部分,必须出现在 TRACK 命令后面,且每轨只能有一条 FLAGS 命令
2、FLAGS 命令一次可以指定多条 subcode。
---------------------------------------------------------
REM 命令
REM 命令在头部信息中已经描述过,此处对其扩展命令的用法进行补充说明,只用于 TRACK 命令中。格式为:
REM REPLAYGAIN_TRACK_GAIN +/- *.** dB
这个命令用于指定音轨的增益回放信息,用于提高/降低音量。
例如Groove Coverage的《21st Century》第02轨:
REM REPLAYGAIN_TRACK_GAIN -10.22 dB
REM REPLAYGAIN_TRACK_PEAK *.******
这个命令用于指定音轨的增益回放信息,指定音轨峰值。
例如Groove Coverage的《21st Century》第02轨:
REM REPLAYGAIN_TRACK_PEAK 0.977142
=====================================================
三、范例解析
实例1:(此处 /**/ 表示我的注释,注意 “/**/” 并非CUE内容
PERFORMER "Nightwish" /* 指定音乐光盘作者 */
TITLE "Nemo, CDS, Normal Version" /* 指定光盘标题 */
REM GENRE "Heavy Metal" /* 音乐分类 */
REM DATE 2004 /* 发行年份 */
REM DISCID 3F054305 /* 光盘 DISCID 编码 */
REM COMMENT "ExactAudioCopy v0.99pb4" /* CUE 生成信息 */
FILE "Nightwish - Nemo, CDS, Normal Version.ape" WAVE /* FILE 命令,指定音乐文件 */
TRACK 01 AUDIO /* 第一个音轨 */
TITLE "Nemo (From The Album 'Once')" /* 音轨标题 */
PERFORMER "Nightwish" /* 音乐演唱者 */
INDEX 01 00:00:00 /* 第一轨 INDEX 01 必须从 00:00:00 开始 */
TRACK 02 AUDIO /* 第二个音轨 */
TITLE "Planet Hell(From The Album 'Once')" /* 音轨标题 */
PERFORMER "Nightwish" /* 音乐演唱者 */
REM REPLAYGAIN_TRACK_GAIN -8.32 dB /* 音乐增益回放信息 */
REM REPLAYGAIN_TRACK_PEAK 0.977234 /* 音乐增益回放信息 */
INDEX 00 04:29:03 /* 跳过两轨间的空档 */
INDEX 01 04:29:04 /* 第二个音轨的起点 */
实例2:
TITLE "Imaginaerum"
PERFORMER "Nightwish"
REM GENRE "Symphonic Metal"
REM DATE 2011
REM DISCID BA118E0D
REM COMMENT "ExactAudioCopy v1.0b3"
FILE "01 - Taikatalvi.flac" WAVE /* 第一个文件 */
TRACK 01 AUDIO /* 只有一个 TRACK */
TITLE "Taikatalvi"
PERFORMER "Nightwish"
REM REPLAYGAIN_TRACK_GAIN -5.14 dB
REM REPLAYGAIN_TRACK_PEAK 0.977142
ISRC FI3SN1100001 /* 指定音轨的 ISRC 编号 */
INDEX 01 00:00:00 /* 每个文件第一个 TRACK 的 INDEX 01 必须从 00:00:00 开始,且不能有 INDEX 00*/
FILE "02 - Storytime.flac" WAVE /* 第二个文件 */
TRACK 02 AUDIO /* 只有一个 TRACK */
TITLE "Storytime"
PERFORMER "Nightwish"
ISRC FI3SN1100002 /* 指定音轨的 ISRC 编号 */
INDEX 01 00:00:00 /* 每个文件第一个 TRACK 的 INDEX 01 必须从 00:00:00 开始,且不能有 INDEX 00*/
实例3:
TITLE "Example"
PERFORMER "Unknown"
FILE "exp1.wav" WAVE /* 第一个文件 */
TRACK 01 AUDIO /* 文件的第一个音轨 */
TITLE "Track 01"
INDEX 01 00:00:00
TRACK 02 AUDIO /* 文件的第二个音轨 */
TITLE "Track 02"
INDEX 00 00:04:49 /* 跳过其中 7s 空白*/
INDEX 01 00:04:56
FILE "exp2.wav" WAVE /* 第二个文件 */
TRACK 03 AUDIO /* 文件的第一个音轨 */
TITLE "Track 03"
INDEX 01 00:00:00
CUE 文件格式说明的更多相关文章
树莓派研究笔记(7)-- lakka 《仙剑奇侠传》的完美移植
仙剑,这是我玩的第一个电脑游戏.真的太经典,无法超越.原来第一次玩的缺少开场动画,很多地方不明不白的.现在终于我们可以把这个梦想继续到树莓派中. LAKKA是支持DOS模拟器的,所以我们一定要下载DO ...
mplayer - Linux下的电影播放器
概要 mplayer [选项] [ 文件 | URL | 播放列表 | - ] mplayer [全局选项] 文件1 [特定选项] [文件2] [特定选项] mplayer [全局选项] {一组文件和 ...
多媒体文件格式之MKV
[时间:2016-07] [状态:Open] MKV是一种开源的多媒体封装格式,是Matroska中应用比较多的格式之一.常见的后缀格式是.mkv(视频,包括音频和字幕)..mka(纯音频)..mks ...
MATROSKA 文件格式
MATROSKA 文件格式 1.EBML (Extensible Binary Meta Language): EBML语言使用不定长整数,这种方式相对于固定长度的32位/64位字长的整数值更节约空间 ...
RIFF和WAVE音频文件格式
RIFF file format RIFF全称为资源互换文件格式(Resources Interchange File Format),是Windows下大部分多媒体文件遵循的一种文件结构.RIFF文 ...
JavaSe:Properties文件格式
Properties文件格式说明 Properties继承自Hashtable,是由一组key-value的集合. 在Java中,常用properties文件作为配置文件.它的格式是什么样的呢? 下图 ...
Dotnet文件格式解析
0x0.序 解析过程并没有介绍对pe结构的相关解析过程,网上此类相关资料很多可自行查阅,本文只介绍了网上资料较少的从pe结构的可选头中的数据目录表中获取dotnet目录的rva和size,到完全解析d ...
Reverse Core 第二部分 - 13章 - PE文件格式
@date: 2016/11/24 @author: dlive PE (portable executable) ,它是微软在Unix平台的COFF(Common Object File For ...
iOS 图片文件格式判断、圆角图片
1.圆角图片 // 设置圆形图片(放到分类中使用) - (UIImage *)cutCircleImage { UIGraphicsBeginImageContextWithOptions(self. ...
随机推荐
【2018.12.10】NOI模拟赛3
题目 WZJ题解 大概就是全场就我写不过 $FFT$ 系列吧……自闭 T1 奶一口,下次再写不出这种 $NTT$ 裸题题目我就艹了自己 -_-||| 而且这跟我口胡的自创模拟题 $set1$ 的 $T ...
BSGS算法 (小步大步 Baby Step Gaint Step)
当你要求满足: $$ A^x \equiv B \ (\bmod \ P) $$ 的最小非负整数 x (gcd(A,P)==1)就可以用到 BSGS 了 设 $ m=\sqrt{P} $ 向上取整 处 ...
Codevs 1026 逃跑的拉尔夫
时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 年轻的拉尔夫开玩笑地从一个小镇上偷走了一辆车,但他没想到的是那辆车属于警察局,并且 ...
集合-LinkList
参考:http://www.cnblogs.com/skywang12345/p/3308807.html Consumer.class 消费者接口 参考:https://www.jianshu. ...
msp430项目编程54
msp430综合项目---扩展项目四54 1.电路工作原理 2.代码(显示部分) 3.代码(功能实现) 4.项目总结
在dedecms系统下, 改写火车头的入库接口 写一个接口文件运行一次自动读取 http://news.163.com/rank/
1:火车头入库接口里面的密码与login.php传过来的密码是保持一致的: 2:在(!$ispost)里面编写一个form表单提交,验证用户名,channelid,以及typeid; html代码格式 ...
call 和 apply 方法区别
在js中call和apply它们的作用都是将函数绑定到另外一个对象上去运行,两者仅在定义参数方式有所区别,下面我来给大家介绍一下call和apply用法. 在web前端开发过程中,我们经常需要改变th ...
2017-10-28-afternoon-清北模拟赛
T1 水题(water) Time Limit:1000ms Memory Limit:128MB 题目描述 LYK出了道水题. 这个水题是这样的:有两副牌,每副牌都有n张. 对于第一副牌的每张牌 ...
T1405 奶牛的旅行 codevs
http://codevs.cn/problem/1405/ 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 农民John的农场 ...
Android判断屏幕锁屏的方法总结
由于做一个项目,需要判断屏幕是否锁屏,发现网上方法很多,但是比较杂,现在进行总结一下: 总共有两类方法: 一.代码直接判定 二.接收广播 现在先说第一类方法(代码直接判定): 1.通过PowerMan ...