Axis CGI MJPG refers to using Axis network cameras’ CGI (Common Gateway Interface) endpoints to access Motion JPEG (MJPEG) video streams and retrieve camera data via HTTP requests. Below is a concise technical write-up covering purpose, key endpoints, common parameters, authentication, examples, and best practices.
?fps=10
Before the widespread adoption of H.264 and H.265, Motion JPEG (MJPEG) was the de facto standard for network video due to its simplicity and low computational overhead. Axis network cameras exposed a CGI (Common Gateway Interface) API, allowing HTTP clients to request MJPEG streams. The /axis-cgi/mjpg/video.cgi endpoint remains a critical feature for integration with legacy systems, custom applications, and low-latency requirements. axis cgi mjpg
Always change root password. Use a strong password and create a dedicated streamer user with only View permissions.
The Axis /axis-cgi/mjpg/video.cgi interface remains a robust, simple, and widely supported method for obtaining video streams. While less efficient than modern codecs, its frame independence, low latency, and trivial decoding make it ideal for specific use cases. Understanding its parameters, performance characteristics, and security implications is essential for system integrators and developers working with Axis network cameras. Axis CGI MJPG — Overview and Usage Axis
Axis moved to a more robust API architecture called VAPIX. While the MJPG CGI is part of VAPIX history, newer functions are controlled via RESTful APIs.
| Problem | Likely Cause | Solution |
|---------|--------------|----------|
| 401 Unauthorized | Missing/wrong auth | Use digest or basic auth correctly |
| 404 Not Found | CGI disabled or wrong path | Check http://ip/axis-cgi/ exists; enable MJPEG in camera web UI |
| Connection reset | Too many clients | Limit viewers; use multicast if supported |
| No image but no error | Browser lacks MJPEG support | Use VLC or custom app |
| High latency | Buffering in network | Reduce fps and resolution |
| Frozen stream | Server stops sending | Implement reconnect logic | its frame independence
Sometimes you don’t need a full stream; you just need a single JPEG frame:
http://<camera-ip>/axis-cgi/jpg/image.cgi?camera=1&resolution=1024x768
This is not technically "MJPG" (since it lacks the "Motion"), but it is part of the same CGI family and often used in conjunction with MJPG for lazy-loading or thumbnail generation.