WAVE MP4
MJPEG · to · MP4

Convert MJPEG to MP4

Motion JPEG encodes every video frame as an independent JPEG - great for editing (any frame is a keyframe), terrible for storage (10-20x larger than H.264 at equivalent quality). Wave re-encodes MJPEG to H.264 in an MP4 container for a big file-size drop and playback everywhere.

Under the hood

What actually changes

MJPEG source VIDEO Motion JPEG AUDIO PCM / AAC / none MP4 new codecs VIDEO H.264 AUDIO AAC (or none) RE-ENCODE streams transcoded
Each MJPEG frame is an independent JPEG. Wave decodes them frame-by-frame and re-encodes to H.264, producing an MP4 typically 10-20x smaller than the source.

Motion JPEG (MJPEG) is the simplest possible video codec: encode each frame as a JPEG image, string the JPEGs together in temporal order, wrap in a container (usually AVI for older content, MOV for Apple-adjacent, MP4 for modern devices). The compression is JPEG's intra-frame compression - no inter-frame prediction, no motion estimation, no reference frames. That property (every frame is a keyframe) is why MJPEG survived long past the point where inter-frame codecs like H.264 were technically superior: editors love MJPEG because you can cut at any frame without a re-encode.

The trade-off is size. MJPEG at a given visual quality is typically 10-20x larger than H.264 - a 5-minute 1080p dashcam MJPEG might be 8 GB, where the equivalent H.264 MP4 is 400 MB. For playback and storage, that's obviously not what you want; MJPEG shines in the working intermediate stage, not the delivery stage.

Where MJPEG shows up in 2026: cheap dashcams that use MJPEG in AVI containers for the same edit-at-any-frame reason (traffic incidents get clipped at exact frame boundaries), industrial cameras and machine vision recordings (each frame is a diagnostic reference), medical imaging exports (DICOM-adjacent MJPEG for endoscopy and ultrasound recordings), and some older security-camera systems. Wave decodes the JPEG frames one at a time, then re-encodes to H.264 through WebCodecs - the browser API for hardware-accelerated video encoding.

The re-encode is where quality loss theoretically enters: each frame decodes to raw pixels then re-encodes to H.264. In practice for MJPEG at typical dashcam or industrial-camera bitrates, the JPEG frames are already lossy compressed at moderate quality; the H.264 re-encode adds negligible further loss on top of that. A 5-second frame-by-frame comparison of MJPEG source vs H.264 MP4 output shows differences only at hard edge boundaries under 400% zoom - well below the perceptual threshold on any normal viewing.

How to convert

Three steps.

  1. 01

    Step 1

    Drop your MJPEG-in-AVI, MJPEG-in-MOV, or MJPEG-in-MP4 file onto Wave. Wave inspects and confirms Re-encode.

  2. 02

    Step 2

    Each JPEG frame decodes and re-encodes to H.264 through the browser's WebCodecs encoder. A 5-minute 1080p MJPEG at 20 Mbps typically finishes in 2-4 minutes on modern hardware.

  3. 03

    Step 3

    Save the output. The MP4 plays on every modern device at 1/10 to 1/20 the size of the MJPEG source.

FAQ

Answers, specifically.

How much smaller will the H.264 MP4 be than the MJPEG source?

Typically 10-20x smaller at equivalent visual quality. A 5-minute 1080p dashcam MJPEG at 20 Mbps (about 8 GB) becomes an H.264 MP4 at 6 Mbps (about 400 MB). H.264's inter-frame prediction is where the savings come from - most video has strong temporal correlation between adjacent frames that MJPEG throws away.

Is there any quality loss?

A tiny amount, well below the perceptual threshold. The MJPEG frames are already lossy compressed (JPEG); the H.264 re-encode adds a small amount of further loss on top. Frame-by-frame side-by-side at 400% zoom shows edge-detail differences on hard boundaries; normal viewing at 1:1 shows no perceivable difference.

MJPEG in an AVI wrapper - same conversion?

Yes. Wave detects the codec inside the container, not the container extension. AVI + MJPEG, MOV + MJPEG, and MP4 + MJPEG all convert identically - decode each JPEG frame, re-encode to H.264, wrap in MP4.

My dashcam records MJPEG at 30 fps - will the frame rate survive?

Yes. Wave preserves the source frame rate. If the source was 30 fps, the output is 30 fps. Variable frame rates (some industrial cameras) are preserved via variable presentation timestamps in the output MP4.

Can I extract a single frame as a JPEG?

MJPEG makes this trivial in principle (each frame is already a JPEG), but Wave doesn't currently expose frame extraction. Use ffmpeg locally: `ffmpeg -i input.avi -vf select=eq(n\,42) -vframes 1 frame_42.jpg` to extract frame 42.

Industrial-camera timestamp overlays on each frame - preserved?

Yes. Timestamp overlays are burned into the pixel data (industrial cameras usually render the timestamp into the frame before JPEG encode), so they survive the H.264 re-encode as image content. Extracted timestamp metadata (some camera SDKs write timestamps to a sidecar file) is not something Wave imports.

What if my source is 4K MJPEG?

Works the same way, but slower. 4K MJPEG at typical bitrates hits 60-100 Mbps and produces gigabytes per minute; the WebCodecs H.264 encoder handles it at roughly real-time on modern hardware, more slowly on older GPUs. Wave's 8 GB per-file cap will hit fast for long 4K MJPEG recordings - split before conversion for those.

Related

Other converters.