The two common failure modes
- Truncated MP4 (no moov atom) — typically a recording that was Ctrl+C'd or a phone whose battery died mid-record. The file has data but no index. Many players show 'cannot open'.
- Bitstream corruption — bad sectors, partial download. Some frames decode, some don't.
Recovery tools
- FFmpeg remux with
-fflags +genpts— sometimes regenerates the moov atom. - untrunc — open-source tool specifically for truncated MP4 with moov missing.
brew install untrunc. Needs a 'reference' file from the same camera. - FFmpeg
-err_detect ignore_err— for corrupt bitstream, decode what's decodable and skip what isn't.