🔍 AVI란 무엇인가?
AVI (Audio Video Interleave)는 Microsoft가 1992년에 발표한 비디오 파일 포맷으로, RIFF(Resource Interchange File Format) 기반으로 설계되었다. 이 포맷은 오디오와 비디오 데이터를 하나의 파일에서 동시에 관리할 수 있도록 설계되었으며, .avi 확장자로 널리 사용된다.
✅ 대표 확장자: .avi
✅ MIME 타입: video/x-msvideo
📦 기본 구조: RIFF 기반 컨테이너
AVI는 RIFF 포맷을 기반으로 하기 때문에, 파일은 "청크(chunk)" 단위로 구성된다. 각 청크는 4바이트 식별자(Tag) + 4바이트 크기 + 실제 데이터 구조를 가진다.
✔ 주요 청크 구조
SCSS
RIFF ('AVI ')
│
├─ LIST ('hdrl') ← 헤더 정보
│ ├─ avih ← 전체 파일 정보 (AVI header)
│ └─ LIST ('strl') ← 각 스트림 정보 (비디오, 오디오)
│ ├─ strh ← 스트림 헤더
│ └─ strf ← 스트림 포맷
│
├─ LIST ('movi') ← 실제 영상 및 음성 데이터
│ ├─ 00dc ← 압축 비디오 프레임 (dc: video data chunk)
│ └─ 01wb ← 음성 데이터 (wb: wave block)
│
└─ idx1 ← 인덱스 청크 (랜덤 접근 지원)
🧠 주요 구성 요소 설명
청크 | 설명 |
---|---|
CODE RIFF | 전체 파일 시작, 형식은 항상 CODE 'AVI ' |
CODE avih | 프레임 속도, 해상도, 전체 길이 등 전역 정보 |
CODE strh | 비디오/오디오 스트림 헤더 ( CODE vids CODE auds |
CODE strf | 코덱 포맷 및 비트 정보 (예: MJPEG, PCM) |
CODE movi | 실제 미디어 데이터 저장소 |
CODE idx1 | 프레임별 오프셋, 크기 정보를 포함한 인덱스 |
🎥 스트림 분리: Multi-stream Support
AVI는 다중 스트림을 지원하여, 하나의 파일에 여러 비디오/오디오 트랙을 담을 수 있다.
예:
- 스트림 0: 비디오 (vids)
- 스트림 1: 오디오 (auds)
- 스트림 2: 자막 or 텍스트 (txts)
그러나 자막이나 챕터 정보는 MKV와 같은 현대 포맷에 비해 기능적으로 제약이 있다.
📐 비디오 & 오디오 코덱
AVI는 코덱에 독립적인 포맷이기 때문에 다양한 코덱을 내장할 수 있다.
구분 | 대표 코덱 |
---|---|
비디오 | MJPEG, DivX, Xvid, H.264 (제한적) |
오디오 | PCM, MP3, AC3 |
하지만 H.264 + MP3 조합 같은 경우, AVI의 타임스탬프 체계와 충돌하여 싱크 문제가 발생하기도 한다. 이 때문에 MP4, MKV로 대체되는 경우가 많다.
⚠️ 한계점
제한사항 | 설명 |
---|---|
2GB 파일 크기 한계 | RIFF 포맷은 32비트 인덱스만 지원 → 2GB 이상이면 일부 프로그램에서 재생 오류 |
동기화 문제 | 고정된 타임스탬프 구조로 인해 일부 코덱과의 싱크 불일치 발생 |
모던 기능 미지원 | 자막, 챕터, 다중 자막 트랙 등의 기능이 없음 |
스트리밍 비효율 | 인덱스 정보가 파일 끝에 있어 점프 재생에 불리함 |
🎯 이 한계 때문에 AVI는 로컬 재생/저장용 포맷으로만 사용되는 경우가 대부분
💡 활용 예시
개발 중 디버그 영상 캡처
– 단순한 프레임 기록이 필요할 때, MJPEG 압축으로 구현 용이
– 단순한 프레임 기록이 필요할 때, MJPEG 압축으로 구현 용이
의료 영상 처리
– 무압축(또는 PCM) 기반의 포맷을 요구할 때 사용
– 무압축(또는 PCM) 기반의 포맷을 요구할 때 사용
DirectShow / VFW 기반 영상 재생
– Windows 환경에서는 호환성이 높아 여전히 활용됨
– Windows 환경에서는 호환성이 높아 여전히 활용됨
🛠 AVI 관련 주요 도구
도구 | 설명 |
---|---|
VirtualDub | AVI 편집 및 인코딩, 무손실 저장 가능 |
ffmpeg | 다양한 포맷 간 변환 가능 ( CODE ffmpeg -i input.mp4 output.avi |
AVI-Mux GUI | 다중 오디오 트랙 삽입 지원 |
MediaInfo | AVI 내부 청크 및 코덱 정보 확인 |
📘 결론
AVI는 고전적이지만 여전히 유효한 영상 컨테이너 포맷이다.
특히 단순성, 비압축 저장, 디버깅 친화성 덕분에 특정 영역에서는 여전히 쓰인다.
특히 단순성, 비압축 저장, 디버깅 친화성 덕분에 특정 영역에서는 여전히 쓰인다.
다만, 현대적인 영상 기능이 필요한 경우에는 MP4, MKV 같은 포맷이 더 적합하며, 개발 시에도 이런 포맷과의 비교를 통해 용도별 전략적 선택이 중요하다.
"AVI는 오래됐지만 무시할 수 없는, 여전히 쓸모 있는 포맷이다."

image.png