← Back

Decode Motion JPEG video using the <video> tag

Motion JPEG is not a video codec in its own right: every frame is a complete baseline JPEG image, and the container simply plays them in sequence. That makes it a good illustration of what a filter chain buys you, because no new decoder is involved — avidmx_1 splits the AVI and tags the MJPG stream as JPEG, the ordinary libjpeg_1 image decoder expands each frame, rgbyuv_1 converts its RGB output to 4:2:0, and libx264_1 with isobmff_1 produce the MP4 the <video> element plays. All 50 frames come out at 48.8 dB PSNR against a native ffmpeg decode.

Code snippet

<video is="universal-video_1" src="testcard.avi" using="solver_1"
        with="avidmx_1;libjpeg_1;rgbyuv_1;isobmff_1;libx264_1" controls> </video>

The same stream can also be rendered straight to a canvas, which skips the re-encoding step entirely.

Specifications :

The specifications of the test sequence are :

Format Motion JPEG in AVI, 320x180, 25 fps, 50 frames
FileSize 316 Ko
Solver solver_1