I use axis IP camera a lot for capturing images and video. The image quality is great and they are highly customisable. I use a P1344 camera and it supports still images, MJPEG and H264. The still image are fine for capturing a one off, but too slow for video work. For this I need either MJPEG or H264. Both have there pros and cons.
MJPEG is existentially a sequence of JPEG images. It’s easy to use and the quality is good, depending on the compression settings. The downside is the bitrate over the network is larger than H264.
H264 is a lossy video compression format that has become ubiquitous on the internet these days for compressed video and blue-ray videos.
The camera can be controlled using the url. To get a H264 stream (using VLC in this case, but ffplay works perfectly well), at the command prompt type
vlc rtsp://192.168.0.103:554/axis-media/media.amp
changing the IP address to that of your camera. You can also add in the camera’s username and password using:
vlc "rtsp://192.168.0.103:554/axis-media/media.amp?user=XXX&password=XXXX"
The image resolution can be changed with
vlc rtsp://192.168.0.103:554/axis-media/media.amp?resolution=640x480
The resolution is camera dependent. There are a bunch of different settings, such as bit rate, compression, you can apply see the AXIS VAPIX documentation for the whole list. An easy way to do this is by using the cameras settings page to create a Stream Profile. There are a number built in and you can select them like so
vlc rtsp://192.168.0.103:554/axis-media/media.amp?streamprofile=Quality
Still images can be captured, by using
http://192.168.0.103/axis-cgi/jpg/image.cgi?resolution=320x240&compression=25
here I’ve selected the resolution and compression factor. You can grab the image by placing the above url into a browser.
Image Quality
Looking at the above shows subregions of example images captured at full resolution using JPG. We can see that there is significant compression artifacts in the image even at low compression ratios. Setting the compression ratio less than 40 appears to have little effect on image quality.
H264 streams appear to be similarly affected. The bitmap image shows some improvement however the data rate to transmit this is considerably larger.
Note that the RMS errors are calculated from the JPEG image with a compression factor of 0.
Benchmarking
ffplay "http://192.168.0.103/axis-cgi/mjpg/video.cgi?resolution=640x480&fps=15"
uses 60% of one core of my Odroid XU4 and 17% on my 2.7 GHz iMac
ffplay "rtsp://192.168.0.103:554/axis-media/media.amp?resolution=640x480&fps=15"
uses 88% on the Odroid and 14% on the iMac.