MP4 파일 구조 정리 (1)

MP4(MPEG-4 part 14)

비디오 및 오디오 스트림을 저장하는 동영상 포맷이며, ISOBMFF(ISO Base Media File Format)으로 정의된다.

ISOBMFF

  • ISO가 개발
  • 포맷 종류 : Media Container
  • QuickTime(.Mov)로 부터 확장
  • ISOBMFF의 대표적인 확장 포맷 (mp4, 3gp, 3g2, mj2, dub, dcf …..)

MP4 파일은 3가지의 구조적인 특징을 가진다.

logical structure (논리적 구조) : 시간과 관련된 병렬적인 트랙(audio, video)로 구성됨

time structure (시간적 구조): 각 track은 시간에 따른 sample sequence로 이루어짐

physical structure (물리적 구조) : 모든 데이터는 box라 불리는 형태로 저장됨


MP4 파일 아키텍쳐 구조

사진 1 : 대략적인 mp4 파일 구조

file

  • moive 트랙에 시간 데이터를 저장
  • time과 관련 없는 데이터를 저장
  • 간혹 위 두 가지 모두를 저장 할 때도 있다
  • 동기와를 위한 common timeline을 정의

Track

  • 특정 미디어 유형(코덱)에 해당
  • 단일 디코더에 연결되어 있음 (확장 가능 한 코덱 제외)
  • 다른 트랙에 연결 하거나 그룹화 또는 다른 트랙으로 대체 가능
  • item에 있는 untimed data와 관련이 있을 수 있음
  • 암호화 될 수 있음
  • sample로 분해됨

Sample

  • 지정된 시간 (DTS, CTS)에 디코더가 사용하는 연속데이터를 나타냄
  • 속성(크기,위치,랜덤 엑세스, 디코더 configuration)가 저장되어 있다.
  • Sub-Sample의 관점에서 표현 될 수도 있다.
  • Sample Group 내의 다른 비슷한 Sample과 연관이 있을 수도 있다.
  • 샘플별 보조 정보가 존재 할 수도 있다.

Item

  • Movie 전체에 대해 사용되는 Data를 나타냄
  • Type, Position, size 등과 같은 속성을 가짐
  • 암호화 되어있거나, 압축화 되어있어서 확인이 어려울 수 있음

physical structure (물리적 구조)

MP4 파일에서 모든 데이터는 Box(박스)라고 불리는 구조로 저장되어 있다. 각 박스는 length, type(4바이트), Version, flag, data를 저장한다.

사진 2. 박스 구조도

Extensible format(확장 형식)

  • 잘 알려지지 않은 Box는 생략 할 수 있다.
  • Header 정보는 Box의 계층 구조이다.
  • Media data는 Header와 동일한 파일 Box(주로 ‘mdat’ 또는 ‘idat’)에 구조화되지 않고 저장되거나 별도의 파일에 저장 될 수 있다.

MP4 파일의 일반적인 구조

위에서 소개한 여러 Box들이 모여 MP4 파일은 계층적 구조를 가진다.

사진 3. mp4 Box tree

FTYP

  • filetype의 약자로, i per file, File type, File version, 다른 ISO file 과의 호환성을 알려주는 박스

Moov(moive)

  • Presentaion(표현)과 관련된 MetaDate를 위한 Unique Container (고유 컨테이너)

mvhd(moive Hedear) : movie에 대한 일반적인 정보를 가진 박스

trak(track) : 하나의 steam과 연관된 metadata container

tkhd(track header) : track에 대한 전반적인 정보를 가지고 있는 박스

mdia(media information) : track안의 media imformation에 대한 container

mdhd(media header) : media에 대한 전반적인 정보를 가지고 있음

minf(media information container) : 미디어 정보 컨테이너

vmhd(video media header) : 비디오 미디어 헤더 박스

dinf/dref(Data information/Data Reference) : data의 위치를 나타내는 박스

stbl(Sample Table) : Sample과 관련된 Meta 데이터를 가짐

stsd(sample Description) : Sample Decoder configuration 정보

stts(time to sample) : 샘플의 시간 정보

ctts(composition time to sample) : 샘플링 시간

stsc(sample to chkunk) : partial data-offset information (파티션 데이터 오프셋 정보)

hdlr(Handler) : stream의 타입을 의미

tref(track reference container) : 추적 참조 컨테이너

mdat(media Data) : media data를 가지는 박스


아래에 첨부된 온라인 mp4 parser 도구를 이용하면 위에서 설명한 것과 유사한 파일 구조를 볼 수 있다.

사진4. 분석 사진

다음 2편에서는 각 박스들의 16진수 값들에 대해 작성해보기로 마음 먹으며 글을 마친다.

참고문헌 :

MPEG-4 파일의 구조 개괄 :: 개똥이야기 (tistory.com)

[MP4] 분석 하기 | MPEG-4 파트 14 | MP4Box 설치 (tistory.com)

MP4 파일 구조 – Studying Programming (revol300.github.io)

mp4파일 시스템 구조, mp4파일 구조 : 네이버 블로그 (naver.com)

mp4파일 시스템 구조, mp4파일 구조 : 네이버 블로그 (naver.com)

비디오 – Digital Forensic Wikipedia (korea.ac.kr)

MP4 file format – Wikipedia

사용된 도구

Online Mp4 Parser

첨부파일

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다