44合成作战专用设备招标变更

内容
 
发送至邮箱

44合成作战专用设备招标变更




合成作战专用设备采购项目附件更改通知

一、项目名称:合成作战专用设备采购

二、项目编号:GXDYZC-2017-(N)44

三、招标方式:竞争性谈判

四、更改内容:

原竞争性谈判 (略) 会监控资源整合平台技术要求更改为以下内容:

附件: (略) (略) 会监控资源整合平台(品牌:科达KDM2801)技术要求

1、设备应实现设备接入、数据存储、码流转发、实时浏览、语音对讲、告警联动、集中控制等功能;

2、设备应采用专有硬件设计,非windows系统,保证系统的稳定;

3、设备应支持双电源设计;

4、设备应不少 (略) 口;

5、设备应支持不少于8个USB插槽,应支持内嵌式USB插槽;

6、设备应支持USB备份盘,可定 (略) 数据备份,平台可借助备份盘快速恢复系统数据;

7、单台设备应支持至少5000个监控点的接入,支持多级级联;

8、单台设备应支持单纯录像130×4Mbps或单纯转发160×4Mbps以上的能力,支持多设备堆叠;

9、设备应支持NAT、防火墙穿越,可 (略) 络 (略) 署,浏览客户端支持穿越NAT;

10、设 (略) 段接入,可实现多个 (略) 络接入同一平台, (略) 络互通、各网段间资源共享;

11、设备应支持智能丢包恢复技术, (略) 络环境下能够提供优异的图像效果;

12、设备应支持经过授权后可浏 (略) 属监控点的视频;

13、设备应支持QXGA、1080P、UXGA、960P、720P、XGA、SVGA、D1、4CIF、2CIF、CIF、QVGA、QCIF、QQCIF等主流视频分辨率;

14、设备应支持H.264、MPEG4等编码格式;

15、设备应支持64画面同时浏览功能;

16、设备应支持电子地图功能;

17、设备应支持平台录像、前端录像、客户端本地录像等多种录像策略;

18、设备应具有丰富的报警联动机制,如告警预录、客户端告警联动、平台告警联动、前端告警联动等;

19、设备应支持电视墙控制;

20、设备支持前端故障、平台故障、告警及用户日志查询;

21、设备应提供丰富的第三方接口,并提供完善的SDK二次开发包,能够实现和其他业务系统的开发对接;

22、设备应支持支持录像倒放,录像单帧播放、多倍速放像等功能;

23、设备应支持录像点播定位到秒功能;

24、设备应支持NTP时间服务器同步功能;

25、设备应支持故障自恢复机制,当系统出现数据损坏时,系统可自动恢复备份数据,提高了系统的可靠性;

26、设备应支持下载录像为MP4格式;

27、设备应支持录像批量下载功能;

28、设备应支持N+1备份功能,在其中一台平台发生故障时,备机能够在不需要人工干预的情况下自动顶 (略) ,平台关键业务不受影响;),实现统一管理。

二、接口要求说明

接口说明(Windows)

开发包内容

头文件:.h文件, (略) 有使用接口和数据结构。

库文件:.lib文件,静态库链接使用。

动态库:.dll文件, (略) 时使用。

Demo:   包括c++语言写的demo和c#语言写的demo

使用SDK第一步

开发者需要创建一个CMcuSdkProxy对象,该对象提供了SDK的开发接口。

以下如没有特殊说明,均指CMcuSdkProxy的函数方法。

 

初始化/登录

设置平台类型(可选)

BOOL32 Kdm_ModualSelect (void *pMcuHandle,EBussinessMod emBuss, EStreamMod emStream, EDecoderMod emDec);

设置平台的类型:

       EBussinessMod:监控平台的版本号

       EStreamMod:获取码流的方式

       EDecoderMod:解码器的启动模式

也可不调用该平台, (略) 自动识别,但是登录速度会较慢。

初始化SDK

BOOL32 Kdm_Init (void *pMcuHandle)

获取版本号

BOOL32 Kdm_GetSdkVersion (void *pMcuHandle, char* pchVersion, char *pchUpdateurl);

通过传出参数szVersion返回SDK编译的日期和时间。

释放SDK

BOOL32 Kdm_Cleanup (void *pMcuHandle);

登录平台

BOOL32 Kdm_Login (void *pMcuHandle, const char *strUser, const char *strPassword, const char *strnsAddr, const char *strClientType, u32 *pErrorCode);

登录平台,填入用户名/密码/平台IP地址。

如果失败,函数返回FALSE,并且通过pErrorCode返回失败原因。

其中,平台登录地址如果需要填写端口,以IP:Port格式填写,比如192.168.0.1:1722

登出平台

BOOL32 Kdm_Logout (void *pMcuHandle, u32 *pErrorCode);

如果失败,函数返回FALSE,并且通过pErrorCode返回失败原因。

设置异常通知回调

u32 Kdm_SetDevStatusCallback (void *pMcuHandle, DevStatus_Callback cbFunc, u32 deUserData);

设置SDK事件回调接口:sdk通过此 (略) 分错误信息或者操作结果回调给应用层。

包括: 码流异常信息、抓拍结果、断链消息等等。

其中回调函数EventCBFunc的输出参数EVENTINFO *pEventInfo各个字段含义解析如下:

m_dwWorkID:表示相应的窗口号。

m_dwErrorCode:表示相应的错误码,其中0表示成功,非0表示失败。

m_emWork:表示事件类型。

目前m_emWork如果值为5,则表示相应的码流请求播放信息回调。

m_emWork 如果值为6,则表示第一个关键桢到达的信息回调。

