IP-Kamera 9000 from Aviosys

Post here to ask any questions about hardware suitability, configuration in ZoneMinder, or experiences. If you just want to know if something works with ZoneMinder or not, please check the Hardware Compatibility sections in the forum, and the Wiki first. Also search this topic as well.
Post Reply
Herman v.d. Watt
Posts: 4
Joined: Thu Jun 23, 2005 10:26 am
Location: South Africa

IP-Kamera 9000 from Aviosys

Post by Herman v.d. Watt »

We loaded the live CD and it worked well. No difficulties. We cannot get the Aviosys IP Kamera 9000 to work with zoneminder. We have tried ports 80 and 8080 (as indicated by manufacturer). Has anyone used this cam before, that can offer help please?
User avatar
zoneminder
Site Admin
Posts: 5215
Joined: Wed Jul 09, 2003 2:07 pm
Location: Bristol, UK
Contact:

Post by zoneminder »

You will probably need to work out the path to the images themselves rather than the web pages which are probably delivered by default over port 80. The easiest thing to do is probably view the source of the web page when browsing the cameras live feed and search for 'src=' until you find something that looks like a candidate for the image stream.

Not knowing the camera though it's possible that they either hide this link or use some other method that isn't so obvious.

Phil
Herman v.d. Watt
Posts: 4
Joined: Thu Jun 23, 2005 10:26 am
Location: South Africa

Post by Herman v.d. Watt »

Thank you for the speedy reply. It seems to be using GetData.cgi but we are only getting a blank black page
Herman v.d. Watt
Posts: 4
Joined: Thu Jun 23, 2005 10:26 am
Location: South Africa

further info

Post by Herman v.d. Watt »

We played with a Win based DVR called LuxRiot, and it detected the camera as an O'RITE/Toshiba. Any input will be highly appreciated.

Herman
User avatar
zoneminder
Site Admin
Posts: 5215
Joined: Wed Jul 09, 2003 2:07 pm
Location: Bristol, UK
Contact:

Post by zoneminder »

I don't know if you can open up the camera to the net or not. If you can PM the details and I'll take a look at it. Or failing that send me the results of 'view source'.

Phil
Herman v.d. Watt
Posts: 4
Joined: Thu Jun 23, 2005 10:26 am
Location: South Africa

Post by Herman v.d. Watt »

<HTML>
<HEAD>
<TITLE></TITLE>
<META NAME="Author" CONTENT="ChenXiaohui">

<SCRIPT defer>
var aoCameraUrl = [
''];
var IpAddr=location.protocol+"//"+location.hostname;
var PortNumber=[location.port,0];
var MyPathName;

// Create a cookie with the specified name and value.
// The cookie expires at the end of the 20th century.
function SetCookie(sName, sValue)
{
date = new Date(2050,1,1);
document.cookie = sName + "=" + escape(sValue) + "; expires=" + date.toGMTString();
delete date;
}

// Retrieve the value of the cookie with the specified name.
function GetCookie(sName)
{
// cookies are separated by semicolons
var aCookie = document.cookie.split("; ");

for (var i=0; i < aCookie.length; i++)
{
// a name/value pair (a crumb) is separated by an equal sign
var aCrumb = aCookie.split("=");
if (sName == aCrumb[0])
{
if (aCrumb.length > 1)
return unescape(aCrumb[1]);
else return "";
}
}
// a cookie with the requested name does not exist
return null;
}

// Delete the cookie with the specified name.
function DelCookie(sName)
{
document.cookie = sName + "=" + escape(sValue) + "; expires=Fri, 31 Dec 1999 23:59:59 GMT;";
}

var asNameList = new Array();
var asUrlList = new Array();
var asDespList = new Array();

