Run a decoder integrity check. FFmpeg will log errors for corrupt frames:
ffmpeg -v error -i sample.mjpeg -f null - 2> verification_log.txt
ffplay sample.mjpeg
ffmpeg -i sample.mjpeg -c:v mjpeg -q:v 5 sample_fixed.avi
FFmpeg is the industry standard for media verification:
ffmpeg -i input.avi -c:v copy -f null - 2> verify_log.txt
Check verify_log.txt for lines containing error, corrupt, or truncated. mjpeg video sample verified
Verification is a multi-stage process that confirms the following:
| Verification Aspect | What It Checks | |---------------------|----------------| | Structural Integrity | Start-of-Image (SOI - 0xFFD8) and End-of-Image (EOI - 0xFFD9) markers exist for each frame. | | Frame Count Accuracy | The declared number of frames matches the actual parsed frames. | | Checksum / Hash | Cryptographic hash (MD5, SHA-256) matches the original source or a reference. | | Decode-ability | Every JPEG frame can be decoded without fatal errors (e.g., via libjpeg or FFmpeg). | | Color & Artifact Check | No green banding, purple edges, or macro blocking (common corruption signs). | | Timestamp Continuity | For streams: PTS/DTS values are sequential and logical. | | File Format Compliance | If wrapped in AVI, MOV, or MKV – the container metadata is consistent with the MJPEG essence. | Run a decoder integrity check
Motion JPEG (MJPEG) is a video compression format where each video frame is separately compressed as a JPEG image. There are no inter-frame dependencies (no P-frames or B-frames, only I-frames). This is both its strength and its weakness.
Extract all frames:
ffmpeg -i input.avi frame%d.jpg
Compare original vs decoded — no artifacts or corruption.
Provides structural verification plus detailed metadata. ffplay sample