박스 와 박스 안의 물건
디스크 위 모든 미디어 파일은 두 층이야. 바깥 층은 container (또는 format): MP4, MKV, MOV, WebM, MXF, AVI, FLV. 안쪽 층은 codec: video 쪽 H.264, H.265 (HEVC), AV1, ProRes, VP9; audio 쪽 AAC, MP3, Opus, FLAC, AC-3. Container의 일은 stream interleave + timing/metadata/chapter marker 저장. Codec의 일은 실제 pixel/sample 압축 + 압축 해제.
이 구분 하나만 몸에 박히면, 모든 FFmpeg 에러 메시지가 갑자기 읽혀. "Codec not currently supported in container" 가 더 이상 미스터리가 아냐 — H.265 video를 AVI container에 넣으려 했고 그건 spec 상 불가능이라는 뜻이야.
어느 container가 어느 codec을 담는지
까다로운 container도 있고 (AVI, FLV는 옛날 + 제한적), 너그러운 것도 있어 (MKV는 거의 다 받음, MP4는 H.264/H.265/AV1 + AAC/Opus 의 모던 lingua franca). 헷갈리면:
- MP4 — 안전한 default. 어디서나 재생. H.264/H.265/AV1 video + AAC/Opus audio.
- MKV — 초유연. 거의 다 들어가. 다중 자막 + chapter marker 도. 하드웨어 player 호환성은 항상 좋진 않아.
- MOV — Apple 의 MP4 변종. workflow가 QuickTime/Final Cut 일 때 써. ProRes 가 여기 살아.
- WebM — VP9/AV1 video + Vorbis/Opus audio. 웹 streaming.