function ReadCookie()
{
var sName, sUrl, sDescript;
var sPort = GetCookie("P");
var iPort = parseInt((location.port.length==0?"80":location.port), 10);
if (parseInt(sPort, 10) == iPort)
{
sName = GetCookie("N");
sUrl = GetCookie("U");
sDescript = GetCookie("D");
}
else
{
sName = null;
sUrl = null;
sDescript = null;
}

var iMax = 0;
var i, j;

if (sName)
{
sName = sName.split(",");
if (iMax < sName.length) iMax = sName.length;
}
if (sUrl)
{
sUrl = sUrl.split(",");
if (iMax < sUrl.length) iMax = sUrl.length;
}
if (sDescript)
{
sDescript = sDescript.split(",");
if (iMax < sDescript.length) iMax = sDescript.length;
}

for (j=0, i=0; j<20 && j<iMax; j++)
{
asNameList = "";
if (sName)
{
if (i < sName.length)
asNameList = unescape(sName);
}
asUrlList = "";
if (sUrl)
{
if (i < sUrl.length)
asUrlList = unescape(sUrl);
}
asDespList = "";
if (sDescript)
{
if (i < sDescript.length)
asDespList = unescape(sDescript);
}
if (asNameList[i].length > 0 || asUrlList[i].length > 0 || asDespList.length > 0)
i++;
}

for (j=0; j<i; j++)
aoCameraUrl[j] = asUrlList[j];
if (j == 0) aoCameraUrl[j++] = location.protocol + "//" + location.host;
aoCameraUrl[j] = "";
}

function WriteCookieUrl()
{
var sName, sUrl, sDescript;
var i;
for (i=0, sName=""; i<asNameList.length; i++)
{
if (i!=0) sName += ",";
sName += escape(asNameList[i])
}
for (i=0, sUrl=""; i<asUrlList.length; i++)
{
if (i!=0) sUrl += ",";
sUrl += escape(asUrlList[i])
}
for (i=0, sDescript=""; i<asDespList.length; i++)
{
if (i!=0) sDescript += ",";
sDescript += escape(asDespList[i])
}

SetCookie("N", sName);
SetCookie("U", sUrl);
SetCookie("D", sDescript);
SetCookie("P", (location.port.lenght==0?"80":location.port));
}

function RecordUrl()
{
delete asNameList;
delete asNameList;
delete asNameList;
asNameList = new Array();
asUrlList = new Array();
asDespList = new Array();

for (var i=2; i<document.all.oCamCtl.length; i++)
{
asNameList[i-2] = "";
asUrlList[i-2] = document.all.oCamCtl[i].URL;
asDespList[i-2] = "";
}
WriteCookieUrl();
}

</SCRIPT>

<SCRIPT>
function CalcSqrt(iTotal)
{
var iN;
iN = Math.sqrt(iTotal);

if (Math.floor(iN) != iN) iN = Math.floor(iN) + 1;
return iN;
}

function GetCtlNumber()
{
return document.all.oCamCtl.length - 2;
}

function CalcCamWidth(iNTable)
{
var iShowWidth = document.body.clientWidth - document.body.leftMargin - document.body.rightMargin;
var iCtlTotalWidth = iShowWidth>200 ? iShowWidth : 200;
var iCtlWidth = Math.floor(iCtlTotalWidth / iNTable);
return iCtlWidth>100 ? iCtlWidth : 100;
}

function CalcCamHeight(iNTable)
{
var iShowHeigh = document.body.clientHeight - document.body.topMargin - document.body.bottomMargin;
var iCtlTotalHeight = iShowHeigh>200 ? iShowHeigh : 200;
var iCtlHeight = Math.floor(iCtlTotalHeight / iNTable);
return iCtlHeight>75 ? iCtlHeight : 75;
}

function IsExistUrl(sCameraUrl)
{
return false;
for (var i=2; i<document.all.oCamCtl.length; i++)
if (document.all.oCamCtl[i].URL == sCameraUrl)
return true;
return false;
}

function AddNewCtl(sCameraUrl, bFocus, bResize)
{
if (sCameraUrl.length <= 0)
return;

for (i=0; i<sCameraUrl.length; i++)
{
if (sCameraUrl.charAt(i) == '\''
|| sCameraUrl.charAt(i) == '\"'
|| sCameraUrl.charAt(i) == '\\')
{
alert('Invalid URL!');
return;
}
}

var iCamCtlLen = GetCtlNumber();

if (iCamCtlLen >= 9)
{
alert("Too many watch windows!\n");
return;
}
if (IsExistUrl(sCameraUrl))
{
alert("IP Kamera on " + sCameraUrl + "has been added watching.");
return;
}

document.all.oCamCtl[iCamCtlLen + 1].insertAdjacentHTML('afterEnd',
'<OBJECT onreadystatechange="if(this.readyState == 4) {this.URL=\''+sCameraUrl+'\';' + (bResize?'BodyResize();':'') + (bFocus?'SetFocusLastCtl();':'') + '}" style="{border: solid 1 white;}" ID=oCamCtl CODEBASE="WinWebPush.cab#version=1,0,1,5" CLASSID="CLSID:7876E4A5-78B7-4020-B08F-C960A1ED54C9" onfocus="SetFocusCtl(this);"></OBJECT>');

RecordUrl();
}

