Motion JPEG (MJPEG or M-JPEG) is a video compression format in which each video frame or interlaced field of a digital video sequence (including video and metadata such as subtitles and closed captioning) is compressed separately as a JPEG image. Originally developed for multimedia PC applications, MJPEG is now used by video-capture devices such as digital cameras, IP cameras, webcams, and by nonlinear video editing systems. It is supported by the QuickTime Player, the PlayStation console and browsers such as Safari, Google Chrome and Mozilla Firefox. MJPEG was first used by the QuickTime Player in the mid-1990s.
MJPEG is an intra-frame-only compression scheme. Because frames are compressed independently of one another, MJPEG imposes lower processing and memory requirements on hardware devices. As such, the image-quality of MJPEG is directly a function of each video frame’s spatial complexity. Frames with large smooth-transitions or monotone surfaces compress well and are more likely to hold their original detail with few visible compression artifacts. Frames exhibiting complex textures, fine curves and lines are prone to exhibit DCT artifacts such a ringing, smudging and macroblocking. This gives MJPEG an advantage over interframe compression schemes, which do not accommodate rapid motion between frames and require more hardware to meet the memory demands of interframe compression.
MJPEG is frequently used in non-linear video editing systems. Desktop CPUs are powerful enough to work with high-definition video so no special hardware is required and they in turn offer native random-access to a frame. MJPEG support is also widespread in video capture and editing equipment, allowing for easy file-sharing for uses such as archiving and transcription.
Prior to the recent rise in MPEG-4 encoding in consumer devices, a progressive scan form of MJPEG saw widespread use in the movie modes of digital still cameras, allowing video encoding and playback through the integrated JPEG compression hardware with only software modification. The AMV video format is a modified version of MJPEG.
Many network-enabled cameras provide MJPEG streams that network clients can connect to. Mozilla and Webkit-based browsers have native support for viewing MJPEG streams. Some network-enabled cameras provide their own MJPEG interfaces as part of the normal feature set. For cameras that don’t provide this feature natively, a server can be used to transcode the camera pictures into an MJPEG stream and then provide that stream to other network clients.
The MJPEG standard emerged from a market-adoption process rather than a standards body and thus enjoys broad client support. Most major web browsers and video players provide native support and plug-ins are available for the rest.