m_emWork如果值为11,则表示抓拍是否成功的信息回调。

m_dwReserve1和m_dwReserve2目前为保留字段,没有实际意义。
但当m_emWork 的值为6时,m_dwReserve1和m_dwReserve2分别表示关键桢的宽和高

获取设备列表

应当先获取设备分组,再通过设备分组,逐一获取每个分组下的设备。

顶级分组的分组编号,固定为空

获取设备分组

u32 Kdm_GetGroupByGroup(void *pMcuHandle, GroupID gourpid, u32 *pErrorCode);

输入需要查询的GroupID,函数返回一个TaskID,可以使用GetGroupNext获取 (略) 有分组。

如果失败,返回0,并且pErrorCode返回错误码。

BOOL32 Kdm_GetGroupNext(void *pMcuHandle, u32 dwTaskID, GROUPINFO* groupInfo, u32 *pErrorCode);

输入GetGroupByGroup 返回的TaskID,每次获取一个groupInfo

(略) 查询结果后,函数返回FALSE,并且pErrorCode为RTN_OK

获取设备

u32 Kdm_GetDeviceByGroup(void *pMcuHandle, GroupID gourpid, u32 *pErrorCode);

输入需要查询的GroupID,函数返回一个TaskID,可以使用GetDeviceNext获取 (略) 有设备。

如果失败,返回0,并且pErrorCode返回错误码。

BOOL32 Kdm_GetDeviceNext(void *pMcuHandle, u32 dwTaskID, DEVICEINFO* deviceInfo, u32 *pErrorCode);

输入GetDeviceByGroup返回的TaskID,每次获取一个deviceInfo

(略) 查询结果后,函数返回FALSE,并且pErrorCode为RTN_OK

 

获取设备状态

获取设备是否在线的状态,是通过订 (略) 。

如果需要知道该设备是否在线,需要调用SD (略) 订阅,订阅成功后,马上会收到一次状态信息的函数回调,后续如果该设备的状态发生改变(上线/下线/告警),回调函数 (略) 。

注意: (略) 在 (略) 线程,应用开发需保证该回调函数不被阻塞。

设置设备状态回调

BOOL32 Kdm_SetDevStatusCallback(void *pMcuHandle, DevStatus_Callback cbFunc, u32 deUserData);

设置回调函数,UserData会在回调函数中传回。

回调定义如下:typedef int ( *DevStatus_Callback)(DeviceID devID, DeviceStatus *pDevStatus, u32 lUserData);

回调设备编号和在线/告警状态。

注意如果设备同时出现了在线状态和告警状态的改变,回调 (略) 2次,分别上报信息。刚订阅后,设备的在线状态一定会回调一次,如果设备有告警,还会多回调一次。

订阅设备状态

BOOL32 Kdm_SubscriptDeviceStatus(void *pMcuHandle, TSUBSDEVS vctDeviceID, ESubscriptInfo emSbs, u32 *pErrorCode);

输入订阅的设备编号和订阅类型。

vctDeviceID为要订阅的设备,数组形式,最多一次可订阅20个

取消订阅设备状态

BOOL32 Kdm_UnSubscriptDeviceStatus(void *pMcuHandle, TSUBSDEVS vctDeviceID, ESubscriptInfo emSbs, u32 *pErrorCode);

输入取消订阅的设备编号和订阅类型。取消订阅只能一个一个依次取消。

获取视频源状态

BOOL32 Kdm_GetDevSrcStatus(void *pMcuHandle, DEVCHN tDevSrc, DEVSRC_ST* srcStatus, u32 *pErrorCode);

输入设备ID和视频源号,获取视频源状态。输出状态如下:

DEVSRC_ST结构体的内容
 说明
 
bEnable
 视频源是否启用
 
bOnline
 视频源是否在线
 

 

实时浏览

开始浏览

u32 Kdm_StartRealPlay(void *pMcuHandle, DEVCHN tDevChn, SPARAM tStreamParam, CB_SDKMEDIA tCbSdkMedia, u32 *pErrorCode);

输入参数说明如下:

tDevChn:浏览设备,带通道号,是查询得到的deviceinfo中的信息,具体对应关系如下:

DEVCHN结构体的内容
 对应DEVICE结构体的内容
 说明
 
domainID
 domainID
  (略) 在域编号
 
deviceID
 deviceID
 设备编号
 
nChn
 aDevSrcChn的序号
 通道号
 
nSrc
 aDevSrcChn的序号
 视频源号
 

tStreamParam,播放流属性:

SPARAM结构体的内容
 含义说明
 
m_szServerIp
 保留字段
 
m_wServerPort
 保留字段
 
m_wScreenWidth
 显示设备的屏幕宽度,用于服务器选择发送合适分辨率的码流
 
m_wScreenHeight
 显示设备的屏幕高度
 
m_pDrawWnd
 显示窗口对象,详见“窗口对象说明”章节
 
m_szManufactor
 非标准码流的格式,以厂商名称代替,为DEVICE结构体中的szManufacturer字段
 
m_wHighDefinition
 选择清晰度,详见“选择不同的清晰度”章节
 

 

tCbSdkMedia,回调函数,如果不需要回调,请使用默认初始值(回调函数全为NULL)

SPARAM结构体的内容
 含义说明
 
m_pSDKFrameCB
 暂未开放
 
m_pSDKYUVCB
 暂未开放
 
m_pSDKUrlCB
 暂未开放
 
m_dwSDKUserData
 用户数据,回调时使用
 

 

如果播放成功,函数返回值:播放ID。

如果请求码流播放过程中存在同步操作的失败(比如向G900请求URL失败,解码器初始化失败),