var oFocusCtl = null;

function DelExistCtl(oWhich)
{
if (oWhich == null) return;
oWhich.removeNode(true);

var iCamCtlLen = GetCtlNumber();

if (iCamCtlLen > 0) SetFocusCtl(document.all.oCamCtl[2]);
else
{
oFocusCtl = null;
top.rbottom.document.Add.AddUrl.value = '';
top.left.document.all.oPos.innerText = '';
RecordUrl();
return;
}

BodyResize();
RecordUrl();
}

function DeleteCurCtl()
{
if (oFocusCtl) DelExistCtl(oFocusCtl);
}

function SetFocusCtl(oWhich)
{
for (var i=2; i<document.all.oCamCtl.length; i++)
{
if (oWhich == document.all.oCamCtl[i])
document.all.oCamCtl[i].style.borderColor = "blue";
else
document.all.oCamCtl[i].style.borderColor = "white";
}
if (i == 2) return;

oFocusCtl = oWhich;
top.rbottom.document.Add.AddUrl.value = oWhich.URL;
top.left.SetFocusCtl(oFocusCtl);
}

function SetFocusLastCtl1()
{
var iLast = document.all.oCamCtl.length - 1;
if (iLast >=2 ) SetFocusCtl(document.all.oCamCtl[iLast]);
}

function SetFocusLastCtl()
{
setTimeout("SetFocusLastCtl1()", 0);
}

function Init()
{
top.owMain = true;
}

function TempCtlRSChange()
{
if (event.srcElement.readyState == 4)
{
if (isNaN(parseInt(event.srcElement.Layout, 10)))
{
top.sErr = "ActiveX can not be initialized!";
}
else Init();
}
}

function InitBackCall()
{
ReadCookie();
oTempCtl.removeNode();
for (var i=0; i<aoCameraUrl.length-1; i++)
AddNewCtl(aoCameraUrl[i], false, false);
if (aoCameraUrl.length > 1)
{
BodyResize();
SetFocusCtl(document.all.oCamCtl[2]);
}
}

function BodyResize()
{
setTimeout("BodyResize1();", 0);
}

function BodyResize1()
{
var iCtlNumber = GetCtlNumber();
if (iCtlNumber == 0) return;
var iCols = CalcSqrt(iCtlNumber);
var iRows = Math.floor((iCtlNumber + iCols - 1) / iCols);

var iBorder = parseInt((document.all.oCamCtl[2].style.borderWidth?document.all.oCamCtl[2].style.borderWidth:0), 10);

var iCtlWidth = CalcCamWidth(iCols) - 2 * iBorder;
var iCtlHeight = CalcCamHeight(iRows) - 2 * iBorder;

var iCtlSizeX = Math.floor((iCtlWidth) / 4);
var iCtlSizeY = Math.floor((iCtlHeight) / 3);
if (iCtlSizeX > iCtlSizeY) iCtlSizeX = iCtlSizeY;

for (var i=2; i<document.all.oCamCtl.length; i++)
{
document.all.oCamCtl[i].CamWidth = iCtlSizeX * 4 - 6;
// document.all.oCamCtl[i].CamHeight = iCtlSizeX * 3;
}
}
</SCRIPT>

<SCRIPT defer>
var iEventShowArrayMaxLength = 80;
var asEventShowArray = new Array();
var iEventShowArray = 0;

var iEventShowLine = 0;
var iEventColorTb = ["red", "blue", "#CC00CC", "#008080", "#D9AD00"];
function AppendEventShowArray(s)
{
s = "<font color="+iEventColorTb[iEventShowLine]+">"+s+"</font>";
iEventShowLine++;
if (iEventShowLine >= iEventColorTb.length) iEventShowLine = 0;
if (iEventShowArray >= iEventShowArrayMaxLength)
{
for (var i=1; i<asEventShowArray.length; i++)
asEventShowArray[i-1] = asEventShowArray[i];
asEventShowArray[i-1] = s;
}
else
{
asEventShowArray[iEventShowArray] = s;
iEventShowArray++;
}
return asEventShowArray.join("<br>");
}

var tMotion = null;
</script>

<SCRIPT FOR=oCamCtl EVENT="MotionDetect()" defer>
if (tMotion == null)
{
tMotion = setTimeout('tMotion = null;', 1200);
var date = new Date();
top.rbottom.document.all.EventShow.innerHTML = AppendEventShowArray("Motion: " + this.URL + " ("+date+")");
top.rbottom.document.all.EventShow.scrollTop = window.parent.rbottom.document.all.EventShow.scrollHeight;
delete date;
}
</SCRIPT>

