티스토리 뷰

MP4(MPEG-4 Part 14)는 비디오와 오디오 스트림을 저장하기 위한 동영상 컨테이너 포맷입니다.

ISO Base Media File Format(ISOBMFF)을 기반으로 하며, 논리적 구조(logical structure), 시간 구조(time structure), 물리적 구조(physical structure)로 이루어져 있습니다.

 

MP4의 구조 특징

Logical Structure

MP4 파일은 오디오, 비디오와 같은 여러 트랙(track)을 동시에 저장합니다. 각 트랙은 특정 미디어 유형을 나타내며, 독립적으로 관리됩니다.

Time Structure

각 트랙은 시간에 따라 구성된 샘플(sample)의 연속으로 이루어집니다. 각 샘플은 디코더에 의해 지정된 시간(DTS, CTS)에 사용됩니다.

Physical Structure

MP4 파일의 모든 데이터는 박스(box)라는 형태로 저장됩니다. 박스는 계층적 구조를 가지며 최소 크기는 8바이트로 구성됩니다.

ISOBMFF (ISO Base Media File Format)

ISOBMFF는 시간 순서가 있는 미디어 데이터를 표현하기 위해 개발된 표준 컨테이너입니다. QuickTime(.mov)에서 확장된 형태이며, 다양한 포맷(MP4, 3GP 등)을 지원합니다.

MP4의 박스(Box) 구조

MP4 파일의 모든 데이터는 박스(box)라는 기본 단위로 구성됩니다.

요소 크기(Byte) 설명
크기 4 박스 전체 크기
타입 4 박스의 타입 (4글자 문자열)
데이터 n 박스의 실제 데이터 또는 자식 박스

예시

주요 박스(Box) 종류

박스 타입 박스 이름 설명
ftyp File Type Box 파일 타입과 호환성 정의
moov Movie Box 미디어 메타데이터 저장
mvhd Movie Header Box 영상 전체 정보(시간 단위, 재생 속도 등)
trak Track Box 개별 미디어 트랙 관리
tkhd Track Header Box 트랙 기본 정보(크기, 유형 등)
mdia Media Box 미디어 정보 및 샘플 관리
mdhd Media Header Box 미디어 특성(타임스케일, 기간 등)
hdlr Handler Reference Box 트랙 유형(비디오, 오디오 등) 정의
minf Media Information Box 미디어 데이터 상세 정보
vmhd Video Media Header Box 비디오 데이터 정보
dinf Data Information Box 데이터의 위치 정보
stbl Sample Table Box 샘플 정보 저장
stsd Sample Description Box 샘플 디코딩 정보
stts Decoding Time to Sample Box 샘플의 시간 정보
ctts Composition Time to Sample Box 구성 시간 정보
stsc Sample to Chunk Box 샘플과 청크 간의 관계
stsz Sample Size Box 각 샘플 크기
stco Chunk Offset Box 청크의 위치
stss Sync Sample Box 키 프레임 정보
mdat Media Data Box 실제 비디오, 오디오 데이터 저장

MP4 파일 구조의 일반적인 형태

MP4 파일의 일반적인 구조는 다음과 같습니다:

  1. ftyp: 파일의 호환성을 확인하는 파일 타입 박스
  2. moov: 미디어 메타데이터를 저장하는 박스
    • mvhd: 영화 헤더로 재생 시간, 재생 속도, 볼륨 등 영상 전체에 대한 정보를 포함
    • trak: 개별 미디어 트랙 (비디오 및 오디오)
      • tkhd: 트랙의 기본 정보 (크기, 유형, 플래그 등)
      • mdia: 미디어 데이터와 관련된 정보
        • mdhd: 미디어 기본 특성 정보 (타임스케일, 기간 등)
        • hdlr: 미디어의 유형을 정의 (비디오, 오디오 등)
        • minf: 미디어 데이터의 세부 정보
          • vmhd: 비디오 데이터의 상세 정보
          • dinf: 데이터 참조 정보, 데이터의 위치를 제공
          • stbl: 샘플 데이터를 관리하는 테이블
            • stsd: 샘플의 디코딩에 필요한 정보
            • stts: 샘플의 시간 정보 (디코딩 시간)
            • ctts: 샘플의 구성 시간 정보
            • stsc: 샘플과 청크의 매핑 정보
            • stsz: 샘플 크기 정보
            • stco: 청크의 파일 내 위치 정보
            • stss: 랜덤 액세스가 가능한 키 프레임 정보
  3. mdat: 실제 미디어 데이터(비디오, 오디오 등)를 저장
MP4 파일
│
├── ftyp (파일 타입 및 호환성 정보)
│
├── moov (메타데이터 박스)
│   ├── mvhd (무비 헤더 박스)
│   └── trak (트랙 박스)
│       ├── tkhd (트랙 헤더 박스)
│       └── mdia (미디어 박스)
│           ├── mdhd (미디어 헤더 박스)
│           ├── hdlr (핸들러 박스)
│           └── minf (미디어 정보 박스)
│               ├── vmhd (비디오 미디어 헤더 박스, 오디오는 smhd)
│               ├── dinf (데이터 위치 정보 박스)
│               └── stbl (샘플 테이블 박스)
│                   ├── stsd (샘플 디코딩 정보 박스)
│               ├── stts (샘플 시간 정보 박스)
│               ├── ctts (구성 시간 정보 박스)
│               ├── stsc (샘플과 청크 간 관계 정보 박스)
│               ├── stsz (각 샘플 크기 정보 박스)
│               ├── stco (청크 위치 정보 박스)
│               └── stss (키 프레임 정보 박스)
│
└── mdat (실제 미디어 데이터 박스)

 

'Forensic > File Structure' 카테고리의 다른 글

코덱 - H.264, H.265  (0) 2025.03.11
AVI File format Structure  (0) 2025.03.10
ZIP 파일 구조  (0) 2025.01.27
PNG 파일 구조  (0) 2025.01.27