则函返回值就是相应的错误码。应用层开发者可以根据错误码做相应的提示。

如果请求码流播放过程中存在异步操作的失败(比如登 * MVS失败,MVS向G900请求码流失败),

虽然此时函数的返回值仍然是正常的的播放ID,但仍然无视频画面显示,此是应用层的界面开发者

需要根据前面单节3.3.7设置的异常回调函数

u32 Kdm_SetSDKEventCallback(void *pMcuHandle, McuSdkEvent_Callback EventCBFunc, u32 dwUserData);

的EventCBFunc回 (略) 错误的捕获。详见3.3.7设置异常回调函数的传出参数的详细说明。

窗口对象说明

请先阅读“开始浏览”章节。

SPARAM结构体中的m_pDrawWnd字段,为 (略) 创建窗口的HWND句柄。

选择不同的清晰度

请先阅读“开始浏览”章节。

对于同一个监控点,平台可以提供的多种格式的视频流,如高清/标清。

在浏览请求中,m_wHighDefinition传入参数设置为1时, (略) 会自动匹配选择清 (略) 播放;如果传入参数设置为0时, (略) 会自动匹配选择流 (略) 播放。

停止浏览

BOOL32 Kdm_StopRealPlay(void *pMcuHandle, u32 dwPlayID, u32 *pErrorCode);

如果返回值是TRUE,则表示停止播放成功。

如果返回值是FALSE,则表示停止播放失败,且输出参数pErrorCode会被填充相应的错误码。

请求关键帧

BOOL32 Kdm_SendKeyFrame(void *pMcuHandle, DEVCHN tDevChn, u32 *pErrorCode);

PTZ控制

普通PTZ

BOOL32 Kdm_SendPtzControl(void *pMcuHandle, DEVCHN tDevChn, PTZCMD tPtzCmd, u32 *pErrorCode);

给摄像机发送PTZ命令。

PTZCMD结构体说明
 说明
 
m_emPtzCmd
 控制命令(详见下面控制枚举类型定义)
 
m_wPtzRange
 步长1~15

1最慢,15最快
 
m_byLevel
 控制权限级别,如果高于用户本身的权限,系统自动降为用户最高权限
 
m_dwHoldTimer
 控制权占有时间,1~30秒

在占有时间内,同级别用户无法控制该设备PTZ
 

enum ePtzCmd

{

   emMoveLeft = 0,//左

   emMoveRight = 1,//右

   emMoveUp = 2,//上

    emMoveDown = 3,//下

       emMoveLeftUp = 4,//左上

       emMoveLeftDown = 5,//左下

       emMoveRightUp = 6,//右上

       emMoveRightDown = 7,//右下

    emMoveStop = 8,//停止

    emZoomIn = 9,//放大

    emZoomOut = 10,//缩小

    emZoomStop = 11,//停止缩放

    emHome = 12,

};

点击居中

BOOL32 Kdm_SendPointMoveControl(void *pMcuHandle, DEVCHN tDevChn, POINTMOVE tPointCmd, u32 *pErrorCode );

控制“指哪看哪”,笛卡尔坐标系。

POINTMOVE结构体说明
 说明
 
m_wPosX
 点击X轴位置
 
m_wPosY
 点击Y轴位置
 
m_wScreenWidth
 显示窗口的X轴总宽度
 
m_wScreenHeight
 显示窗口的Y轴总高度
 

 

录像和抓拍

在实时浏览的时候,进行本地录像。

开始本地录像

BOOL32 Kdm_StartLocalRecord(void *pMcuHandle, u32 dwPlayID, const char *strFileName, ELocalRecType emFileType);

strFileName,指定录像文件名,为全路径,必须是程序可读写的目录。

因为目前SDK只支持em3gp格式的文件保存,所以传入参数emFileType只能取1。

停止本地录像

BOOL32 Kdm_StopLocalRecord(void *pMcuHandle, u32 dwPlayID);

开始平台录像

BOOL32 Kdm_StartPlatRec(void *pMcuHandle, DEVCHN tDevChn, u32* pErrorCode);

停止平台录像

BOOL32 Kdm_StopPlatRec(void *pMcuHandle, DEVCHN tDevChn, u32* pErrorCode);

抓拍

BOOL32 Kdm_SaveSnapshot(void *pMcuHandle, u32 dwPlayID, const char *strPicName, EPictureType emPicType);

strPicName,指定抓拍图片文件名,为全路径,必须是程序可读写的目录。

比如使用NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)获取到的本地路径加 点击查看>> 文件名。

因为目前SDK只支持emJpeg格式的图片保存,所以传入参数emPicType只能取1。

抓拍函数也是个异步接口函数。

如果返回值是FALSE,则表示抓拍失败。

如果返回值是TRUE,也并不表示抓拍一定成功。

抓拍的结果应用层的界面开发者需要根据前面单节3.3.7设置的异常回调函数

u32 Kdm_SetSDKEventCallback(void *pMcuHandle, McuSdkEvent_Callback EventCBFunc, u32 dwUserData)的EventCBFunc (略) 判断。详见3.3.7设置异常回调函数的传出参数的详细说明。

 

录像播放

创建任务

u32 Kdm_CreateRecordTask(void *pMcuHandle, DEVCHN tDevChn, u32 *pErrorCode);

首先创建一个放像任务,传入需要查询的设备及视频源号(tDevChn),返回值是TaskID。

预加载录像

BOOL32 Kdm_PreLoadRecord(void *pMcuHandle, u32 dwTaskID, TPeriod tPreLoadTime, eRecordType ERecType,u32 *pErrorCode);

预加载需要播放的录像,此时会从平台获取录像信息。

