At the heart of this interaction lies the /axis-cgi/mjpg/video.cgi endpoint, a powerful tool that returns a motion JPEG stream. While modern cameras support H.264 and H.265, the MJPEG stream remains critical for legacy systems, custom dashboards, robotics vision, and low-latency applications.
camera: - platform: generic name: Axis Front Door still_image_url: http://root:pass@192.168.1.100/axis-cgi/jpg/image.cgi stream_source: http://root:pass@192.168.1.100/axis-cgi/mjpg/video.cgi?resolution=640x480 When building a robot with a Raspberry Pi, fetching MJPEG frames via OpenCV is easier than decoding H.264. The low latency helps with real-time object detection. 3. Legacy SCADA and Control Rooms Older industrial monitoring systems (no WebRTC support) can display multiple Axis MJPEG streams in an HTML frame grid. 4. Debugging and Field Testing Technicians use /axis-cgi/mjpg/video.cgi to quickly verify camera focus, angle, and lighting without specialized software. Part 7: Beyond MJPEG – Other Useful Axis CGI Endpoints While MJPEG is king for streaming, check out these related Axis CGI endpoints: axis cgi mjpg
const streamUrl = 'http://192.168.1.100/axis-cgi/mjpg/video.cgi'; const auth = btoa('root:pass'); fetch(streamUrl, headers: 'Authorization': Basic $auth ) .then(response => const reader = response.body.getReader(); let boundary = ''; let buffer = ''; At the heart of this interaction lies the
processStream(); ); OpenCV can read an MJPEG stream using cv2.VideoCapture with the HTTP URL. The low latency helps with real-time object detection
curl -u root:pass "http://192.168.1.100/axis-cgi/mjpg/video.cgi" The real power of the Axis CGI MJPEG endpoint lies in its parameters. These allow you to adjust resolution, framerate, compression, and even crop the image.
<img src="http://root:pass@192.168.1.100/axis-cgi/mjpg/video.cgi?resolution=640x480&fps=5"> The browser will continuously reload the image because the server streams multipart content. However, not all browsers support this natively forever; some may timeout. For modern web apps, you can parse the MJPEG stream manually: