ID3MP3 파일에서 사용하는 메타데이터 포맷으로, 음악의 제목, 음악가 이름 등의 음악 파일에 관련된 정보를 담는다.

ID3에는 ID3v1과 ID3v2 두 가지의 버전이 있으며, 이들은 서로 호환성이 없으며 하나의 파일 안에 동시에 존재할 수도 있다.

ID3v1과 ID3v1.1

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

ID3v1 포맷
오프셋 길이 설명
0 3 "TAG" 인식 문자열
3 30 음악 제목 문자열
33 30 가수(음악가) 문자열
63 30 음반 문자열
93 4 음반 출시년도 문자열
97 30 비고 문자열
127 1 장르 바이트[* 1]
  1. 원래 규격에는 0부터 79까지 80개 값에 대해서만 정의되어 있었지만, 윈앰프에서는 이 정의를 147까지 확장했다.

ID3v1.1은 1997년에 미하엘 무췰러(Michael Mutschler)에 의해 ID3v1의 확장으로 고안된 것으로, ID3v1의 128 바이트를 유지하면서 곡 번호 정보를 추가했다. 이 새 필드는 비고 필드의 끝에서 두 번째 바이트에 위치한다.

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

ID3v1과 ID3v1.1의 규격은 모든 문자열이 ISO 8859-1로 부호화(인코딩)된 것으로 간주한다. 그러나 많은 프로그램들이 서유럽 외의 언어를 지원하기 위해 시스템의 기본 인코딩을 사용한다. 규격상 인코딩에 대한 공통적인 처리 방식이 없기 때문에, 서로 다른 인코딩을 사용하는 시스템 간에는 인식을 제대로 하지 못하는 문제가 생길 수 있다. 또한 ID3v1 규격에는 모든 문자열의 끝에 남는 공간에는 널 문자를 채우도록 되어 있지만, 윈앰프와 같은 일부 프로그램들은 공백 문자와 같은 다른 문자를 채우기도 한다.

ID3v2

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

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

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

같이 보기

외부 링크