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

 




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM