'id3v2'에 해당되는 글 3건

  1. 2009.10.09 ID3v2 분석
  2. 2009.10.08 ID3v2 Frame ID List
  3. 2009.10.08 MP3 ID3 tag 분석
2009. 10. 9. 10:32

ID3v2 분석

mp3 파일은 크게 보면 아래와 같은 구조로 이루어져 있다.


ID3v2는 중복해서 들어갈 수 있기 때문에 하나만 있을 수도 있고 여러개가 있을 수도 있다. ID3v1은 파일의 끝에 붙는다. 오늘은 ID3v2에 대해 더 자세히 알아보도록 하겠다.

=======================================================================================================

ID3v2 의 구조

ID3v2는 아래와 같은 형식으로 이루어져 있다.


헤더는 ID3v2에 대한 전체적인 정보를 가지고 있고, 각 프레임은 가수, 제목, 앨범, 앨범자켓 이미지등의 정보가 각각의 프레임으로 구성되어 있다.

실제 mp3을 헥스뷰어로 열어봐서 각 바이트별로 분석해보겠다.


=======================================================================================================
ID3v2 헤더(10 bytes)


==========================================================
Byte(Length)      Content
==========================================================
0-2(3)               Tag Identifier (ID3가 적힌다)
3-4 (2)              Tag Version.
5(1)                  Flags
6-9(4)               Size of Tag (Tag의 사이즈)
==========================================================

0x00 ~ 0x02 : ID3라고 되있으므로 이 부분부터는 ID3v2라는 것을 의미한다.
0x03 ~ 0x04 : 4와 0으로 되있으므로 버전이 ID3v2.4.0 임을 의미한다.
0x05 : flag 인데 대부분 0 으로 되있다.
0x06 ~ 0x09 :
 tag의 크기인데 중요한것은 이 값이 mp3안에 있는 모든 tag의 크기가 아니라 자신의 크기만이란 것이다. 이 뒤에 ID3으로 시작하는 부분이 또 있을 수 있다. 즉, 위에서 말했듯이 중복해서 들어갈 수 있기 때문에 tag의 총 크기를 구하려면 크기를 누적해서 구해야한다.
 또 중요한 것이 있는데 저기 적힌 값은 Encoding 된 값이다. 4바이트 중에 각 바이트의 최상위 비트를 제거하고 붙여주어야 원래 크기가 된다.
 실제로 값을 구해보면 00 00 05 13 을 2진수로 표현하면,  0000 0000 , 0000 0000,  0000 0101,  0001 0011 이 된다. 여기서 각 바이트의 최상위 비트를 제거하면 000 0000,  000 0000, 000 0101, 001 0011 이 되고, 이를 한줄로 합치면
0000 0000 0000 0000 0010 1001 0011 = 0x293 가 된다.
 그런데 이 값은 헤더의 길이는 포함하지 않은 길이이기 때문에 실제 ID3v2 tag의 길이는 헤더 길이 10바이트를 더해준 0x293 + 10 = 0x29D 가 된다.

=======================================================================================================
ID3v2 프레임(가변 길이)


프레임은 헤더와 내용으로 이루어져있다. 빨간색으로 표시한 부분이 헤더이고, 파란색으로 표시한 부분이 데이터이다.
=============================
- Header
Byte  Content
0-3    Frame identifier
4-7    Size
8-9   Flags
=============================

0x0A ~ 0x0D : 프레임의 ID 이다. 이에 대한 자세한 정보는 이전 포스팅에서 다루었다.

               TIT2는 Title/songname/content description 즉, 노래 제목이다.
0x0E ~ 0x11 : 프레임의 크기이다. 00 00 00 38 이므로 십진수로 56이다. 이것은 헤더를 제외한 프레임 크기이다.
                    따라서 헤더를 포함한 프레임의 크기는 헤더 10바이트를 더한 66바이트 이다.
0x12 ~ 0x13 : 플래그인데 보통 0으로 세팅되어 있다.

헤더 뒤부터는 데이터인데 프레임의 크기가 56이므로 되어있었으므로 56바이트의 크기로 TIT2 즉, 노래 제목이 저장되어 있다.


표시된 부분 다음에 보면 다시 TPE1이라고 되있는데 이것을 이전 포스팅에서 찾아보면 가수이름이라고 되있다. 이런식으로 프레임들이 이어져 붙어 있다.

'공부합시다 > 파일 포맷' 카테고리의 다른 글

PE 파일 분석  (3) 2009.10.26
ID3v2 Frame ID List  (0) 2009.10.08
MP3 ID3 tag 분석  (0) 2009.10.08
2009. 10. 8. 15:05

ID3v2 Frame ID List

출처 : http://tagged.sourceforge.net/id3v2-Data-man.html

=======================================================================================================
List of Simple Frames

