Codecs, Containers & Wrappers
"Export as ProRes 422 HQ in a QuickTime .mov" sounds like a foreign language until you understand the two things it's actually saying. This chapter untangles codecs from containers so that delivery specs stop being intimidating and start being instructions you can follow.
Most delivery confusion comes from mixing up two different things that a spec sheet mentions in the same breath: the codec and the container. Here's the clean way to think about it. The codec is how the video is compressed and encoded — the actual method used to squeeze the picture into data (ProRes, DNxHR, H.264, JPEG2000). The container (or wrapper) is the file format that holds the encoded video, audio, and metadata together — the "box" (.mov, .mp4, .mxf). A useful analogy: the codec is the language the video is written in, and the container is the envelope you put it in. A spec like "ProRes 422 HQ in a .mov" is just telling you the language (ProRes) and the envelope (.mov). Once you separate these two ideas, delivery specs stop reading as gibberish and start reading as a simple two-part instruction: encode it this way, wrap it in that file. Let me give you the handful of codecs and containers that actually matter for delivery so you can recognize any spec you're handed.
The codecs that matter
You only need to know a few:
- ProRes (Apple). The workhorse mastering codec. "Visually lossless" flavors like 422 HQ and 4444 are the standard for masters and high-quality deliverables. If a spec asks for a mastering-quality file, it usually means ProRes.
- DNxHR / DNxHD (Avid). The equivalent to ProRes, common in the Avid and Windows world. Same idea — high-quality mastering codec. Specs often accept "ProRes 422 HQ or DNxHR HQX."
- H.264 / H.265 (HEVC). Highly compressed delivery codecs for the web, screeners, and streaming. Small files, good quality for viewing, but too compressed to be a master. This is what you export for a festival screener or YouTube.
- JPEG2000. The codec inside a DCP. You won't handle it directly, but it's why a DCP is different from a normal video file — it's a specialized cinema codec (more in the DCP chapters).
- Uncompressed / lossless. Occasionally required for the highest-end masters. Huge files, perfect quality. Rarely needed at indie level, but good to recognize.
Containers, and matching the spec exactly
The containers you'll meet are just as few: .mov (QuickTime — the common wrapper for ProRes masters and many deliverables), .mp4 (the standard wrapper for H.264/H.265 web and streaming files), and .mxf (a professional broadcast container, and also the wrapper used inside DCPs and IMF packages). A given codec usually lives in a particular container — ProRes in .mov, H.264 in .mp4 — but not always, which is exactly why specs name both: they're removing ambiguity. And here's the crucial discipline this chapter is really about: match the delivery spec exactly, don't approximate. If a festival asks for "H.264, .mp4, up to 10 Mbps, 1080p," you deliver precisely that — not a ProRes file because it's higher quality (it'll be rejected as the wrong format and too large), and not a random export at whatever bitrate your software defaulted to. The spec exists because their system expects that exact combination, and "better" is not the same as "correct." When you get a delivery spec, read it as a checklist of parameters — codec, container, resolution, frame rate, bitrate, audio format — and hit every single one. A great free tool here is MediaInfo, which reads any video file and tells you its actual codec, container, resolution, frame rate, and bitrate; run it on your export and compare against the spec line by line before you send anything, because a file that looks right in your player can still be the wrong codec or frame rate under the hood. Understanding codecs and containers turns delivery specs from a source of dread into a form you fill out correctly. With the file formats demystified, the next chapter covers the other half of any spec — the technical parameters like resolution, frame rate, color space, and loudness that get checked just as strictly.
A festival rejected my screener and I couldn't understand why — it played perfectly on my machine. I ran MediaInfo on it and saw the problem instantly: I'd exported ProRes in a .mov when they'd asked for H.264 in an .mp4 under 10 Mbps. My "high quality" file was a 40 GB monster their portal couldn't ingest. I re-exported to their exact spec, a tidy 1.5 GB .mp4, and it sailed through. Lesson learned: "better" isn't "correct." Now I run MediaInfo on every deliverable and check it against the spec sheet line by line before I hit send. Thirty seconds of checking saves a rejection.
Run your finished film through Distribution Readiness — check your masters, deliverables, and specs against what festivals and platforms require, so you catch problems before a rejection letter does.