传入Kdm_CreateRecordTask中得到的dwTaskID,tPreLoadTime预加载时间段,最大允许的时间段为3天,eRecType设置查询的是前端录像还是平台录像。

enum eRecordType

{  

       emInvailedRecord = 0,            //非法类型

       emPlatFormRecord = 1,          //平台录像

       emIpcRecord = 2,                    //前端录像

};

加载完成后,sdk通过事件回调接口(Kdm_SetSDKEventCallback中设置),将预加载结果通知给上层。

一个任务(TaskID),对应一次预加载,重复调用预加载函数,则最后一次生效。

获取录像信息

BOOL32 Kdm_GetRecordNext(void *pMcuHandle, u32 dwTaskID, u32 dwSeekTime, TRecordInfo *pRecordInfo, u32 *pErrorCode);

预加载成功后,通过此函数获取录像信息。传入参数如下:

dwTaskID:任务号

dwSeekTime:此时间点上存在录像则返回此录像信息,此时间点上不存在录像则返回该点后最近的一条录像信息,时间单位同CTime。

传出录像信息 pRecordInfo 的结构如下:

TRecordInfo结构体说明
 说明
 
m_tRecPeriod
 录像时间段
 
m_dwRecID
 录像ID
 
m_recordDomainName
 录像域名称
 
m_tDevChn
  (略) 在设备通道信息
 
m_eRecType
 录像类型
 

此函数调用方式类似获取设备函数,通过循环调用 (略) 有预加载的录像信息,调用过程中,只需修改dwSeekTime为上一个返回录像的结束时间+1,直至函数返回FASLE (略) 有预加载录像。

开始放像

u32 Kdm_StartRecordplay(void *pMcuHandle, u32 dwTaskID, u32 dwPlayTime, SPARAM stSparam,CB_SDKMEDIA tCbSdkMedia,u32 *pErrorCode);

开始放像请求,输入参数同开始浏览。返回值为PlayID。

Vcr控制

BOOL32 Kdm_RecordPlayCtrl(void *pMcuHandle,TREPCTLINFO stRecPlyInfo,u32 *pErrorCode);

录像vcr控制(目前只支持暂停操作),输入参数stRecPlyInfo如下:

TREPCTLINFO结构体说明
 说明
 
m_byCtrlType
 操作类型
 
m_dwRange
 变化幅度
 
m_dwPlayId
 PlayID
 

停止放像

BOOL32 Kdm_StopRecordplay(void *pMcuHandle, u32 dwPlayID, u32 *pErrorCode);

销毁任务

BOOL32 Kdm_DestroyRecordTask(void *pMcuHandle, u32 dwTaskID);

 

音频

启用音频

BOOL32 Kdm_SetAudioEnable(void *pMcuHandle, u32 dwPlayID);

停止音频

BOOL32 Kdm_SetAudioDisable(void *pMcuHandle, u32 dwPlayID);

 

摄像机配置

设置OSD菜单

BOOL32 Kdm_SetVideoOSD(void *pMcuHandle, DEVCHN tDevChn, TVidOSD tInfo, u32* pErrorCode);

设置监控画面的OSD菜单。

OSDCMD结构体说明
 说明
 
m_emPosition
 左上/右上/左下/右下

Line1~5是从上到下
 
m_strLine1
  (略) 文字
 
m_strLine2
  (略) 文字
 
m_strLine3
  (略) 文字
 
m_strLine4
  (略) 文字
 
m_strLine5
  (略) 文字
 

获取前端编码参数

BOOL32 Kdm_GetPuEncoderParam(void *pMcuHandle, DEVCHN tDevChn, TEncoderParamTotal *pEncoderParamTotal,u32* pErrorCode);

传入参数为设备ID和通道号(tDevChn)。

传出参数pEncoderParamTotal如下:

TEncoderParamTotal结构体说明
 说明
 
m_tEncoderParam
 当前通道编码参数
 
m_atSpResolution
 当前通道编码能力
 

TEncoderParam:

TEncoderParam结构体说明
 说明
 
m_byVideoFormat
 视频编码格式
 
m_dwVideoResolution
 视频分辨率
 
m_byFrameRate
 帧率
 
m_byQuality
 质量
 
m_dwBitRate
 比特率
 
m_wInterval
 关键帧间隔
 
m_byBrightness
 亮度
 
m_byContrast
 对比度
 
m_bySaturation
 饱和度
 
m_wSharpness
 锐度
 

TSupportResolution:

TSupportResolution结构体说明
 说明
 
m_byVideoFormat
 视频编码格式
 
m_dwSupportResolution
 支持分辨率
 

设置前端编码参数

BOOL32 Kdm_SetPuEncoderParam(void *pMcuHandle, DEVCHN tDevChn, TEncoderParam *pEncoderParam,u32* pErrorCode);

设置前端编码参数,注意,设置参数的范围不要超出获取到的范围。

其它业务

发送透明数据

BOOL32 Kdm_SendTransData(void *pMcuHandle, DEVCHN tDevChn, TTransChnData *pTransData, u32 *pErrorCode);

传入参数为设备ID和通道号(tDevChn),透明数据pTransData如下:

TTransChnData结构体说明
 说明
 
m_byTransBuffer
 透明数据内容
 
m_wTransBufferLen
 透明数据长度
 
m_byAppType
 数据类型
 

 

 

此部分内容不影响本项目响应性文件的编制,只作为附件发放给竞标人,其他内容不变。

 

 

采购单位: (略) (略) 山风景名 (略)

 

采购代理机构: (略) 德元工程 (略)

日  期:2017年  6  月  5  日


 




合成作战专用设备采购项目附件更改通知

一、项目名称:合成作战专用设备采购

二、项目编号:GXDYZC-2017-(N)44

三、招标方式:竞争性谈判

四、更改内容:

原竞争性谈判 (略) 会监控资源整合平台技术要求更改为以下内容:

附件: (略) (略) 会监控资源整合平台(品牌:科达KDM2801)技术要求

1、设备应实现设备接入、数据存储、码流转发、实时浏览、语音对讲、告警联动、集中控制等功能;

2、设备应采用专有硬件设计,非windows系统,保证系统的稳定;

3、设备应支持双电源设计;

4、设备应不少 (略) 口;

5、设备应支持不少于8个USB插槽,应支持内嵌式USB插槽;

6、设备应支持USB备份盘,可定 (略) 数据备份,平台可借助备份盘快速恢复系统数据;

7、单台设备应支持至少5000个监控点的接入,支持多级级联;

8、单台设备应支持单纯录像130×4Mbps或单纯转发160×4Mbps以上的能力,支持多设备堆叠;

9、设备应支持NAT、防火墙穿越,可 (略) 络 (略) 署,浏览客户端支持穿越NAT;

10、设 (略) 段接入,可实现多个 (略) 络接入同一平台, (略) 络互通、各网段间资源共享;

11、设备应支持智能丢包恢复技术, (略) 络环境下能够提供优异的图像效果;

12、设备应支持经过授权后可浏 (略) 属监控点的视频;

13、设备应支持QXGA、1080P、UXGA、960P、720P、XGA、SVGA、D1、4CIF、2CIF、CIF、QVGA、QCIF、QQCIF等主流视频分辨率;

14、设备应支持H.264、MPEG4等编码格式;

15、设备应支持64画面同时浏览功能;

16、设备应支持电子地图功能;

17、设备应支持平台录像、前端录像、客户端本地录像等多种录像策略;

18、设备应具有丰富的报警联动机制,如告警预录、客户端告警联动、平台告警联动、前端告警联动等;

19、设备应支持电视墙控制;

20、设备支持前端故障、平台故障、告警及用户日志查询;

21、设备应提供丰富的第三方接口,并提供完善的SDK二次开发包,能够实现和其他业务系统的开发对接;

22、设备应支持支持录像倒放,录像单帧播放、多倍速放像等功能;

23、设备应支持录像点播定位到秒功能;

24、设备应支持NTP时间服务器同步功能;

25、设备应支持故障自恢复机制,当系统出现数据损坏时,系统可自动恢复备份数据,提高了系统的可靠性;

26、设备应支持下载录像为MP4格式;

27、设备应支持录像批量下载功能;

28、设备应支持N+1备份功能,在其中一台平台发生故障时,备机能够在不需要人工干预的情况下自动顶 (略) ,平台关键业务不受影响;),实现统一管理。

二、接口要求说明

接口说明(Windows)

开发包内容

头文件:.h文件, (略) 有使用接口和数据结构。

库文件:.lib文件,静态库链接使用。

动态库:.dll文件, (略) 时使用。

Demo:   包括c++语言写的demo和c#语言写的demo

使用SDK第一步

开发者需要创建一个CMcuSdkProxy对象,该对象提供了SDK的开发接口。

以下如没有特殊说明,均指CMcuSdkProxy的函数方法。

 

初始化/登录

设置平台类型(可选)

BOOL32 Kdm_ModualSelect (void *pMcuHandle,EBussinessMod emBuss, EStreamMod emStream, EDecoderMod emDec);

设置平台的类型:

       EBussinessMod:监控平台的版本号

       EStreamMod:获取码流的方式

       EDecoderMod:解码器的启动模式

也可不调用该平台, (略) 自动识别,但是登录速度会较慢。

初始化SDK

BOOL32 Kdm_Init (void *pMcuHandle)

获取版本号

BOOL32 Kdm_GetSdkVersion (void *pMcuHandle, char* pchVersion, char *pchUpdateurl);

通过传出参数szVersion返回SDK编译的日期和时间。

释放SDK

BOOL32 Kdm_Cleanup (void *pMcuHandle);

登录平台

BOOL32 Kdm_Login (void *pMcuHandle, const char *strUser, const char *strPassword, const char *strnsAddr, const char *strClientType, u32 *pErrorCode);

登录平台,填入用户名/密码/平台IP地址。

如果失败,函数返回FALSE,并且通过pErrorCode返回失败原因。

其中,平台登录地址如果需要填写端口,以IP:Port格式填写,比如192.168.0.1:1722

登出平台

BOOL32 Kdm_Logout (void *pMcuHandle, u32 *pErrorCode);

如果失败,函数返回FALSE,并且通过pErrorCode返回失败原因。

设置异常通知回调

u32 Kdm_SetDevStatusCallback (void *pMcuHandle, DevStatus_Callback cbFunc, u32 deUserData);

设置SDK事件回调接口:sdk通过此 (略) 分错误信息或者操作结果回调给应用层。

包括: 码流异常信息、抓拍结果、断链消息等等。

其中回调函数EventCBFunc的输出参数EVENTINFO *pEventInfo各个字段含义解析如下:

m_dwWorkID:表示相应的窗口号。

m_dwErrorCode:表示相应的错误码,其中0表示成功,非0表示失败。

m_emWork:表示事件类型。

目前m_emWork如果值为5,则表示相应的码流请求播放信息回调。

m_emWork 如果值为6,则表示第一个关键桢到达的信息回调。

m_emWork如果值为11,则表示抓拍是否成功的信息回调。

m_dwReserve1和m_dwReserve2目前为保留字段,没有实际意义。
但当m_emWork 的值为6时,m_dwReserve1和m_dwReserve2分别表示关键桢的宽和高

获取设备列表

应当先获取设备分组,再通过设备分组,逐一获取每个分组下的设备。

顶级分组的分组编号,固定为空

获取设备分组

u32 Kdm_GetGroupByGroup(void *pMcuHandle, GroupID gourpid, u32 *pErrorCode);

输入需要查询的GroupID,函数返回一个TaskID,可以使用GetGroupNext获取 (略) 有分组。

如果失败,返回0,并且pErrorCode返回错误码。

BOOL32 Kdm_GetGroupNext(void *pMcuHandle, u32 dwTaskID, GROUPINFO* groupInfo, u32 *pErrorCode);

输入GetGroupByGroup 返回的TaskID,每次获取一个groupInfo

(略) 查询结果后,函数返回FALSE,并且pErrorCode为RTN_OK

获取设备

u32 Kdm_GetDeviceByGroup(void *pMcuHandle, GroupID gourpid, u32 *pErrorCode);

输入需要查询的GroupID,函数返回一个TaskID,可以使用GetDeviceNext获取 (略) 有设备。

如果失败,返回0,并且pErrorCode返回错误码。

BOOL32 Kdm_GetDeviceNext(void *pMcuHandle, u32 dwTaskID, DEVICEINFO* deviceInfo, u32 *pErrorCode);

输入GetDeviceByGroup返回的TaskID,每次获取一个deviceInfo

(略) 查询结果后,函数返回FALSE,并且pErrorCode为RTN_OK

 

获取设备状态

获取设备是否在线的状态,是通过订 (略) 。

如果需要知道该设备是否在线,需要调用SD (略) 订阅,订阅成功后,马上会收到一次状态信息的函数回调,后续如果该设备的状态发生改变(上线/下线/告警),回调函数 (略) 。

注意: (略) 在 (略) 线程,应用开发需保证该回调函数不被阻塞。

设置设备状态回调

BOOL32 Kdm_SetDevStatusCallback(void *pMcuHandle, DevStatus_Callback cbFunc, u32 deUserData);

设置回调函数,UserData会在回调函数中传回。

回调定义如下:typedef int ( *DevStatus_Callback)(DeviceID devID, DeviceStatus *pDevStatus, u32 lUserData);

回调设备编号和在线/告警状态。

注意如果设备同时出现了在线状态和告警状态的改变,回调 (略) 2次,分别上报信息。刚订阅后,设备的在线状态一定会回调一次,如果设备有告警,还会多回调一次。

订阅设备状态

BOOL32 Kdm_SubscriptDeviceStatus(void *pMcuHandle, TSUBSDEVS vctDeviceID, ESubscriptInfo emSbs, u32 *pErrorCode);

输入订阅的设备编号和订阅类型。

vctDeviceID为要订阅的设备,数组形式,最多一次可订阅20个

取消订阅设备状态

BOOL32 Kdm_UnSubscriptDeviceStatus(void *pMcuHandle, TSUBSDEVS vctDeviceID, ESubscriptInfo emSbs, u32 *pErrorCode);

输入取消订阅的设备编号和订阅类型。取消订阅只能一个一个依次取消。

获取视频源状态

BOOL32 Kdm_GetDevSrcStatus(void *pMcuHandle, DEVCHN tDevSrc, DEVSRC_ST* srcStatus, u32 *pErrorCode);

输入设备ID和视频源号,获取视频源状态。输出状态如下:

DEVSRC_ST结构体的内容
 说明
 
bEnable
 视频源是否启用
 
bOnline
 视频源是否在线
 

 

实时浏览

开始浏览

u32 Kdm_StartRealPlay(void *pMcuHandle, DEVCHN tDevChn, SPARAM tStreamParam, CB_SDKMEDIA tCbSdkMedia, u32 *pErrorCode);

输入参数说明如下:

tDevChn:浏览设备,带通道号,是查询得到的deviceinfo中的信息,具体对应关系如下:

DEVCHN结构体的内容
 对应DEVICE结构体的内容
 说明
 
domainID
 domainID
  (略) 在域编号
 
deviceID
 deviceID
 设备编号
 
nChn
 aDevSrcChn的序号
 通道号
 
nSrc
 aDevSrcChn的序号
 视频源号
 

tStreamParam,播放流属性:

SPARAM结构体的内容
 含义说明
 
m_szServerIp
 保留字段
 
m_wServerPort
 保留字段
 
m_wScreenWidth
 显示设备的屏幕宽度,用于服务器选择发送合适分辨率的码流
 
m_wScreenHeight
 显示设备的屏幕高度
 
m_pDrawWnd
 显示窗口对象,详见“窗口对象说明”章节
 
m_szManufactor
 非标准码流的格式,以厂商名称代替,为DEVICE结构体中的szManufacturer字段
 
m_wHighDefinition
 选择清晰度,详见“选择不同的清晰度”章节
 

 

tCbSdkMedia,回调函数,如果不需要回调,请使用默认初始值(回调函数全为NULL)

SPARAM结构体的内容
 含义说明
 
m_pSDKFrameCB
 暂未开放
 
m_pSDKYUVCB
 暂未开放
 
m_pSDKUrlCB
 暂未开放
 
m_dwSDKUserData
 用户数据,回调时使用
 

 

如果播放成功,函数返回值:播放ID。

如果请求码流播放过程中存在同步操作的失败(比如向G900请求URL失败,解码器初始化失败),

则函返回值就是相应的错误码。应用层开发者可以根据错误码做相应的提示。