IPLS : Involved people list
MCDI : Music CD identifier
PCNT : Play counter
TALB : Album/Movie/Show title
TBPM : BPM (beats per minute)
TCOM : Composer
TCON : Content type
TCOP : Copyright message
TDAT : Date
TDLY : Playlist delay
TENC : Encoded by
TEXT : Lyricist/Text writer
TFLT : File type
TIME : Time
TIT1 : Content group description
TIT2 : Title/songname/content description
TIT3 : Subtitle/Description refinement
TKEY : Initial key
TLAN : Language(s)
TLEN : Length
TMED : Media type
TOAL : Original album/movie/show title
TOFN : Original filename
TOLY : Original lyricist(s)/text writer(s)
TOPE : Original artist(s)/performer(s)
TORY : Original release year
TOWN : File owner/licensee
TPE1 : Lead performer(s)/Soloist(s)
TPE2 : Band/orchestra/accompaniment
TPE3 : Conductor/performer refinement
TPE4 : Interpreted, remixed, or otherwise modified by
TPOS : Part of a set
TPUB : Publisher
TRCK : Track number/Position in set
TRDA : Recording dates
TRSN : Internet radio station name
TRSO : Internet radio station owner
TSIZ : Size
TSRC : ISRC (international standard recording code)
TSSE : Software/Hardware and settings used for encoding
TYER : Year
WCOM : Commercial information
WCOP : Copyright/Legal information
WOAF : Official audio file webpage
WOAR : Official artist/performer webpage
WOAS : Official audio source webpage
WORS : Official internet radio station homepage
WPAY : Payment
WPUB : Publishers official webpage

=======================================================================================================
List of Complex Frames

AENC : Audio encryption
      Keys: URL, Preview start, Preview length

APIC : Attached picture
      Keys: MIME type, Picture Type, Description, _Data

COMM : Comments
      Keys: Language, short, Text

COMR : Commercial frame
      Keys: Price, Valid until, URL, Received as, Name of Seller, Description, MIME type, _Logo

ENCR : Encryption method registration
      Keys: Owner ID, Method symbol, _Data

GEOB : General encapsulated object
      Keys: MIME type, Filename, Description, _Data

GRID : Group identification registration
      Keys: Owner, Symbol, _Data

LINK : Linked information
      Keys: _ID, URL, Text

OWNE : Ownership frame
      Keys: Price payed, Date of purchase, Text

POPM : Popularimeter
      Keys: URL, Rating, _Data

PRIV : Private frame
      Keys: Text, _Data

RBUF : Recommended buffer size
      Keys: Buffer size, Embedded info flag, Offset to next tag

RVRB : Reverb
      Keys: Reverb left (ms), Reverb right (ms), Reverb bounces (left), Reverb bounces (right), Reverb feedback (left to left), Reverb feedback (left to right), Reverb feedback (right to right), Reverb feedback (right to left), Premix left to right, Premix right to left

SYTC : Synchronized tempo codes
      Keys: Time Stamp Format, _Data

TXXX : User defined text information frame
      Keys: Description, Text

UFID : Unique file identifier
      Keys: Text, _Data

USER : Terms of use
      Keys: Language, Text

USLT : Unsychronized lyric/text transcription
      Keys: Language, Description, Text

WXXX : User defined URL link frame
      Keys: Description, URL

=======================================================================================================
List of Other Frames

EQUA : Equalization
ETCO : Event timing codes
MLLT : MPEG location lookup table
POSS : Position synchronisation frame
RVAD : Relative volume adjustment
SYLT : Synchronized lyric/text






... 아 ㅅㅂ 졸라 많어...ㅠ

'공부합시다 > 파일 포맷' 카테고리의 다른 글

PE 파일 분석  (3) 2009.10.26
ID3v2 분석  (0) 2009.10.09
MP3 ID3 tag 분석  (0) 2009.10.08
2009. 10. 8. 10:20

MP3 ID3 tag 분석

출처 : 위키(에서 나름 요약정리 =ㅅ=)

ID3는 MP3 파일에서 사용하는 메타 데이터 포맷으로, 음악의 제목, 음악가 이름 등의 음악 파일에 관련된
정보를 담는다. ID3에는 ID3v1과 ID3v2 두 가지의 버전이 있으며, 이들은 서로 호환성이 없으며 하나의 파일
안에 동시에 존재할 수도 있다.

=======================================================================================================
ID3v1

ID3v1은 파일 끝에 128 바이트를 덧붙이는데, 'TAG'라는 문자열로 시작되므로 미디어 플레이어가 쉽게 인식할
수 있다. 초기의 MP3 재생기는 때때로 MPEG 스트림 사이에 삽입된 데이터에 적절히 대응하지 못하고, 재생을
멈추거나 잡음이 튀는 등의 문제가 있었고, 심지어 재생을 못하기도 했다(태그가 파일의 첫 부분에 있는 경우),
이 같은 문제 때문에 태그는 보통 파일의 첫 부분보다는 끝에 삽입됐다.

