下面是一个用C++写的ActiveX控件,主要功能是提供播放摄像头录制录像的视频监控的接口
用oleview软件来察看ActiveX控件的classid
<!--事件的定义 下面两个标签是定义ActiveX控件的事件RecListNotify(wVidChnId,wYear,wMonth,wDay,strRecList),ErrorMessage(strErrMsg)-->
<script for="Nvrctrl" language="JavaScript" event="RecListNotify(wVidChnId,wYear,wMonth,wDay,strRecList)" type="text/javascript">
<!--当事件RecListNotify(wVidChnId,wYear,wMonth,wDay,strRecList)触发时调用的js函数-->
eventfunction(wVidChnId,wYear,wMonth,wDay,strRecList)
</script>
<script for="Nvrctrl" language="JavaScript" event="ErrorMessage(strErrMsg)" type="text/javascript">
<!--当事件ErrorMessage(strErrMsg)触发时调用的js函数-->
ErrorMessageFunction(strErrMsg)
</script>
<script type="text/javascript" >
var Nvrctrl;
//事件触发的方法
function eventfunction(param1,param2,param3,param4,param5) {
//用alert方法显示出调用事件的参数
alert("param1 = " + param1);
alert("param2 = " + param2);
alert("param3 = " + param3);
alert("param4 = " + param4);
alert("param5 = " + param5);
}
function ErrorMessageFunction(param1) {
//用alert方法显示出调用事件的参数
alert("strErrMsg = " + param1);
}
function init() {
try {
Nvrctrl = document.getElementById('Nvrctrl');//得到指定的ActiveX控件
//调用ActiveX控件的方法来连接服务器
var flage = Nvrctrl.ConnectServer( "172.16.31.20",1730,"admin","admin123",20000,"",0,"",0 );//调用ActiveX控件的方法
//调用ActiveX控件的方法启动播放视频窗口
var flagePlayWndInit = Nvrctrl.PlayWndInit(1);
//调用ActiveX控件的方法调出视频播放窗口
var flagePlayWndChange = Nvrctrl.PlayWndChange(1);
//调用ActiveX控件的方法开始播放视频监控的图像
var flageStartMonitor = Nvrctrl.StartMonitor(1,0,0);
}
catch (e) {
alert(e.message);
}
}
</script>
<body onLoad="init()">
<object id="Nvrctrl" width="400" height="400" classid="CLSID:B71147F5-7242-4623-9DA3-2ADB428D2B72"></object>
</table>
</body>
</html>
ActiveX控件的接口说明
概述
本文档规定二次开发控件方法和事件,主要功能为提供控制接口和播放窗口
控件方法
1.1 ConnectServer
函数原型:
short ConnectServer(LPCTSTR strServerIP, short wServerPort, LPCTSTR strUserName, LPCTSTR strPassWord, short wRcvStartPort, LPCTSTR strProxyIP, short wProxyPort, LPCTSTR strProxyUserName, LPCTSTR strProxyPassWord )
功能 :
连接服务器
参数 :
strServerIP 要与其建立连接的服务器的IP地址
wServerPort 服务器端口,缺省为1730
strUserName 连接服务器的用户名
strPassWord 连接服务器的密码
wRcvStartPort 本地接收起始端口号,缺省6000
strProxyIP 代理服务器的IP地址,无代理服务器填0
wProxyPort 代理服务器的端口号,无代理服务器填0
strProxyUserName 代理服务器的用户名
strProxyPassWord 代理服务器的密码
返回值:
成功返回0,返回值非零为错误码,对应错误事件通知中的错误描述
1.2 PlayWndInit
函数原型:
short PlayWndInit(short wWndNum)
功能 :
初始化,创建解码器及播放窗口(最多16个),一般为byWndNum=1
参数 :
wWndNum 播放窗口数目
返回值:
成功返回0,返回值非零为错误码,对应错误事件通知中的错误描述
1.3 PlayWndChange
函数原型 :
void PlayWndChange (short wWndNum)
功能 :
窗口切换
参数 :
wWndNum, 窗口数, 一般为wWndNum =1
返回值: :
成功返回0,返回值非零为错误码,对应错误事件通知中的错误描述
说明 :
在调用InitializeWnd后调用此函数,窗口数最多为16个
1.4 DisConnectServer
函数原型 :
void DisConnectServer()
功能 :
退出
参数 :
无
返回值: :
无
说明:
初始化时调用顺序为InitApp, PlayWndInit, PlayWndChange,其中: PlayWndInit, PlayWndChange只能被调用一次,在调用DisConnect后可以再次调用ConnectServer
1.5 StartMonitor
函数原型 :
short StartMonitor (short wVidChnId, short wVidChnStreamId, short wLocalWndId)
功能:
开始监控 (将编码码流切换至客户端指定窗口解码播放)
参数:
wVidChnId 视频通道Id
wVidChnStreamId 视频通道的码流ID,0-主流, 1-辅流,缺省为0
wLocalWndId 本地播放窗口号
返回值:
成功返回0,返回值非零为错误码,对应错误事件通知中的错误描述
1.6 StopMonitor
函数原型 :
short StopMonitor(short wLocalWndId)
功能:
停止播放
参数:
wLocalWndId本地播放窗口号
返回值:
成功返回0,返回值非零为错误码,对应错误事件通知中的错误描述
1.7 GetRecMonthMap
函数原型 :
long GetRecMonthMap(short wVidChnId, short wYear, short wMonth);
功能:
得到录像月历表(可以知道哪天有录像)
参数:
wVidChnId视频通道Id
wYear 年
wMonth 月
返回值:
成功返回非0月历,失败返回0
说明:
若成功返回,返回值的0-31位表示当月的0-31日是否有录像,0表示没有,1表示有
1.8 QueryDayRecList
函数原型 :
short QueryDayRecList(short wVidChnId, short wYear, short wMonth, short wDay)
功能:
查询日录像列表
参数:
wVidChnId视频通道Id
wYear 年
wMonth 月
wDay 日
返回值:
成功返回0,返回值非零为错误码,对应错误事件通知中的错误描述
说明:
按日查询当日的录像列表,与上一函数配合使用,先得到月历,再查询有录像的某天的录像列表,成功会产生RecListNotify事件
1.9 StartRecPlay
函数原型 :
short StartRecPlay(short wVidChnId, short wRecListId, short wLocalWndId)
功能:
开始录像播放
参数:
wVidChnId视频通道Id
wRecListId 录像列表Id
wLocalWndId本地播放窗口号
返回值:
成功返回0,返回值非零为错误码,对应错误事件通知中的错误描述
说明:
开始播放wRecListId标识的这段录像,从其开始时间按正常速度播放
1.10 StopRecPlay
short StopRecPlay(short wLocalWndId)
功能:
停止播放录像
参数:
wLocalWndId 本地播放窗口号
返回值:
成功返回0,返回值非零为错误码,对应错误事件通知中的错误描述
1.11 RecPlayControl
short RecPlayControl(short wLocalWndId, short wCommand, long dwParam)
功能:
录像播放控制
参数:
wLocalWndId本地播放窗口号
wCommand 控制命令
dwParam 控制参数
返回值:
成功返回0,返回值非零为错误码,对应错误事件通知中的错误描述
说明:
有如下控制命令:
#define RECPLAYCTRL_PAUSE 1 //暂停
#define RECPLAYCTRL_RESUME 2 //继续
#define RECPLAYCTRL_SETRATE 3 //快(慢)放,见放像速度参数
#define RECPLAYCTRL_SEEK 4 //拖拉,重新从一个绝对时间播放
#define RECPLAYCTRL_ONEFRAME 5 //单帧
#define RECPLAYCTRL_KEYFRAME 6 //关键帧放像
有如下放像速度参数:
#define RECPLAYSPEED_SLOW16 10//1/16速播放
#define RECPLAYSPEED_SLOW8 20//1/8速播放
#define RECPLAYSPEED_SLOW4 30//1/4速播放
#define RECPLAYSPEED_SLOW2 40//1/2速播放
#define RECPLAYSPEED_NORMAL 50//正常速播放
#define RECPLAYSPEED_FAST2 60//2倍速播放
#define RECPLAYSPEED_FAST4 70//4倍速播放
#define RECPLAYSPEED_FAST8 80//8倍速播放
#define RECPLAYSPEED_FAST16 90//16倍速播放
1.12 PtzControl
函数原型 :
short PtzControl(short wVidChnId, short wCmdId, short wParam1, short wParam2)
功能:
摄像头的PTZ控制
参数:
wVidChnId视频通道Id
wCmdId 摄像头控制命令
wParam1 控制参数1
wParam2 控制参数2
返回值:
成功返回0,返回值非零为错误码,对应错误事件通知中的错误描述
说明:
摄像头控制命令定义:
const u8 CAMCTRL_COMMAND_MOVEUP = 1 ; //向上移动
const u8 CAMCTRL_COMMAND_MOVEDOWN = 2; //向下移动
const u8 CAMCTRL_COMMAND_MOVELEFT = 3; //向左移动
const u8 CAMCTRL_COMMAND_MOVERIGHT = 4; //向右移动
const u8 CAMCTRL_COMMAND_MOVEHOME = 5; //回归
const u8 CAMCTRL_COMMAND_MOVESTOP = 6; //停止移动
const u8 CAMCTRL_COMMAND_ZOOMTELE = 7; //拉近摄像头
const u8 CAMCTRL_COMMAND_ZOOMWIDE = 8; //拉远摄像头
const u8 CAMCTRL_COMMAND_ZOOMSTOP = 9; //视野调节停止
const u8 CAMCTRL_COMMAND_FOCUSFAR = 10 ; //将焦距调远
const u8 CAMCTRL_COMMAND_FOCUSNEAR = 11 ; //将焦距调近
const u8 CAMCTRL_COMMAND_FOCUSAUTO = 12 ; //自动调焦
const u8 CAMCTRL_COMMAND_FOCUSSTOP = 13 ; //调焦停止
const u8 CAMCTRL_COMMAND_PRESETSET = 14 ; //摄象头预存
const u8 CAMCTRL_COMMAND_PRESETCALL = 15; //调摄象头预存
const u8 CAMCTRL_COMMAND_CAMERASET = 16 ; //初始化摄像头
const u8 CAMCTRL_COMMAND_BRIGHTUP = 17 ; //画面调亮
const u8 CAMCTRL_COMMAND_BRIGHTDOWN = 18 ; //画面调暗
const u8 CAMCTRL_COMMAND_BRIGHTSTOP = 19 ; //停止调亮
控制参数的定义:
命令:CAM_COMMAND_MOVEUP,CAM_COMMAND_MOVEDOWN,
CAM_COMMAND_MOVELEFT,CAM_COMMAND_MOVERIGHT,
CAM_COMMAND_MOVEHOME,CAM_COMMAND_MOVESTOP
参数:(m_byParam1,m_byParam2都有意义)
m_byParam1/水平运行速度,范围:0-15
m_byParam2/垂直运行速度,范围:0-15
命令:CAM_COMMAND_ZOOMTELE,CAM_COMMAND_ZOOMWIDE
数:(m_byParam1有意义)
m_byParam1/视野变化速度,范围:0-15
命令:CAM_COMMAND_ZOOMSTOP,CAM_COMMAND_FOCUSFAR,
CAM_COMMAND_FOCUSNEAR,CAM_COMMAND_FOCUSAUTO,
CAM_COMMAND_FOCUSSTOP, CAM_COMMAND_CAMERASET
参数:(m_byParam1,m_byParam2都无意义)
命令:CAM_COMMAND_PRESETSET,CAM_COMMAND_PRESETCALL
参数:(m_byParam1有意义)
m_byParam1/预置位范围号,范围:1-16
1.13 GetErrorDescription
BSTR GetErrorDescription(short wErrorNo);
功能:
得到错误描述
参数:
wErrorNo 错误号
返回值:
返回对应错误事件通知中的错误描述
控件事件
1.14 OperateResult
参数:
long dwOperateResult为1时表示与Server(服务器)断链通知
1.15 ErrorMessage
控制错误信息通知
参数:
LPCTSTR strErrMsg 错误信息描述
1.16 NormalMessage
控制信息通知
参数:
short wMsgId 信息标识,
LPCTSTR strNomalMsg信息描述
1.17 NvtListNotify
发送端列表通知
LPCTSTR strNvtList XML字符串
<NVTs><NVT><Id></Id><State></State><IPV4></IPV4><Alias></Alias></NVT >…………</NVTs>
1.18 RecListNotify
录像列表通知
参数:
short wVidChnId 视频通道Id
short wYear 年
short wMonth 月
short wDay 日
LPCTSTR strRecList XML字符串,表示录像列表通知
<RecLists>
<RecInfo>
<NvtId></NvtId><RecNum></RecNum></RecInfo><RecList><RecListId></RecListId><StartTime></StartTime><EndTime></EndTime></RecList>......</RecLists>