如果请求码流播放过程中存在异步操作的失败(比如登 * MVS失败,MVS向G900请求码流失败),

虽然此时函数的返回值仍然是正常的的播放ID,但仍然无视频画面显示,此是应用层的界面开发者

需要根据前面单节3.3.7设置的异常回调函数

u32 Kdm_SetSDKEventCallback(void *pMcuHandle, McuSdkEvent_Callback EventCBFunc, u32 dwUserData);

的EventCBFunc回 (略) 错误的捕获。详见3.3.7设置异常回调函数的传出参数的详细说明。

窗口对象说明

请先阅读“开始浏览”章节。

SPARAM结构体中的m_pDrawWnd字段,为 (略) 创建窗口的HWND句柄。

选择不同的清晰度

请先阅读“开始浏览”章节。

对于同一个监控点,平台可以提供的多种格式的视频流,如高清/标清。

在浏览请求中,m_wHighDefinition传入参数设置为1时, (略) 会自动匹配选择清 (略) 播放;如果传入参数设置为0时, (略) 会自动匹配选择流 (略) 播放。

停止浏览

BOOL32 Kdm_StopRealPlay(void *pMcuHandle, u32 dwPlayID, u32 *pErrorCode);

如果返回值是TRUE,则表示停止播放成功。

如果返回值是FALSE,则表示停止播放失败,且输出参数pErrorCode会被填充相应的错误码。

请求关键帧

BOOL32 Kdm_SendKeyFrame(void *pMcuHandle, DEVCHN tDevChn, u32 *pErrorCode);

PTZ控制

普通PTZ

BOOL32 Kdm_SendPtzControl(void *pMcuHandle, DEVCHN tDevChn, PTZCMD tPtzCmd, u32 *pErrorCode);

给摄像机发送PTZ命令。

PTZCMD结构体说明
 说明
 
m_emPtzCmd
 控制命令(详见下面控制枚举类型定义)
 
m_wPtzRange
 步长1~15

1最慢,15最快
 
m_byLevel
 控制权限级别,如果高于用户本身的权限,系统自动降为用户最高权限
 
m_dwHoldTimer
 控制权占有时间,1~30秒

在占有时间内,同级别用户无法控制该设备PTZ
 

enum ePtzCmd

{

   emMoveLeft = 0,//左

   emMoveRight = 1,//右

   emMoveUp = 2,//上

    emMoveDown = 3,//下

       emMoveLeftUp = 4,//左上

       emMoveLeftDown = 5,//左下

       emMoveRightUp = 6,//右上

       emMoveRightDown = 7,//右下

    emMoveStop = 8,//停止

    emZoomIn = 9,//放大

    emZoomOut = 10,//缩小

    emZoomStop = 11,//停止缩放

    emHome = 12,

};

点击居中

BOOL32 Kdm_SendPointMoveControl(void *pMcuHandle, DEVCHN tDevChn, POINTMOVE tPointCmd, u32 *pErrorCode );

控制“指哪看哪”,笛卡尔坐标系。

POINTMOVE结构体说明
 说明
 
m_wPosX
 点击X轴位置
 
m_wPosY
 点击Y轴位置
 
m_wScreenWidth
 显示窗口的X轴总宽度
 
m_wScreenHeight
 显示窗口的Y轴总高度
 

 

录像和抓拍

在实时浏览的时候,进行本地录像。

开始本地录像

BOOL32 Kdm_StartLocalRecord(void *pMcuHandle, u32 dwPlayID, const char *strFileName, ELocalRecType emFileType);

strFileName,指定录像文件名,为全路径,必须是程序可读写的目录。

因为目前SDK只支持em3gp格式的文件保存,所以传入参数emFileType只能取1。

停止本地录像

BOOL32 Kdm_StopLocalRecord(void *pMcuHandle, u32 dwPlayID);

开始平台录像

BOOL32 Kdm_StartPlatRec(void *pMcuHandle, DEVCHN tDevChn, u32* pErrorCode);

停止平台录像

BOOL32 Kdm_StopPlatRec(void *pMcuHandle, DEVCHN tDevChn, u32* pErrorCode);

抓拍

BOOL32 Kdm_SaveSnapshot(void *pMcuHandle, u32 dwPlayID, const char *strPicName, EPictureType emPicType);

strPicName,指定抓拍图片文件名,为全路径,必须是程序可读写的目录。

比如使用NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)获取到的本地路径加 点击查看>> 文件名。

因为目前SDK只支持emJpeg格式的图片保存,所以传入参数emPicType只能取1。

抓拍函数也是个异步接口函数。

如果返回值是FALSE,则表示抓拍失败。

如果返回值是TRUE,也并不表示抓拍一定成功。

抓拍的结果应用层的界面开发者需要根据前面单节3.3.7设置的异常回调函数

u32 Kdm_SetSDKEventCallback(void *pMcuHandle, McuSdkEvent_Callback EventCBFunc, u32 dwUserData)的EventCBFunc (略) 判断。详见3.3.7设置异常回调函数的传出参数的详细说明。

 

录像播放

创建任务

u32 Kdm_CreateRecordTask(void *pMcuHandle, DEVCHN tDevChn, u32 *pErrorCode);

首先创建一个放像任务,传入需要查询的设备及视频源号(tDevChn),返回值是TaskID。

预加载录像

BOOL32 Kdm_PreLoadRecord(void *pMcuHandle, u32 dwTaskID, TPeriod tPreLoadTime, eRecordType ERecType,u32 *pErrorCode);

预加载需要播放的录像,此时会从平台获取录像信息。