ID3v1 포맷
오프셋
길이
설명
0
3
'TAG' 인식문자열
3
30
음악 제목 문자열
33
30
가수(음악가) 문자열
63
30
음반 문자열
93
4
음반 출시년도 문자열
97
30
비고 문자열
127
1
장르 바이트

ID3v1.1 포맷
오프셋
길이
설명
0
3
'TAG' 인식 문자열
3
30
음악 제목 문자열
33
30
가수(음악가) 문자열
63
30
음반 문자열
93
4
음반 출시년도 문자열
97
28
비고 문자열
125
1
바이트 분리자 (항상 0)
126
1
곡 번호 바이트
127
1
장르 바이트

=======================================================================================================
ID3v2

ID3v1은 그 크기가 128바이트로 정해졌기 때문에, 추가적인 정보를 넣는 것이 거의 불가능했다. 이 문제를
해결하기 위해 Lyric3과 같은 다른 포맷이 제안되기도 하였으며, 마틴 닐슨(Martin Nilsson)이 제안한 ID3v2 태그
포맷도 이런 문제를 극복하였다. ID3v2 태그 포맷은 다음과 같은 특징을 가지고 있다.

* 파일의 첫 부분에 큰 데이터 블록으로 삽입되며, ID3v1과의 호환성이 없다. (ID3v2.4부터는 선택적으로 파일의 끝에 삽입할 수 있다)
* 프로그램이 파일의 끝까지 읽어 들이기 전에 태그 정보를 얻을 수 있기 때문에 스트리밍 파일을 재생할 때 이득이 된다.
* 태그의 길이가 변경될 경우 전체 파일이 재작성되어야 하기 때문에 태그를 쓸 때 효율성 면에서 불리할 수 있다. 이런 이유 때문에 ID3v2 태그 뒤에 적당한 공백을 넣어서, 태그의 길이가 어느 이상 커지지 않으면 전체 파일을 재작성하지 않는 방법을 사용하는 경우도 있다.
* 몇 개의 고정된 필드를 제공했던 ID3v1과는 달리, ID3v2 태그는 포맷이 정형화된 태그 프레임들로 이루어져 있기 때문에 확장하기 용이하다.
* 작사자, 지휘자, 매체 종류, BPM, 가사, 이미지, 볼륨, 잔향 설정, 암호화된 정보 등과 같은 다양한 정보를 넣을 수 있다.
* 태그에 가짜 동기 신호가 삽입되는 것을 방지하기 위한 비동기화(unsynchronisation) 옵션을 제공하기 때문에, ID3v2 태그가 삽입된 MP3 파일은 ID3v2를 지원하지 않는 프로그램에서도 안전하게 재생할 수 있다.
* 태그 전체의 크기는 256MB까지 허용되며 프레임 하나의 크기는 16MB까지 허용된다.
* 유니코드를 지원하므로 국제화된 태그를 이용할 수 있다. 기본적으로 UTF-16 인코딩을 지원하며, 또한 ID3v2.4부터는 UTF-8을 지원한다.

ID3v2에는 다음과 같은 세 가지 버전이 있다. 각 버전들은 구조가 비슷하지만 서로 호환성은 없다.

*ID3v2.2 (1998년): ID3v2 태그의 첫 버전으로, 현재는 거의 사용되지 않는다.
*ID3v2.3 (1999년): 태그 프레임의 속성을 나타내는 필드가 추가되었으며 확장된 헤더를 제공한다.
*ID3v2.4 (2000년): 확장된 헤더의 구조가 바뀌었고, 푸터를 지원하므로 파일의 끝에도 삽입할 수 있다. 또한 UTF-8 인코딩을 지원한다.

ID3v2는 너무 많은 정보를 하나의 메타 데이터 포맷에 담기 때문에 구현이 힘들다는 단점을 갖고 있다. 예를 들어,
오디오의 길이를 저장하는 TLEN 프레임과 오디오의 인코딩 방법을 저장하는 AENC 프레임 등은 메타 데이터가
담긴 파일을 분석해도 알아 낼 수 있는 정보이며(다만 경우에 따라서 오디오의 길이를 쉽게 알 수 없는 경우는
있다), ID3v2.4에 있는 84개의 프레임이 각각 서로 다른 내부 구조를 갖고 있으며 버전마다 구조가 다른 경우도
있기 때문에 일괄적인 처리가 힘들어진다. APEv2와 같이 나중에 만들어진 메타 데이터 포맷은 내부 구조를
통일하여 이런 문제를 해결한다.

'공부합시다 > 파일 포맷' 카테고리의 다른 글

PE 파일 분석  (3) 2009.10.26
ID3v2 분석  (0) 2009.10.09
ID3v2 Frame ID List  (0) 2009.10.08