D-Link
DLink is a supplier of several IP Cameras. Not all work with ZoneMinder. DCS-1000(W) and DCS-900 - plus other D-Link IP models (This have been hit and miss, not all work with ZM. A partial list of unsupported cameras are inside).
DCS-900
There are 2 versions of this camera. The "A" version is reported to work extremely well with ZoneMinder. The "B" version also works, but has a been reported to have lesser performance. I have been able to get upto 8 fps with my revision "B" camera.
Source Type: Remote Remote Host Name: IP Address of Camera Remote Host Port: 80 (Default) Remote Host Path: /VIDEO.CGI or /IMAGE.JPEG (/VIDEO.CGI is the MJpeg stream, and gets higher FPS in my testing)
With version A2
Source Type: Remote Remote Host Name: user:pass@<IP_Address_of_Camera> (user:pass@192.168.0.5) Remote Host Port: 80 (Default) Remote Host Path: VIDEO.CGI
With the latest versions of the DCS-900 "B" there is an additional step needed in the "Options > Network" section of ZoneMinder.
ZM_NETCAM_REGEXPS Value = (no-checkmark)
DCS-910 / 920
Source Type: Remote Remote Host Name: user:pass@<IP Address of Camera> Remote Host Port: 80 (Default) Remote Host Path: /VIDEO.CGI? for stream
There is the same aditional step as in DCS-900B, in the "Options > Network" section of ZoneMinder.
ZM_NETCAM_REGEXPS Value = (no-checkmark)
DCS-930L / 932L
Source Type: Remote Remote Host Name: user:pass@<IP Address of Camera> Remote Host Port: 80 (Default) Remote Host Path: /image/jpeg.cgi
Additionally MJPEG stream avaliable at: /MJPEG.CGI but next step is required for it, in the "Options > Network" section of ZoneMinder.
ZM_NETCAM_REGEXPS Value = (no-checkmark)
DCS-1100
Source Type: Remote Remote Protocol: HTTP Remote Method: Simple Remote Host Name: user:pass@<IP Address of Camera> Remote Host Port: 80 (Default) Remote Host Path: /video/mjpg.cgi?profileid=3
Where Profileid is setup in the camara's setup interface.
DCS-2100+, DCS-2100G
Source Type: Remote Remote Host Name: IP Address of Camera Remote Host Port: 80 (Default) Remote Host Path: /cgi-bin/video.jpg
Note: you must change Network -> ZM_HTTP_VERSION option to 1.0 for this camera to work!
DCS-2120
Source Type: Remote Remote Host Name: IP Address of Camera Remote Host Port: 80 (Default) Remote Host Path: /cgi-bin/video.jpg
DCS-2121
Source Type: Remote Remote Host Name: username:password@cam_ip Remote Host Port: 80 (Default) Remote Host Path: /image/jpeg.cgi?profileid=1
DCS-2130
Source Type: Remote Remote Host Name: username:password@cam_ip Remote Host Port: 80 (Default) Remote Host Path: /image/jpeg.cgi?profileid=1
DCS-2210
(Change in video settings of the camera the mode to MPEG4 first) Source Type: Remote Remote Protocol: RTSP Remote Method: RTP/Unicast Remote Host Port: 554 Remote Host Name: <IP Address of Camera> Remote Host Path: /live1.sdp
Source Type: Remote Remote Protocol: Ffmpeg Remote Host Path: rtsp://<IP Address of Camera>:554/live1.sdp
(Change in video settings of the camera the mode to MPEG4 first) Source Type: Remote Remote Protocol: HTTP Remote Host Port: 80 Remote Host Name: user:pass@<IP Address of Camera> Remote Host Path: /video1.mjpg
DCS-3220
Source Type: Remote Remote Host Name: IP Address of Camera Remote Host Port: 80 (Default) Remote Host Path: /cgi-bin/video.jpg
DCS-3410
HTTP Source Type: Remote Remote Host Name: user:pass@<IP Address of Camera> Remote Host Port: 80 (Default) Remote Host Path: /video/mjpg.cgi (for mjpeg stream)
RTSP Source Type: ffmpeg Source Path: rtsp://user:pass@<IP Address of Camera>/play1.sdp (or play2.sdp)
ZoneMinder 1.24.2 (Haven't tried earlier versions)
Tried it with just admin:@<IP Address of Camera> without password before setting camera password and it worked. Created an account with a password, tried that and it also worked.
May need /video/mjpg.cgi?profileid=3 caught that from tcpdump, suspect the numbers are resolution but don't seem to have any affect.
Seems like it's operating in factory default Profile 3, 704x480 10fps jpeg. Haven't found a way to change the Profile used yet. Could only pull about 22fps when camera was set to 30fps (mjpeg) so opted to set camera to 15fps.
RTSP works with ffmpeg as above pulling 30fps when camera set to 30fps for that Profile but could not get it working with Source Type Remote and Remote Protocol RTSP.
Looks like Audio is at /audio/ACAS.cgi but haven't done anything with that.
DCS-3710
HTTP Source Type: Remote Remote Host Name: user:pass@<IP Address of Camera> Remote Host Port: 80 (Default) Remote Host Path: /video2.mjpg (for stream 2)
ZoneMinder 1.24.3 (Haven't tried earlier versions)
Video profile mode must be set to JPEG.
DCS-5222L
HTTP Source Type: Remote Remote Host Name: user:pass@<IP Address of Camera> Remote Host Port: 80 (Default) Remote Host Path: /video/mjpg.cgi (for mjpeg stream) Remote Host Path: /image/jpeg.cgi (for jpeg stream)
The jpeg and the mjpeg both output at the resolution specified for "video profile 3"
RTSP Source Type: ffmpeg Source Path: rtsp://user:pass@<IP Address of Camera>/play1.sdp (or play2.sdp)
May need /video/mjpg.cgi?profileid=3 might catch other profiles by using this URL
Looks like Audio is at /audio/ACAS.cgi but haven't done anything with that.
DCS-5300G
Source Type: Remote Remote Host Name: IP Address of Camera Remote Host Port: 80 (Default) Remote Host Path: /cgi-bin/video.jpg
Note: you must change Network -> ZM_HTTP_VERSION option to 1.0 for this camera to work!
DCS-6010L
HTTP Source Type: Remote Remote Host Name: user:pass@<IP Address of Camera> Remote Host Port: 80 (Default) Remote Host Path: /video/mjpg.cgi (for mjpeg stream) Remote Host Path: /image/jpeg.cgi (for jpeg stream)
The jpeg and the mjpeg both output at the resolution specified for "video profile 3"
May need /video/mjpg.cgi?profileid=3 might catch other profiles by using this URL
DCS-6111
Source Type: Remote Remote Protocol: HTTP Remote Host Port: 80 (Default) Remote Host Name: user:pass@<IP Address of Camera> Remote Host Path: (stream 1): /video.mjpg Remote Host Path: (stream 2): /video2.mjpg
DCS-1000
Source Type: Remote Remote Protocol: HTTP Remote Host Port: 80 (Default) Remote Host Name: user:pass@<IP Address of Camera> Remote Host Path: VIDEO.CGI (You must upgrade the firmware on the camera to 1.30 for this to work. Try this site for the firmware and the ipview software to install the firmware.)
DCS-6620G
Source type: Remote Remote Host Name: IP Address of Camera Remote Host Port: 80 (Default) or the non-default port assigned to the camera in your network Remote host Path: /cgi-bin/video.jpg Control script: download at www.condrau.com/download/zmcontrol-dcs6620g.pl
The control script supports all controls for this camera, but it can be used for other D-Link and Vivotek cameras as well. I verified it with DCS-6620 and Vivotek's PT7137, as the software is compatible with these 2 cameras. It should also work with other models such as the DCS-5300.
Note that I implemented a real name preset functionality, where you can set any desired name as the preset name. It is basically possible to set the presets through ZM's interface, but I prefer to do it through the cam's firmware interface, which is the default setting in the script. By changing one constant definition, you may change this behaviour. In any case still activate the "can set presets" option in ZM, after which you can assign names to each preset.
I would further recommend to update the cam's firmware. I found smoother operation in ZM after having updated the firmware, and also with the latest firmware you can set ZM_HTTP_VERSION option to 1.1. [bco]
The camera will work with Zoneminder 1.25 with some minor modifications to the template PanasonicIp.pm script. Copy file and rename to DCS6620. Changed commands are listed below. The the only tricky part was zoom. Changes nearly identically for (PZ8111) which is almost the same camera. Note difference /cgi-bin/$cmd instead of /cgi-bin/camctrl/$cmd in. For some reason the zoom ui is calling Tele and Wide functions instead of zoomConTele and zoomConWide. Use the options below Monitor
- Control Type = DCS6620
- Control Device = blank
- Control Address = <ip address of your camera>
Control Capabilities
- Type = Remote
- Protocol = DCS6620
- Can Move = Check
- Can Move Continuous = Check
- Can Pan = Check
- Can Tilt = Check
- Can Zoom = Check
package ZoneMinder::Control::DCS6620; sub sendCmd { my $self = shift; my $cmd = shift; my $result = undef; printMsg( $cmd, "Tx" ); my $req = HTTP::Request->new( GET=>"http://".$self->{Monitor}->{ControlAddress}."/cgi-bin/$cmd" ); my $res = $self->{ua}->request($req); if ( $res->is_success ) { $result = !undef; } else { Error( "Error check failed: '".$res->status_line()."'" ); } return( $result ); } sub moveConUp { my $self = shift; Debug( "Move Up" ); my $cmd = "camctrl.cgi?move=up"; $self->sendCmd( $cmd ); } sub moveConDown { my $self = shift; Debug( "Move Down" ); my $cmd = "camctrl.cgi?move=down"; $self->sendCmd( $cmd ); } sub moveConLeft { my $self = shift; Debug( "Move Left" ); my $cmd = "camctrl.cgi?move=left"; $self->sendCmd( $cmd ); } sub moveConRight { my $self = shift; Debug( "Move Right" ); my $cmd = "camctrl.cgi?move=right"; $self->sendCmd( $cmd ); } sub Tele { my $self = shift; #my $params = shift; #my $step = $self->getParam( $params, 'step' ); Debug( "Zoom Tele" ); my $cmd = "camctrl.cgi?zoom=tele"; $self->sendCmd( $cmd ); } sub Wide { my $self = shift; #my $params = shift; #my $step = $self->getParam( $params, 'step' ); Debug( "Zoom Wide" ); my $cmd = "camctrl.cgi?zoom=wide"; $self->sendCmd( $cmd ); }
DCS-7010L
Change in video settings of the camera the mode to MPEG4 and restart the device.
Source Type: Remote Remote Protocol: RTSP Remote Method: RTP/Unicast Remote Host Port: 554 Remote Host Name: <IP Address of Camera> (RTSP authentication didn't work with this method) Remote Host Path: /live1.sdp
Source Type: Remote Remote Protocol: Ffmpeg Remote Host Path: rtsp://<IP Address of Camera>:554/live1.sdp Remote Host Path: rtsp://user:pass@<IP Address of Camera>:554/live1.sdp (when RTSP authentication is enabled)
Source Type: Remote Remote Protocol: HTTP Remote Host Port: 80 Remote Host Name: user:pass@<IP Address of Camera> Remote Host Path: /video1.mjpg
DCS-7110
Device's web server gives example code for various setups. Verified 2012-12-08.
* http://<cam-ip>:80/cgi-bin/viewer/video.jpg?streamid=0&quality=5 // single-shot jpg image * rtsp://<cam-ip>:554/live.sdp // feeds VLC
Incompatible Hardware
I know that the DCS-1110 is not compattible with ZoneMinder, as it requires ActiveX to recive the MJpeg stream.
If you know of other DLink cameras that don't work, please add them to the list!
DCS-950 not compatible. Mpeg stream. Authentication is OCX application based, not web standard authentication. JPG file generated at random url, not predictable.[1]