프로그래밍과 잡담

MP3 헤더 구조.. 본문

기타 게시판

MP3 헤더 구조..

크레온 2010. 6. 28. 01:18


mp3 파일의 헤더 그림이다.

위에 자료는 위키피디아에서 가져온것이다..

http://en.wikipedia.org/wiki/MP3

보면 FF FB A0 40 이라고 써 있는데..

난 저게 어디 있나 하고 헥스 에디터를 뒤졌더니..

헥스에디터에 오프셋의 데이터를 의미 하는거 였다.

오프셋의 두자리 숫자는 1바이트를 의미한다.

고로 .. FF를 이진수로 하면 0000 0000 이 되는것이다.

위에 보면 헤더는 32비트라고 하니..

헥스 에디터로 보면  FF  FB A0 40헤더(header)가 되는것이다.

1개의 비트를 데이터로 이용하는것이다.



위에 빨간색 네모 부분이 헤더가 된다..


난 위에 정보인 ..FF FB B1 6C를 이용해서 헤더의 정보를 볼 것이다..


처음에 F F F 는 MP3 Sync word 다.. 정확한 의미는 인터넷 검색.. 나도 잘 모른다.

B의 값이 십진수로 11이므로..

이진수로는 이것이다.
1     0     1     1  

가장 처음에 1은 버전을 의미한다.

1 일 경우는 MPEG 이다.

뒤에 0과 1은 함께 쓰인다.

00 - reserved
01 - Layer 3
10 - Layer 2
11 - Layer 1

0 1 이므로 Layer 3이다..

그러니까 MP3이다.



마지막 1은 Error Protection 이다..

1일 경우는 No 이다.
0이면 Yes 일테고..

http://www.mpgedit.org/mpgedit/mpeg_format/MP3Format.html에서 보면 CRC 체크하는거란다.

그 다음에도 또 B이므로

1  0  1  1 이다.

이 4개 비트는 한꺼번에 쓰이는데..
비트레이트(Bitrate)다.  비트레이트의 경우는 많이 들어본거다..

높을 수록 음질이 좋은거 .. 혹은 화질이 좋거나..

1011이면 ..

192 이다..

bits V1,L1 V1,L2 V1,L3 V2,L1 V2, L2 & L3
0000 free free free free free
0001 32 32 32 32 8
0010 64 48 40 48 16
0011 96 56 48 56 24
0100 128 64 56 64 32
0101 160 80 64 80 40
0110 192 96 80 96 48
0111 224 112 96 112 56
1000 256 128 112 128 64
1001 288 160 128 144 80
1010 320 192 160 160 96
1011 352 224 192 176 112
1100 384 256 224 192 128
1101 416 320 256 224 144
1110 448 384 320 256 160
1111 bad bad bad bad bad

NOTES: All values are in kbps
V1 - MPEG Version 1
V2 - MPEG Version 2 and Version 2.5
L1 - Layer I
L2 - Layer II
L3 - Layer III


어쟀든 다음 1이다.

1은 이진수로도 1인데 4비트로 표시하니까

0 0 0 1

이다.

두개로 나누어서 쓰이는데..

앞에 0 0 은 주파수(Frequency)다.

0 0 일 경우에는 44100Hz이다.

비트 테이블

bits MPEG1 MPEG2 MPEG2.5
00 44100 22050 11025
01 48000 24000 12000
10 32000 16000 8000
11 reserv. reserv. reserv.

이렇게 나와있다..


뒤에 0 은 Pad. Bit 이라고 한다.

0 일 경우는  Frame is not padded.  뭔 뜻인지 모르겠다.

Padding bit
0 - frame is not padded
1 - frame is padded with one extra slot
Padding is used to fit the bit rates exactly. For an example: 128k 44.1kHz layer II uses a lot of 418 bytes and some of 417 bytes long frames to get the exact 128k bitrate. For Layer I slot is 32 bits long, for Layer II and Layer III slot is 8 bits long.

뭐 이렇게 써 있는데 영어를 잘 못해서 뭐라고 설명하기가 뭐하므로 알아서 해석 ㅋ


마지막 뒤에 1 은  Priv. Bit 이다.
Private bit. It may be freely used for specific needs of an application.
어플리케이션에서 자유롭게 사용되는 비트라는군..
고로 무슨 의미인지는 모르겠으니까 넘어간다.


다음으로 6 은 2진수로  110 이다.

0  1  1  0

첫번째와 두번재 비트는
Mode를 의미한다.
채널 모드를 의미하는 것이다.

Channel Mode
00 - Stereo
01 - Joint stereo (Stereo)
10 - Dual channel (2 mono channels)
11 - Single channel (Mono)


3번째와 4번재는
Joint Stero 일때 사용되는 부분이다.

3번째가 0이면 Intensity Stereo Off
4번째까 0이면 MS Stereo Off 이다

뭐 1이면 반대가 되겠다.


마지막으로 C이다.. C는 10진수로 12이다.
2진수로는 1100이다.

1   1   0   0

첫번째 비트는
Copy Right를 의미한다..
1이면 Copy Right이 있는거고 0이면 없는거다.

두번째 비트는
0 이면 파일복사를 했다는거고  1이면 아니라는거..

세번째 네번째 비트는
Emphasis(강조)
00 일 경우는 없다.

00 :  (없음)
01 :  (50/15ms)
10 :  (reserved)
11 : (CCIT J.17)


위에 있는 정보들의 출처는 여기 이니까 http://www.mpgedit.org/mpgedit/mpeg_format/MP3Format.html 에 가면
자세히 나와있다..

물론 영어로 ..



근데 이게 맨 처음에 있는 헤더하고 다음에 나오는 헤더의 정보가 달라 질 수가 있다.

FF FB B1 6C 인데

다음에 는 FF FB B3 6C로 바뀐다..

그 다음은 위와 계속 같다.





반응형
Comments