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 日
最近搜索
无
热门搜索
无