====== AxpLinCam ======
few days ago i bought //AXP IP camera//. it has wifi (802.11n is supported!), ethernet (10/100) audio in/out, 1 input and 1 output relay (for controlling stuff). of course pan/tilt is also available. video is recorded in a HD (1280x720) at 25fps.
{{:prjs:axplincam:front.jpg?200|AXP - front view}}
{{:prjs:axplincam:back.jpg?200|AXP - back view}}
it is though to be controlled via web interface (requires ActiveX -- no comments on that...). video camera supports getting a video stream via [[wp>RTSP]]. there are two issues with that:
- documentation says nothing about the address to use.
- there is no documentation on how to control the camera outside of the web interface.
let's see what can we do about that... :)
===== protocol =====
... is not documented. event RTSP link did not make it to the documentation. ;) fortunately, after a minute with [[wp>wireshark]], it appeared that the protocol is, in fact, dead simple.
==== RTSP ====
there are two streams, that can be obtained (assuming 1.2.3.4 is the IP of the camera):
- rtsp://1.2.3.4/11 (high resolution)
- rtsp://1.2.3.4/12 (lower resolution)
it can be player with mplayer like this:
mplayer -user "user" -passwd "xxxx" "rtsp://1.2.3.4/11"
and recorded like this:
mplayer -dumpvideo -dumpfile out.mpg -user "user" -passwd "xxxx" "rtsp://1.2.3.4/11"
stream is saved as [[wp>H.264]] mpeg.
==== pan/tilt control ====
camera movement is simply [[wp>HTTP]] request. base link is: http://1.2.3.4/web/cgi-bin/hi3510/ptzctrl.cgi. parameters are passed directly as a [[wp>POST (HTTP)|post]] arguments. the nice think is it even has a help switch, so to see available options wget can be used:
$ wget -q -O - "http://1.2.3.4/web/cgi-bin/hi3510/ptzctrl.cgi?-?"
-?
print help msg
-act
ptz action:up|down|left|right|vscan|hscan|stop|home
-chn
channel number:0~3 default:0
-step
step or not: 0|1 default:0
-speed
speed number:0~255 default:0
content is pretty much self-explaining. for example to rotate camera, one step left, the command is:
$ wget -q -O - "http://1.2.3.4/web/cgi-bin/hi3510/ptzctrl.cgi?-act=left&-step=1"
[Success]call ptz function ok
yes! you've noticed correctly -- no user name, nor password is required to operate on the camera! this is a fatal security breach, since anyone with the access to the network can move it to point, say to a ceiling, instead of actually monitored object! it's still a nice toy -- but only a toy...
the funny thing is, that it is probably more generic script, since it is called [[wp>Pan–tilt–zoom_camera|PTZctrl]], though camera does not support zoom. so it is possible that the same bug is present in more device types...
===== linux tools =====
in order to use the device from linux, one must have option to capture video stream and to move camera. stream can be captured with mplayer. to control camera in a user-friendly way a [[wp>Python (programming language)|python]] library and an executable script has been created. it allows you to control device with arrow keys as well as do other requests, like infrared LED turning on/off. since version v1.1.0 also non-interactive, command line processing is available.
code is available on [[https://github.com/el-bart/AxpLinCam|github/AxpLinCam]] project.