<SCRIPT FOR=oCamCtl EVENT="Resolution(reso)" defer>
if (oFocusCtl == null) return;
if (oFocusCtl == this)
{
top.left.SetResValue(reso);
top.left.ShowAdminCtl(this);
}
</SCRIPT>

<SCRIPT FOR=oCamCtl EVENT="Frequency(freq)" defer>
if (oFocusCtl == null) return;
if (oFocusCtl == this)
{
top.left.SetFreqValue(freq);
top.left.ShowAdminCtl(this);
}
</SCRIPT>

<SCRIPT FOR=oCamCtl EVENT="Quality(quality)" defer>
if (oFocusCtl == null) return;
if (oFocusCtl == this)
{
top.left.SetQuaValue(quality);
}
</SCRIPT>


<SCRIPT FOR=oCamCtl EVENT="Layout(newlay)" defer>
if (oFocusCtl == null) return;
if (oFocusCtl == this)
{
top.left.SetLayout(newlay);
}
</SCRIPT>

<SCRIPT FOR=oCamCtl EVENT="CamVer(ver)" defer>
if (oFocusCtl == null) return;
if (oFocusCtl == this)
{
top.left.SetResolution(ver);
}
</SCRIPT>

<SCRIPT FOR=oCamCtl EVENT="GetCamName(name)" defer>
if (oFocusCtl == null) return;
if (oFocusCtl == this)
{
try
{
top.rinfo.SetCameraName(name);
} catch (e) {};
}
</SCRIPT>
<SCRIPT FOR=oCamCtl EVENT="ServerAudio(enable)" defer>
if (oFocusCtl == null) return;
if (oFocusCtl == this)
{
try
{
top.iBool = enable;
top.rinfo.ServerAudioEvent(enable);
} catch (e) {
top.iBool = enable;
};
}
</SCRIPT>

</HEAD>

<BODY background="I-cam-9000.jpg" onresize="BodyResize();">
<input id=oCamCtl type=hidden><input id=oCamCtl type=hidden>
<OBJECT onreadystatechange="TempCtlRSChange();" style="{visibility:hidden;}" ID=oTempCtl CODEBASE="WinWebPush.cab#version=1,0,1,5" CLASSID="CLSID:7876E4A5-78B7-4020-B08F-C960A1ED54C9"></OBJECT>
</BODY>
</HTML>
Baylink
Posts: 338
Joined: Sun Jun 19, 2005 3:19 am

Post by Baylink »

Your camera's native mode is to use a Windows ActiveX control (likely downloaded from the camera by the browser) to suck the stream from it.

Either look for a "Netscape compatible" mode in the camera UI, or google for "$CAMERANAME cgi", and see if you get lucky.
dean_za
Posts: 4
Joined: Tue Feb 15, 2005 3:28 pm

Post by dean_za »

Herman

Go the to the avion website and download the latest firmware. Make sure the res you have set in the camera is the same as the res in zm and you should be fine. I have one working at the moment.

Regards
Dean
rayboy
Posts: 5
Joined: Thu Jun 30, 2005 12:51 am

Post by rayboy »

dean_za wrote:Herman

Go the to the avion website and download the latest firmware. Make sure the res you have set in the camera is the same as the res in zm and you should be fine. I have one working at the moment.

Regards
Dean
Hi Dean

Are you using the GetData.cgi script also? I have the 9100 video server, which also uses that script for non internet explorer browsers. But I too only get a blank page through ZM.

You couldn't give us a brief overview of your settings could you?

Thanks

Ray
dean_za
Posts: 4
Joined: Tue Feb 15, 2005 3:28 pm

Post by dean_za »

I have found that the ffmpeg file seems to be the most problematic. I had one from dag.wieers.com and then it got updated by atrpms and suddenly everything stopped working. So I uninstalled atrpms one and reinstalled dags. i am using fc3 and the zm rpms from cordel.

Basically. set the resolution to 320x240 on the cam , created a user zm with password. set up remote source zm:pass@cam1 , path /GetData.cgi and same resolution. Initially 8 bit grayscale then 24 bit colour. I have made sure my dns resolves so I dont have to use ip addreses but an ip should work as well.

beyond that I dont know any more. Still early days for me.

Regards
Dean
Post Reply