2

http://id3.org/id3v2.3.0仕様に基づくと、フレーム ヘッダーのレイアウトは次のとおりです。

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

2 に答える 2

5

これは実際には、仕様の不適切な表現のミスケースである可能性があると思います。ID3v2 Chapter Frame Addendumで、完全なヘッダーの例を示す2 つの図を見つけました。そのドキュメントには、目前の質問には関係のない、新しく導入された 2 つのフレーム タイプが記載されています。しかし幸いなことに、「タイトル/曲名/コンテンツの説明」フレーム ( TIT2) と「サブタイトル/説明の絞り込み」フレーム ( ) が埋め込まれた例も含まれTIT3ており、どちらもテキスト フレームです*:

ここに画像の説明を入力

図によると、タイトル フレーム (ID: TIT2) は次の構造を持っています。 最初にフレーム ヘッダー:

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

その直後にID 依存フィールドが続きます。

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

このレイアウトは私にとって最も理にかなっています。正しいレイアウトについてまだ疑問がある場合は、既存の実装のいずれかのソースを確認できます。

補足: ID3v2.4.0 仕様では、紛らわしい文を に変更しました。

さまざまなタイプのテキスト エンコーディングを許可するフレームには、テキスト エンコーディングの説明バイトが含まれています。

*異なるタイプのテキスト エンコーディングを許可するフレームだけに、テキスト エンコーディング記述バイトがあります。当然のことながら、これらのほとんどはテキスト フレームです。

于 2013-06-24T19:19:53.623 に答える