CUE 文件格式说明

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 <cd-title>

PERFORMER <performer-name>

SONGWRITER <writer-name>

CATALOG <catalog-id>

REM DATE <date>

REM DISCID <discid-id>

REM GENRE <classes>

REM COMMENT <comments>

CDTEXTFILE <cd-text-file-name>

这里出现了如下命令:(也许你发现了,这些命令全部用大写,其实大小写没关系,但是为了格式化,所以命令再次统一用大写的)

   TITLE、CATALOG、SONGWRITER、PERFORMER、REM、CDTEXTFILE

下面我们对上面的命令逐行分析,记住 头部信息全部都是可有可无的,当然有就最好不过了。

-----------------------------------------------------------

TITLE 命令(头部)

  这条命令很明显,指定唱片标题。格式为:

  TITLE <title>

  比如MJ的专辑《Thriller》

TITLE "Thriller"

  注意:

  1、<title>必须小于80个字符。

  2、对于长且有空格的名称,必须用半角双引号引起来。这里建议在任何情况下都把<title>用双引号引起来。

  3、刻录时,如果刻录机不支持 CD-TEXT,则此命令将被忽略。但是在播放器里是有效的。

-----------------------------------------------------------

PERFORMER 命令(头部)

  这条命令也很简单,指定唱片演唱者。格式为:

  PERFORMER <performer-name>

  比如MJ的专辑《Thriller》

PERFORMER "Michelle Jackson"

  注意:

  1、<performer-name>必须小于80个字符。

  2、对于长且有空格的名称,必须用半角双引号引起来。这里建议在任何情况下都把<performer-name>用双引号引起来。

  3、刻录时,如果刻录机不支持 CD-TEXT,则此命令将被忽略。但是在播放器里是有效的。

-----------------------------------------------------------

SONGWRITER 命令(头部)

  这条命令也很简单,指定唱片乐曲编曲者。格式为:

  SONGWRITER <writer-name>

  比如冯曦妤的歌曲《幸运儿》

SONGWRITER "冯曦妤"

  注意:

  1、<writer-name>必须小于80个字符。

  2、对于长且有空格的名称,必须用半角双引号引起来。这里建议在任何情况下都把<writer-name>用双引号引起来。

  3、刻录时,如果刻录机不支持 CD-TEXT,则此命令将被忽略。但是在播放器里是有效的。

-----------------------------------------------------------

REM 命令(头部)

  这条命令表示注释,通常用来标明一些 CUE 阅读说明。格式为:

  REM <comments>

  比如

REM 这是说明哦。

  但是 REM 命令通常不会被这么使用,因为 CUE 文件格式简单,不需要写什么注释。于是 REM 就被用来指定各种 CUE 的扩展命令,这些扩展命令一般也是用于头部信息(音轨信息部分也有,后面会提到),一般作用于 Foobar2000 等音乐播放器。下面将逐个说明:


REM GENRE <class-names>

这个命令用于指定唱片、专辑的分类,建议后面的 <class-names> 用半角双引号引起来。

例如贝多芬精选集里其中一张 CD:

REM GENRE "Classical"


REM DISCID <cd-id>

这个命令用于指定 CD 的唯一编号,建议后面的 <cd-id> 用半角双引号引起来。

例如贝多芬精选集里其中一张 CD:

REM DISCID "5C0D6808"


REM DATE <date>

这个命令用于指定光盘的发行时间,精确到年。其中<date>可以用半角双引号引起来。

例如,一张 2009 年发布的 CD:

REM DATE 2009


REM COMMENT <comment-string>

这个命令用于指定 CUE 的生成说明,建议后面的 <comment-string> 用半角双引号引起来。

例如使用 EAC 生成的 CUE 文件一般都带如下类似信息:

REM COMMENT "ExactAudioCopy v0.99pb4"

-----------------------------------------------------------

CATALOG 命令

  这条命令用于指定唱片的唯一 EAN 编号。格式为:

  CATALOG <catalog-id>

  比如 George Michael 的专辑 《Songs From The Last Century》。

CATALOG "7243848740251"

  这是个比较重要的玩意儿,它表示这张唱片的身份证,是一个 13 位的数字,通常和唱片的 EAN 码一致。也就是说,这张唱片的唯一编号。世界上不会有两张唱片的 CATALOG 相同的。关于这个 CATALOG 码,要了解更多请参考百度百科

  注意:

  1、<catalog-id> 必须为13个字符。

  2、这里建议把 <catalog-id> 用半角双引号引起来。

  3、注意本命令最多只能在 CUE 文件内出现一次,可以没有。通常位于头部。

-----------------------------------------------------------

CDTEXTFILE 命令

  这条命令用于指定光盘上使用的 CD-TEXT 信息文件的名称,具体用途不在此说明,需要的请自行查阅相关文献。格式为:

  CDTEXTFILE <cd-text-filename>

  比如

