Recovering ProRes and 4K MOV after a recording stopped mid-clip
A camera recording MOV writes frames to the card continuously and writes the index (the `moov` atom) at the end, when you press stop. If the recording ends any other way, the index is never written. The file exists on the card, often at full size, and QuickTime, Final Cut and Resolve all refuse it. Nothing about the footage is damaged. The container is simply unfinished.
This guide covers what's actually on the card after an interrupted recording, what's salvageable, and where the difference between ProRes and H.264/HEVC changes the answer. It applies to Blackmagic, Atomos, Canon, Sony, Panasonic, Nikon and iPhone ProRes recordings alike; the container is the same.
What's on the card after an interruption
Open the clip's folder and check the file size. If it's roughly what you'd expect for the duration you recorded (ProRes 422 HQ at 4K runs around 110 MB per second at 24p; ProRes RAW and 4444 are larger; H.264/HEVC far smaller), the frames made it. If the file is 0 bytes or a few kilobytes, the camera's filesystem entry exists but the data was still in the buffer; there's nothing on the card to recover.
Some recorders write a partial `moov` periodically as a safety measure, and some write the index first as a placeholder and update it at stop. Those files sometimes play up to the last checkpoint. Most cameras don't, and the file is `ftyp` + `mdat` and nothing else, or `ftyp` + `wide` + `mdat`. Run `ffprobe` on it: "moov atom not found" confirms this case.
H.264 and HEVC: the index can be rebuilt
For H.264 and HEVC, the frames inside `mdat` are stored as length-prefixed NAL units, and each one announces its type: parameter sets, keyframes, predicted frames. That's enough structure to reconstruct an index. DataRecover Pro's MP4/MOV repair locates the `mdat` payload (whether or not the file starts with `ftyp`), walks the NAL units, validates the chain, and builds a new container around them. Frame timing is inferred from the stream; audio is re-attached when its samples can be identified. The result plays in QuickTime and imports into an NLE. Where a reference clip from the same camera is available, its `moov` is used as a template for sample tables, which improves timing accuracy, but it isn't required.
ProRes: what's different
ProRes frames are not NAL units. Each frame is a self-contained block that starts with a frame header (`icpf` in the bytes) carrying its size, dimensions and profile, but the stream carries no timing, and the relationship between video frames and audio samples lives only in `moov`. That means a moov-less ProRes file can't be fully rebuilt by reading the stream alone; the frames are found, but the container needs to be told the frame rate, timescale and audio layout.
The practical answer is a reference clip. A healthy MOV from the same camera, same resolution, frame rate and ProRes flavor, recorded around the same time, provides the sample-table layout. untrunc, the free tool, works this way: `untrunc reference.mov broken.mov`. It handles ProRes reasonably when the reference matches exactly. DataRecover Pro's repair uses the same approach where a donor is available, and where it isn't, it still trims the file to the last complete frame boundary and reports what it found so you can decide how to proceed.
If you don't have a reference clip, record one now: put the same card (or any card) back in the camera, shoot ten seconds at the same settings, and stop the recording normally. That clip is your reference.
Frame-accurate truncation
The other half of an interrupted recording is the tail. The last frame the camera was writing when power dropped is usually partial: a few kilobytes of a frame that never completed. A rebuilt container that claims that frame produces a decoder error at the end, and some NLEs refuse the whole clip because of it. DataRecover Pro's repair finds the last complete frame boundary (last full NAL chain for H.264/HEVC, last complete `icpf` block for ProRes), truncates there, and rewrites the sample tables (`stsz`, `stsc`, `stts`, `stco`/`co64`, `stss`, `ctts`) to cover exactly the surviving frames. You lose the fraction of a second that was mid-write and keep everything before it.
The procedure
1. Don't record on the card until you're done; a new clip can overwrite the tail of the broken one. Copy the broken file off the card to your Mac first. If the clip was deleted or the card was formatted, recover it with DataRecover Pro's deep scan; the carver sizes `ftyp`-led files by walking their boxes, and for a moov-less file it recovers the `mdat` up to the next file boundary.
2. Run `ffprobe` to confirm the failure mode. If a `moov` exists but the file won't play, it's the truncation or offset case, which repair handles directly.
3. Let the repair engine process the file. Preview the result with Quick Look before saving. For ProRes, add a reference clip when the app asks for one, or expect a trimmed file rather than a fully rebuilt one.
Scanning, preview and repair preview are free with no account. Download DataRecover Pro. The repair page explains how partial results are labeled.
When this won't work
A 0-byte or tiny file means the footage never reached the card; no software recovers what wasn't written. Frames the camera overwrote with a later recording are gone. A ProRes RAW clip with no `moov` and no matching reference is a lab-grade problem; the frames exist but the container can't be inferred. A card that's dropping off the bus or overheating (common on CFexpress after long 4K takes) should be imaged before anything else; see CFexpress card recovery on Mac. And for a general "my recovered MP4 won't play" case, start with recovered MP4 won't play on Mac.
Lost a file? Get it back.
Scan and preview for free. See what's recoverable before you buy.
Download for macOS