1、海康视频监控平台单路回放组件使用说明书IPlayBackCtrl单路回放组件使用说明书编制审批1. 基本信息组件名称:SinglePlaybackControl组件类型:开发库技术类别:Windows应用应用级别:部门级1.1 组件描述功能描述: 单路回放窗口,内部包含录像查询、取流播放、片段切换、播放控制等逻辑。性能指标:部分接口是内部异步线程调用,调用后不会立即生效。主要依赖库:名称版本描述RecordStream/录像片段取流库StreamLayer/取流SDK封装库vag_playctrl/播放SDK封装库threadsdk/异步任务队列库1.2 运行环境1.2.1 硬件环境CPU:I
2、ntel /AMD双核,2.4GHz以上内存:4GB DDR3网卡:Intel或者RealTek的1000Mbps以上网卡(安装最新网卡驱动) 1.2.2 软件环境操作系统:Windows XP / Windows 7 / Windows 8(可支持Windows Server 2003/2008)操作系统位数:32位/64位显卡驱动:支持Overlay模式,支持硬件BLTIE版本: IE6 / IE8 / IE9 / IE10 / IE111.3 使用场景视频监控客户端需要用到单路回放播放窗口的应用场景。1.4 技术制约及局限1. 部分接口内部使用线程任务队列异步调用,存在一定延时。2. 组
3、件为Windows 32位版本。1.5 参考资料无2. 接口定义2.1 接口说明2.1.1 导出接口2.1.1.1 初始化接口名称SPB_CTRL_Init接口描述初始化接口原型PB_RET_TYPE SPB_CTRL_Init(void);输入void返回值PB_RET_TYPE:0成功,其他失败备注示例2.1.1.2 反初始化接口名称SPB_CTRL_Uninit接口描述反初始化接口原型PB_RET_TYPE SPB_CTRL_Uninit(void);输入void返回值PB_RET_TYPE:0成功,其他失败备注示例2.1.1.3 创建单路回放对象接口名称SPB_CTRL_Create接
4、口描述创建单路回放对象接口原型ISinglePlaybackControl* SPB_CTRL_Create(HWND hParent, BOOL bHasClose = TRUE, BOOL bHasPbTool = FALSE);输入hParent:父窗口句柄bHasClose:小窗口是否有关闭按钮bHasPbTool:是否有回放工具栏返回值ISinglePlaybackControl*:成功返回对象的指针,失败返回NULL备注示例2.1.1.4 销毁单路回放对象接口名称SPB_CTRL_Destroy接口描述销毁单路回放对象接口原型PB_RET_TYPE SPB_CTRL_Destroy
5、(ISinglePlaybackControl*& pObject);输入pObject:对象的指针的引用返回值PB_RET_TYPE:0成功,其他失败备注示例2.1.2 基本业务2.1.2.1 设置基本参数接口名称SetBasicInfo接口描述设置基本参数接口原型PB_RET_TYPE SetBasicInfo(const SPB_BASIC_INFO& stBasicInfo,bool bReset = true,bool bClearRcd = true)输入stBasicInfo:基本参数bReset:是否重置(已废弃)bClearRcd:是否清空录像返回值PB_RET_TYPE:0
6、成功,其他失败备注最先调用的接口之一,每次StopPlay之后都必须重新设置一遍。示例SPB_BASIC_INFO _basic;_basic.stCuInfo.cuZoneId = 1;_basic.stCuInfo.vmsIp = 10.18.33.103;_basic.stCuInfo.vmsPort = 80;_basic.stCamera.camName = 测试监控点;_basic.stCamera.camIdx = 10000000001310000012;_basic.stCamera.rcdSvrType = PB_RCD_SERVER_TYPE_VRM;_basic.stC
7、amera.rcdSvrIP = 10.18.33.103;_basic.stCamera.rcdSvrPort = 6300;std:stringstream ss;ss playback:PB_OPCODE_VOICE , playback:PB_OPCODE_ONE_SNAP , playback:PB_OPCODE_MULTI_SNAP , playback:PB_OPCODE_SAVE_CLIP SetBasicInfo(_basic);2.1.2.2 获取基本参数接口名称GetBasicInfo接口描述获取基本参数接口原型PB_RET_TYPE GetBasicInfo(SPB_B
8、ASIC_INFO& stBasicInfo)输入SPB_BASIC_INFO & stBasicInfo:基本参数返回值PB_RET_TYPE:0成功,其他失败备注示例2.1.2.3 查询录像接口名称SearchRecord接口描述查询录像接口原型PB_RET_TYPE SearchRecord(const SPB_RCD_SEARCH_PARAM& stParam,bool bClean = true)输入stParam:查询录像的参数返回值PB_RET_TYPE:0成功,其他失败备注1. 支持向VMS获取VMR地址,再进行录像查询。2. 支持直接向VRM查询。3. 支持NCG级联录像查询
9、。4. 支持KMS录像查询。示例SPB_RCD_SEARCH_PARAM _param;_param.tBegin = TimeStringToNumber(2015-01-13T00:00:00.000Z);_param.tEnd = TimeStringToNumber(2015-01-13T23:59:59.000Z);_param.rcdType = RT_ALL;_param.pRcdFun = CB_SearchResult;_param.pRcdUser = this;m_pImpl-SearchRecord(_param);2.1.2.4 设置录像信息接口名称SetRecord
10、Info接口描述设置录像信息接口原型PB_RET_TYPE SetRecordInfo(const RECORD_SEARCH_RESULT_MAP& records,bool bClean = false)输入records:录像信息bool bClean :清空原有录像返回值PB_RET_TYPE:0成功,其他失败备注实际是追加录像片段,如果片段的起始时间一样,则会被覆盖。示例2.1.2.5 获取录像信息接口名称GetRecordInfo接口描述获取录像信息接口原型PB_RET_TYPE GetRecordInfo(RECORD_SEARCH_RESULT_MAP& records)输入r
11、ecords:录像信息返回值PB_RET_TYPE:0成功,其他失败备注获取的是内部所有的录像片段信息示例2.1.2.6 开始回放接口名称StartPlay接口描述开始回放接口原型PB_RET_TYPE StartPlay(time_t tPlay = playback:INVALID_TIME_VALUE,time_t tEnd = playback:INVALID_TIME_VALUE)输入tPlay:可指定开始播放的时间, 不指定则使用SetRecordInfo中得到的最早时间返回值PB_RET_TYPE:0成功,其他失败备注内部必须要有录像片段才能回放,支持:1. 调用SetRecor
12、dInfo接口设置录像信息,直接播放。2. 外部SearchRecord接口查询录像,等到查询回调返回后,才可以播放。示例2.1.2.7 停止回放接口名称StopPlay接口描述停止回放接口原型PB_RET_TYPE StopPlay(BOOL bClearRcd = FALSE)输入bClearRcd:是否清空录像片段返回值PB_RET_TYPE:0成功,其他失败备注内部状态会被重置,下次播放必须要重新SetBasicInfo。示例2.1.2.8 挂起播放接口名称PendingPlay接口描述挂起播放接口原型PB_RET_TYPE PendingPlay(void)输入void返回值PB_R
13、ET_TYPE:0成功,其他失败备注仅停止播放,但不重置内部状态,可以直接重新播放。示例2.1.2.9 筛选录像类型接口名称FilterPlayType接口描述对录像类型进行筛选接口原型PB_RET_TYPE FilterPlayType(unsigned int recType)输入recType:筛选后允许播放的录像类型返回值PB_RET_TYPE:0成功,其他失败备注播放过程中不匹配的录像片段类型直接跳过。示例2.1.3 参数设置2.1.3.1 设置窗口序号接口名称SetIndex接口描述设置窗口序号接口原型PB_RET_TYPE SetIndex(WND_INDEX wndIndex)
14、输入wndIndex:窗口序号返回值PB_RET_TYPE:0成功,其他失败备注序号从0开始,默认为-1。示例2.1.3.2 获取窗口序号接口名称GetWndIndex接口描述获取窗口序号接口原型WND_INDEX GetWndIndex(void) const输入void返回值WND_INDEX:窗口序号备注示例2.1.3.3 配置常用参数接口名称Configurate接口描述配置常用参数接口原型PB_RET_TYPE Configurate(const PB_CONFIGURATION& cfg)输入cfg:常用参数返回值PB_RET_TYPE:0成功,其他失败备注如果不配置使用默认的,则
15、有的可能为非法值,导致操作失效。示例PB_CONFIGURATION cfg;cfg.toolbarShowMode = TBSM_ALWAYS_SHOW;cfg.statusbarShowMode = TBSM_AUTO;cfg.toolbarBtns.push_back(BTN_ID_INFO);cfg.toolbarBtns.push_back(BTN_ID_SOUND);cfg.toolbarBtns.push_back(BTN_ID_VOLUMN);cfg.toolbarBtns.push_back(BTN_ID_SNAP_ONE);cfg.toolbarBtns.push_back
16、(BTN_ID_SNAP_MULTI);cfg.toolbarBtns.push_back(BTN_ID_SAVE_CLIP);cfg.toolbarBtns.push_back(BTN_ID_ZOOM);cfg.clipCfg.packSize = 512;m_pImpl-Configurate(cfg);2.1.3.4 设置性能参数接口名称SetPerformance接口描述设置性能参数接口原型void SetPerformance(const PB_PERFORMACE_PARAM& stPerform)输入stPerform:播放性能参数返回值void备注下次播放时生效示例2.1.3.
17、5 设置磁盘状态接口名称SetDiskState接口描述设置磁盘状态接口原型PB_RET_TYPE SetDiskState(int nOperation, int nDiskState)输入nOperation:磁盘空间对应操作的位置(见PLAYBACK_DISK_OPERATION)nDiskState:磁盘空间的状态(见DISK_FREE_SPACE_STATE)返回值PB_RET_TYPE:0成功,其他失败备注示例2.1.4 播放控制2.1.4.1 获取播放端口接口名称GetPlayPort接口描述获取播放端口接口原型int GetPlayPort(void) const输入void返
18、回值int:播放端口备注并不是播放库的播放端口,而是vag_playctrl的句柄。示例2.1.4.2 暂停/恢复播放接口名称Pause接口描述暂停/恢复播放接口原型PB_RET_TYPE Pause(BOOL bPause = TRUE)输入bPause:是否暂停返回值PB_RET_TYPE:0成功,其他失败备注示例2.1.4.3 单帧前进接口名称ForwardOneFrame接口描述单帧前进接口原型PB_RET_TYPE ForwardOneFrame(void)输入void返回值PB_RET_TYPE:0成功,其他失败备注示例2.1.4.4 单帧后退接口名称BackwardOneFram
19、e接口描述单帧后退接口原型PB_RET_TYPE BackwardOneFrame(void)输入void返回值PB_RET_TYPE:0成功,其他失败备注仅海康播放库支持,切换到文件播放模式,在播放缓冲中单帧后退,到了文件头则无法再操作。示例2.1.4.5 打开/关闭声音接口名称OpenSound接口描述打开/关闭声音接口原型PB_RET_TYPE OpenSound(BOOL bOpen = TRUE)输入bOpen:是否打开声音返回值PB_RET_TYPE:0成功,其他失败备注在1倍速播放时才可以操作声音。示例2.1.4.6 设置音量大小接口名称SetSoundVolumn接口描述设置音
20、量大小接口原型PB_RET_TYPE SetSoundVolumn(int nVolumn)输入nVolumn:音量大小,01000返回值PB_RET_TYPE:0成功,其他失败备注示例2.1.4.7 获取音量大小接口名称GetSoundVolumn接口描述获取音量大小接口原型int GetSoundVolumn(void)输入void返回值int:音量大小,01000备注示例2.1.4.8 切换到倒放/正放接口名称Reverse接口描述切换到倒放/正放接口原型PB_RET_TYPE Reverse(BOOL bBackward = TRUE)输入bBackward:是否倒放返回值PB_RET
21、_TYPE:0成功,其他失败备注示例2.1.4.9 自适应/拉伸显示接口名称Adaptive接口描述自适应/拉伸显示接口原型PB_RET_TYPE Adaptive(BOOL bAdaptive = TRUE)输入bAdaptive:是否自适应显示返回值PB_RET_TYPE:0成功,其他失败备注示例2.1.4.10 设置回放速度接口名称SetSpeed接口描述设置回放速度接口原型PB_RET_TYPE SetSpeed(int nSpeed)输入nSpeed:回放速度返回值PB_RET_TYPE:0成功,其他失败备注回放速度,取值范围参见PB_STREAM_SPEED。示例2.1.4.11
22、定位到指定时间点接口名称SeekToTime接口描述定位到指定时间点接口原型PB_RET_TYPE SeekToTime(time_t tSeek)输入tSeek:定位时间点返回值PB_RET_TYPE:0成功,其他失败备注示例2.1.4.12 抓图接口名称SnapShot接口描述抓图接口原型PB_RET_TYPE SnapShot(long lId, BOOL bContinous)输入lId:操作ID,一次操作需要有一个ID,用于在回调中反馈bContinous:TRUE表示连续抓图,FALSE表示单张抓图返回值PB_RET_TYPE:0成功,其他失败备注通过抓图回调返回。示例2.1.4.
23、13 进入/退出电子放大接口名称DigitalZoom接口描述进入/退出电子放大接口原型PB_RET_TYPE DigitalZoom(void)输入void返回值PB_RET_TYPE:0成功,其他失败备注只能在UI线程中调用。示例2.1.5 注册回调2.1.5.1 注册状态通知回调接口名称RegStateChgCB接口描述注册状态通知回调接口原型PB_RET_TYPE RegStateChgCB(PB_STATECHG_CB pfun, void* pUser)输入pfun:回调函数pUser:用户数据返回值PB_RET_TYPE:0成功,其他失败备注示例2.1.5.2 注册操作回调接口名
24、称RegActionCB接口描述注册操作回调接口原型void RegActionCB(PB_ACTION_CB pFun, void* pUser)输入pFun:回调函数pUser:用户数据返回值void备注主要用于记录操作日志示例示例2.1.5.3 注册播放窗口画图回调接口名称RegPlayWndDrawCB接口描述注册播放窗口画图回调接口原型void RegPlayWndDrawCB(PB_PLAYWND_DRAW_CB pFun, void* pUser)输入pFun:回调函数pUser:用户数据返回值void备注示例2.1.5.4 注册窗口消息回调接口名称RegWindowMsg接口描
25、述注册窗口消息回调接口原型PB_RET_TYPE RegWindowMsg(PB_WNDMSG_CB pfun, long lUser)输入pfun:回调函数pUser:用户数据返回值PB_RET_TYPE:0成功,其他失败备注示例2.1.5.5 注册窗口消息回调接口名称RegWindowMsgEx接口描述注册窗口消息回调接口原型PB_RET_TYPE RegWindowMsgEx(PB_WNDMSG_CB_EX pfun, long lUser)输入pfun:回调函数pUser:用户数据返回值PB_RET_TYPE:0成功,其他失败备注回调函数带有窗口序号。 示例2.1.6 获取状态2.1.
26、6.1 获取播放时间接口名称GetPlayerTime接口描述获取播放时间接口原型time_t GetPlayerTime(void)输入void返回值time_t:播放时间,无效时为-1备注并不总是有效,原因如下:1、 此接口不是直接向播放库获取时间,而是通过塞数据线程更新播放时间。2、 有些码流获取的播放时间无效,例如大华设备码流、ehome设备码流。示例2.1.6.2 获取播放速度接口名称GetPlaySpeed接口描述获取播放速度接口原型int GetPlaySpeed(void)输入void返回值int:播放速度值,参见PLAYBACK_SPEED备注示例2.1.6.3 是否处于空闲
27、状态接口名称IsIdle接口描述播放窗口是否处于空闲状态接口原型BOOL IsIdle(void) const输入void返回值BOOL:TRUE是,FALSE否备注StopPlay之后会处于空闲状态示例2.1.6.4 是否处于挂起状态接口名称IsPending接口描述是否处于挂起状态接口原型BOOL IsPending(void) const输入void返回值BOOL:TRUE是,FALSE否备注PendingPlay之后会处于挂起状态示例2.1.6.5 是否有录像信息接口名称HasRecords接口描述是否有录像信息接口原型BOOL HasRecords(void)输入void返回值BOOL:TRUE有,FALSE没有备注示例2.1.6.6 指定时间范围内是否有录像信息接口名称HasRecords接口描述指定时间范围内是否有录像信息接口原型BOOL HasRecords(time_t tSta, time_t tEnd)输入tSta:起始时