CDTEXTFILE "cd-text1.cdt"

CDTEXTFILE "c:\cds\cd-text2.cdt"

  注意:

  1、<cd-text-filename> 可以是文件名,也可以包含文件路径。

  2、如果 <cd-text-filename> 内包含空格,那么必须用半角双引号引起来。这里建议总是把 <cd-text-filename> 用半角双引号引起来。

  3、如果刻录机不支持 CD-TEXT,那么此命令将被忽略。

-----------------------------------------------------------

  至此,头部信息文件介绍完毕。下面开始介绍数据轨描述表部分。

  数据轨描述表分为两部分:

    一、核心部分,即下面格式中未被[]包含的内容,这一部分是必须存在的;

    二、单轨描述信息,即下面格式中被[]包含的部分。

  数据轨描述表的格式如下:(注意[]不是内容,只是表示其里面的内容为可选

FILE <data-file-name> <file-type>

TRACK <track-id> <track-data-type>

INDEX 01 <track-begin-time>

[TITLE <track-title>]

[PERFORMER <performer-name>]

    [SONGWRITER <writer-name>]

[ISRC <isrc-code>]

[FLAGS <flags>]

    [PREGAP <pre-mute-time>]

[POSTGAP <post-mute-time>]

[REM REPLAYGAIN_TRACK_GAIN +/- *.** dB]

[REM REPLAYGAIN_TRACK_PEAK *.******]

[INDEX <index> <track-begin-time>]

  数据信息描述表格式如上所示,其中 FILE 命令可以有多条,而每条 FILE 命令下又可以有多条 TRACK 命令。下面介绍各条命令。

-----------------------------------------------------------

FILE 命令

  这条命令用于声明一个数据文件。格式为:

  FILE <data-file-name> <file-type>

  其中 <data-file-name> 是位于 CUE 文件 相同目录下的数据文件名称。<file-type> 为文件的数据类型:

<file-type> 说明 
 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、<data-file-name> 必须用半角双引号引起来。

  3、注意 <data-file-name> 必须与 CUE 文件位于相同目录下。

-----------------------------------------------------------

TRACK 命令

  这条命令用于声明某个数据文件内的一条数据轨段。格式为:

  TRACK <track-id> <track-data-type>

  其中 <track-id> 是轨段编号,取值必须在 01 到 99 之内。<track-data-type> 为轨段的数据类型,与刻录机型号有关,一般为 AUDIO,其他 <track-data-type> 类型请自行查阅相关文献。

  比如:

TRACK 01 AUDIO

  注意:

  1、每个 FILE 命令内至少含有一条 TRACK 命令。

  2、<track-id> 即为播放器内识别的 音轨号。

-----------------------------------------------------------

INDEX 命令

  这条命令对某个数据文件内的一条数据轨进行分段。格式为:

  INDEX <index> <begin-time>

  其中 <index> 是子轨段编号,取值必须在 00 到 99 之内。<begin-time> 为子轨段的时间起点。对于<index>,其中00和01为比较特殊的点。00 为要跳过的轨内空白段,而 01 为轨段的有效起点。

  比如一个 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 <skip-time>

  这条命令的作用和 INDEX 00 相似,但却又不相同。其中 <skip-time> 是要插入的空白时间长度。区别在于:

  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 <skip-time>

  这条命令的作用和 INDEX 00 相似,但却又不相同。其中 <skip-time> 是要插入的空白时间长度。区别在于:

  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 <isrc-code>

  例如 NightWish 的《Imaginearum》专辑里第1轨:

ISRC FI3SN1100001

  注意:

  1、该命令是单轨信息部分,必须出现在 TRACK 命令后面,且每轨只能有一条 ISRC 命令。

  2、<isrc-code> 可以并建议用半角双引号引起来。

-----------------------------------------------------------

FALGS 命令

  该命令指定数据轨的 SUBCODES,用于刻录中。格式为:

  FLAGS <subcodes>

  可用 SUBCODES 如下:

<subcode> 说明 
 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

时间: 2024-08-05 09:05:19

CUE 文件格式说明的相关文章

文件格式说明

电脑常用文件格式大全 文件格式, 电脑, Microsoft, ACL, Adobe A 对象代码库文件 AAM Authorware shocked文件3 }! H, l& {$ O' H5 T% L& W6 | AAS Authorware shocked包8 s& u1 ^' {6 v1 j1 N ABF Adobe二进制屏幕字体" k% _8 g/ V: `% z# z0 i+ W ABK CorelDRAW自动备份文件 ABS 该类文件有时用于指示一个摘要(就像

配置文件格式用哪个?文件夹+纯文本文件,XML,SQLite

稍具规模的软件都会须要一个配置文件来支持软件的执行.眼下常见的配置文件格式有纯文本.XML.SQLite.自己定义二进制格式,怎样进行选择呢? 1 纯文本--永远不会失效的文件格式 文本化是传统Unix哲学的教条之中的一个,可见其巨大威力.大多数类Unix系统的软件配置文件都是採用了纯文本格式. 比如/etc/inittab, /etc/fstab, httpd.conf等等. 1.1 长处 (1)可读性强 配置文件不仅须要让机器理解,也须要让人理解. 纯文本就很easy让人理解. (2)存在大

INI文件格式

最近在看git命令,遇到INI文件格式,上网查了一下,把它总结一下: 程序没有任何配置文件,那么它对外是全封闭的,一旦程序需要修改一些参数必须要修改程序代码本身并重新编译,为了让程序出厂后还能根据需要进行必要的配置,所以要用配置文件:配置文件有很多种,如INI配置文件,XML配置文件,cfg配置文件,还有就是可以使用系统注册表等. 本文主要介绍INI文件的格式信息. INI "就是英文 "initialization"的头三个字母的缩写:当然INI file的后缀名也不一定是

Caffe应用篇----文件格式转换

我们手中有的一般都是图片数据,jpg.bmp格式等,但caffe常使用的数据是db格式(leveldb/lmdb),因此首先我们要将自己数据转换成caffe可运行的格式文件.别捉鸡,caffe有给我们提供工具.根目录的tools文件下convert_imageset.cpp,经编译生成可执行文件,存放于./build/tools/文件,这个文件可帮我们将图片文件转换成db格式. 以分类任务为例,需要4个文件,train.train.txt.val.val.txt,train和val分别存放训练数

PE文件格式学习之PE头移位

以前刚开始学网络安全,是从免杀开始的.记得那时候杀毒软件还很弱.金山江民瑞星还存在. 那会什么原理也不懂,就一直瞎鼓捣.(后来转入渗透行列了) 这段时间一直在学PE格式,突然想起来以前很古老的PE文件头移位. 网上搜了搜,看大家虽然做了视频,但是竟然没人讲原理.借着刚好在学PE格式的知识,就做个PE文件头移位的笔记.(不喜勿喷,刚学PE头文件格式,难免出错请提点,谢谢) 当然现在这种很古老的免杀方式对于杀软来说根本是不堪一击了.纯属做笔记. PE文件的基本结构如图示: IMAGE_DOS_HEA

怎样把ppt文档转成pdf文件格式

现在很多的演示文档是用ppt做的,而pdf也是传递文档资料时一种常用的文档,有时候就会需要将ppt转换成为pdf的文件格式,那具体是怎样操作,如何把ppt转成pdf文件呢? 首先对于一些比较大的幻灯片文件,这些文件可以用转换工具来进行转换.可以把文件的内容完整的转换到pdf中. 打开转换器,选择ppt转pdf这个选项,然后把要转换的文件通过添加按钮或者是直接拖入到转换器的列表区.文件在转换之前需要关闭,不能打开编辑查看. 然后可以直接点开始转换,如果是对指定页码范围进行转换,也可以设置文件页码后

常见的多媒体文件格式几种类型

常见的多媒体文件格式类型 多媒体技术从根本上改变了昔日基于字符的各种计算机处理,动感十足的图象.声音给计算机带来了无限生机.多媒体技术的核心就是使用计算机综合处理声音.文字.图象等多媒体信息,使得计算机更富有娱乐性.更趋人性化. 3.图(常见图像文件名后缀) BMP(*.bmp):一种位图(BitMap)文件格式,它是一组点(像素)组成的图像,Windows系统下的标准位图格式,使用很普遍.其结构简单,未经过压缩,一般图像文件会比较大.它最大的好处就是能被大多数软件“接受”,可称为通用格式. 常

elf文件格式

android是建立在linux的基础上,其底层代码是安装linux可执行文件——elf的格式来组装的.本文结合android中的so文件来了解elf格式,资料大多收集于网上:elf格式位于android源码:elf.h. elf大致可分为三部分:elf头.程序头表.节区头表:当然还有上图没标出的动态符号表, elf头: #define EI_NIDENT 16 typedef struct { unsigned char e_ident[EI_NIDENT]; //magic Elf32_Ha

windows与linux文件格式的互转

有时在windows 下编写好一个脚本,复制到linux 里不能正常运行,表面上也看不出脚本语法问题,但就是不能正常运行:有时linux 下的某个脚本本来可以正常运行,可是从windows 的某处(从文件或邮箱里)复制了几句命令,粘贴到linux 的这个脚本里,保存后,这个脚本也变得不能正常运行.出现这两种情况(实际上是一种情况:linux 中的脚本包含了来自windows 的内容)的基本原因是两种系统的文件格式不同. 在windows 下,文件的换行符为\r\n,而在linux 下,它是\n.