What the three lines mean
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x...] Format mov,mp4,m4a,3gp,3g2,mj2 detected only with low score of 1, misdetection possible!
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x...] moov atom not found
broken.mp4: Invalid data found when processing input
FFmpeg guesses a file's format by scoring its first bytes. A healthy MP4 starts with an ftyp box and scores high. A score of 1 means FFmpeg found almost nothing it recognised and picked MP4 as a weak guess. That happens when the file starts mid-stream, or when the start is intact but the moov box, the index with every frame's position and the codec settings, was never written.
The usual causes:
- The recording stopped before the camera or app finished the file: a dead battery, a crash, a card pulled out.
- A recovery tool or an interrupted copy produced the file.
- A screen recorder such as OBS was recording to MP4 when the computer froze.
What doesn't work
ffmpeg -i broken.mp4 -c copy fixed.mp4fails the same way, because FFmpeg can't read frames it has no index for.-err_detect ignore_errand-fflags +genptschange how FFmpeg treats errors inside streams it can read. They don't build a missing index.- Renaming the file to
.movor.mkvchanges nothing inside it.
What does
The frames are still in the file. A repair tool reads them, works out the codec settings, and writes a new file with a new moov box. Two free-or-cheap ways:
- Untrunc, the open-source command-line tool:
untrunc working.mp4 broken.mp4, whereworking.mp4is a video that plays, recorded on the same camera with the same settings. See Untrunc on Windows and Mac. - The checker on this page, in your browser. It reads the file from your disk, uploads nothing, and often needs no second clip: many recordings carry their own settings in the stream. The check and a 5-second preview are free; downloading the full video costs $4.99, or $3.99 in the Windows program.
After a repair, ffprobe on the new file should report the streams with their codec, size and duration, with no score warning.
How the repair engine got here
The engine behind the checker was built for exactly this file, the MP4 or MOV whose index never got written. On 17 September 2026 we tested it on four encoders with the index stripped, zeroed or cut at 70 %: every picture came back identical with a fitting clip from the same camera, and a file cut short kept every frame before the cut. On 12 October the same engine started running in the browser, giving the same file byte for byte as the Android app.
What a user wrote
"This app did repair my mp4 vid that was broken via phone crash and t works, simple but effective" (Google Play review of the Video Repair app, which uses the same engine, September 2026)