传入Kdm_CreateRecordTask中得到的dwTaskID,tPreLoadTime预加载时间段,最大允许的时间段为3天,eRecType设置查询的是前端录像还是平台录像。

enum eRecordType

{  

       emInvailedRecord = 0,            //非法类型

       emPlatFormRecord = 1,          //平台录像

       emIpcRecord = 2,                    //前端录像

};

加载完成后,sdk通过事件回调接口(Kdm_SetSDKEventCallback中设置),将预加载结果通知给上层。

一个任务(TaskID),对应一次预加载,重复调用预加载函数,则最后一次生效。

获取录像信息

BOOL32 Kdm_GetRecordNext(void *pMcuHandle, u32 dwTaskID, u32 dwSeekTime, TRecordInfo *pRecordInfo, u32 *pErrorCode);

预加载成功后,通过此函数获取录像信息。传入参数如下:

dwTaskID:任务号

dwSeekTime:此时间点上存在录像则返回此录像信息,此时间点上不存在录像则返回该点后最近的一条录像信息,时间单位同CTime。

传出录像信息 pRecordInfo 的结构如下:

TRecordInfo结构体说明
 说明
 
m_tRecPeriod
 录像时间段
 
m_dwRecID
 录像ID
 
m_recordDomainName
 录像域名称
 
m_tDevChn
  (略) 在设备通道信息
 
m_eRecType
 录像类型
 

此函数调用方式类似获取设备函数,通过循环调用 (略) 有预加载的录像信息,调用过程中,只需修改dwSeekTime为上一个返回录像的结束时间+1,直至函数返回FASLE (略) 有预加载录像。

开始放像

u32 Kdm_StartRecordplay(void *pMcuHandle, u32 dwTaskID, u32 dwPlayTime, SPARAM stSparam,CB_SDKMEDIA tCbSdkMedia,u32 *pErrorCode);

开始放像请求,输入参数同开始浏览。返回值为PlayID。

Vcr控制

BOOL32 Kdm_RecordPlayCtrl(void *pMcuHandle,TREPCTLINFO stRecPlyInfo,u32 *pErrorCode);

录像vcr控制(目前只支持暂停操作),输入参数stRecPlyInfo如下:

TREPCTLINFO结构体说明
 说明
 
m_byCtrlType
 操作类型
 
m_dwRange
 变化幅度
 
m_dwPlayId
 PlayID
 

停止放像

BOOL32 Kdm_StopRecordplay(void *pMcuHandle, u32 dwPlayID, u32 *pErrorCode);

销毁任务

BOOL32 Kdm_DestroyRecordTask(void *pMcuHandle, u32 dwTaskID);

 

音频

启用音频

BOOL32 Kdm_SetAudioEnable(void *pMcuHandle, u32 dwPlayID);

停止音频

BOOL32 Kdm_SetAudioDisable(void *pMcuHandle, u32 dwPlayID);

 

摄像机配置

设置OSD菜单

BOOL32 Kdm_SetVideoOSD(void *pMcuHandle, DEVCHN tDevChn, TVidOSD tInfo, u32* pErrorCode);

设置监控画面的OSD菜单。

OSDCMD结构体说明
 说明
 
m_emPosition
 左上/右上/左下/右下

Line1~5是从上到下
 
m_strLine1
  (略) 文字
 
m_strLine2
  (略) 文字
 
m_strLine3
  (略) 文字
 
m_strLine4
  (略) 文字
 
m_strLine5
  (略) 文字
 

获取前端编码参数

BOOL32 Kdm_GetPuEncoderParam(void *pMcuHandle, DEVCHN tDevChn, TEncoderParamTotal *pEncoderParamTotal,u32* pErrorCode);

传入参数为设备ID和通道号(tDevChn)。

传出参数pEncoderParamTotal如下:

TEncoderParamTotal结构体说明
 说明
 
m_tEncoderParam
 当前通道编码参数
 
m_atSpResolution
 当前通道编码能力
 

TEncoderParam:

TEncoderParam结构体说明
 说明
 
m_byVideoFormat
 视频编码格式
 
m_dwVideoResolution
 视频分辨率
 
m_byFrameRate
 帧率
 
m_byQuality
 质量
 
m_dwBitRate
 比特率
 
m_wInterval
 关键帧间隔
 
m_byBrightness
 亮度
 
m_byContrast
 对比度
 
m_bySaturation
 饱和度
 
m_wSharpness
 锐度
 

TSupportResolution:

TSupportResolution结构体说明
 说明
 
m_byVideoFormat
 视频编码格式
 
m_dwSupportResolution
 支持分辨率
 

设置前端编码参数

BOOL32 Kdm_SetPuEncoderParam(void *pMcuHandle, DEVCHN tDevChn, TEncoderParam *pEncoderParam,u32* pErrorCode);

设置前端编码参数,注意,设置参数的范围不要超出获取到的范围。

其它业务

发送透明数据

BOOL32 Kdm_SendTransData(void *pMcuHandle, DEVCHN tDevChn, TTransChnData *pTransData, u32 *pErrorCode);

传入参数为设备ID和通道号(tDevChn),透明数据pTransData如下:

TTransChnData结构体说明
 说明
 
m_byTransBuffer
 透明数据内容
 
m_wTransBufferLen
 透明数据长度
 
m_byAppType
 数据类型
 

 

 

此部分内容不影响本项目响应性文件的编制,只作为附件发放给竞标人,其他内容不变。

 

 

采购单位: (略) (略) 山风景名 (略)

 

采购代理机构: (略) 德元工程 (略)

日  期:2017年  6  月  5  日


 

    
查看详情》
相关推荐
 

招投标大数据

查看详情

收藏

首页

最近搜索

热门搜索