2013-06-23 46 views
1

基於http://id3.org/id3v2.3.0說明書中,幀頭的佈局是:ID3v2的規格

Frame ID  $xx xx xx xx (four characters) 
Size   $xx xx xx xx 
Flags   $xx xx 

但同一頁面只是幾個低於線的說,幀,允許不同類型的文本編碼的具有文本編碼描述字節後面的框架大小爲。如果使用ISO-8859-1這個字節應該是$00,如果使用Unicode它應該是$01

這是令人困惑的,因爲標誌(2字節)應該直接在幀大小信息之後,所以我期望編碼字節在標誌信息之後。

那麼現在什麼是正確的?

Frame ID  $xx xx xx xx (four characters) 
Size   $xx xx xx xx 
Flags   $xx xx 
Encoding  $xx 
Text 

Frame ID  $xx xx xx xx (four characters) 
Size   $xx xx xx xx 
Encoding  $xx 
Flags   $xx xx 
Text 

回答

4

我認爲這實際上可能是在規範不好措辭的 錯誤 情況。我在ID3v2 Chapter Frame Addendum中發現了兩個圖表,顯示完整標題的示例。該文件描述了兩個新引入的框架類型,這些框架類型對於手頭的問題不感興趣。但幸運的是,它也含有嵌入的 '名稱/ SONGNAME /內容description'幀(TIT2)和' 字幕/說明refinement'幀(TIT3)的例子,這兩者都是文本框*:

enter image description here

根據該圖中,標題幀(ID:TIT2)具有以下結構: 首先the frame header

Frame ID  $xx xx xx xx (four characters) 
Size   $xx xx xx xx 
Flags   $xx xx 

,然後直接跟着ID-dependent fields

Text encoding $xx Information  
<text string according to encoding> 

這種佈局對我來說最有意義。如果您仍然懷疑正確的佈局,可以查看existing implementations之一的來源。

旁註:ID3v2.4.0 specification他們改變了混淆的句子。

允許不同類型的文本編碼的幀包含文本 編碼描述字節。

* 只有鏡架,允許不同類型的文本編碼有一個文本編碼描述字節
不出所料,其中大多數是文本框

+0

該網站已關閉。 :( –

+0

@LittleHelper我剛剛檢查過它對我有用,否則你可以使用Wayback Machine:https://web.archive.org/web/20161022105303/http://id3.org/id3v2-chapters-1.0 – djf

2

幀頭是10個字節長。 UID的4個字節 幀的長度爲4個字節(不包括標頭) 標誌的2個字節。 任何其他信息將被發現在框架本身,而不是其標題。

措辭確實很混亂。

什麼意思是,當你期望讀取一個字符串時,第一個字節告訴你期望什麼。 $ 00表示ISO-8859-1或一個字節編碼 $ 01表示Unicode或2字節編碼。 $ 01後跟FF FF或FE FF以通知最高有效字節。

我建議你在某些mp3文件上使用hexa編輯器,並解剖它們

+0

有關讀取內容的額外字節的最後信息是黃金。謝謝! –