it计算机]cctv程序开发-基于海康开发包内容摘要:

fo)。 if (lUserID 0) { printf(Login error, %d\n, NET_DVR_GetLastError())。 NET_DVR_Cleanup()。 return。 } // //设置异常消息回调函数 中国电子科技集团公司第三研究所 15 / 83 NET_DVR_SetExceptionCallBack_V30(0, NULL,g_ExceptionCallBack, NULL)。 // //启动预览并设置回调数据流 LONG lRealPlayHandle。 NET_DVR_CLIENTINFO ClientInfo = {0}。 = NULL。 //需要 SDK 解码时句柄设为有效值,仅取流不解码时可设为空 = 1。 //预览通道号 = 0。 //最高位 (31)为 0 表示主码流,为 1 表示子码流 0~ 30 位表示连接方式: 0- TCP 方式; 1- UDP 方式; 2-多播方式; 3- RTP 方式。 = NULL。 //多播地址,需要多播预览时配置 BOOL bPreviewBlock = false。 //请求码流过程是否阻塞, 0:否, 1:是 lRealPlayHandle = NET_DVR_RealPlay_V30(lUserID, amp。 ClientInfo, g_RealDataCallBack_V30, NULL, 0)。 if (lRealPlayHandle 0) { printf(NET_DVR_RealPlay_V30 error\n)。 NET_DVR_Logout(lUserID)。 NET_DVR_Cleanup()。 return。 } // //关闭预览 NET_DVR_StopRealPlay(lRealPlayHandle)。 //注销用户 NET_DVR_Logout_V30(lUserID)。 NET_DVR_Cleanup()。 return。 } 中国电子科技集团公司第三研究所 16 / 83 回放和下载模块流程  按文件回放或下载需要通过查找录像文件功能先获取文件信息(相关接口 NET_DVR_FindFile_VNET_DVR_FindNextFile_V30),然后根据获取到的文件名开始回放或下载(相关接口NET_DVR_PlayBackByName、 NET_DVR_GetFileByName),特别提醒在调用了回放或下载的接口后,还必须调用控制接口( NET_DVR_PlayBackControl)的开始播放命令( NET_DVR_PLAYSTART)。  按时间回放或下载文件时,用户可以无需调用查找录像文件的相关接口,只要在接口中指定开始和结束时间,调用回放或下载接口(相关接口 NET_DVR_PlayBackByTime、 NET_DVR_GetFileByTime)后,还必须调用控制接口( NET_DVR_PlayBackControl)的开 始播放命令( NET_DVR_PLAYSTART)。 此时,将按照指定时间范围内最近的有录像的时间段开始回放或下载。 用户也可以通过调用查找录像文件的相关接口,获取文件的开始和结束时间后,按这个时间范围指定回放或下载接口中的时间参数,最后还必须调用控制接口( NET_DVR_PlayBackControl)的开始播放命令( NET_DVR_PLAYSTART)。  Linux 下,按文件回放和按时间回放时,若回放的窗口句柄不为 NULL(即需要 SDK 解码显示),需要调用初始化窗口接口( NET_DVR_DrawAreaInit)进行 SDL 窗口的初始化才能正常的解码显示,在停止回放时,需要调用释放窗口资源接口( NET_DVR_DrawAreaRelease)释放窗口资源。 中国电子科技集团公司第三研究所 17 / 83 示例代码 示例一:查找录像文件并下载 include include iostream include include using namespace std。 int saveRecordFile(int userId,char * srcfile,char * destfile) { int bRes = 1。 int hPlayback = 0。 if( (hPlayback = NET_DVR_GetFileByName(userId, srcfile, destfile)) 0 ) { printf( GetFileByName failed. error[%d]\n, NET_DVR_GetLastError())。 bRes= 1。 return bRes。 } if(!NET_DVR_PlayBackControl(hPlayback, NET_DVR_PLAYSTART, 0, NULL)) { printf(play back control failed [%d]\n,NET_DVR_GetLastError())。 bRes=1。 return bRes。 } int nPos = 0。 for(nPos = 0。 nPos 100amp。 amp。 nPos=0。 nPos = NET_DVR_GetDownloadPos(hPlayback)) { Sleep(5000)。 //millisecond } printf(have got %d\n, nPos)。 if(!NET_DVR_StopGetFile(hPlayback)) { printf(failed to stop get file [%d]\n,NET_DVR_GetLastError())。 bRes = 1。 return bRes。 } printf(%s\n,srcfile)。 中国电子科技集团公司第三研究所 18 / 83 if(nPos100) { printf(download err [%d]\n,NET_DVR_GetLastError())。 bRes=1。 return bRes。 } else { return 0。 } } void main() { // // 初始化 NET_DVR_Init()。 //设置连接时间与重连时间 NET_DVR_SetConnectTime(2020, 1)。 NET_DVR_SetReconnect(10000, true)。 // // 注册设备 LONG lUserID。 NET_DVR_DEVICEINFO_V30 struDeviceInfo。 lUserID = NET_DVR_Login_V30(, 8000, admin, 12345, amp。 struDeviceInfo)。 if (lUserID 0) { printf(Login error, %d\n, NET_DVR_GetLastError())。 NET_DVR_Cleanup()。 return。 } NET_DVR_FILECOND struFileCond。 = 0xFF。 = 1。 = 0xFF。 = 0。 = 2020。 = 3。 = 1。 = 10。 = 6。 中国电子科技集团公司第三研究所 19 / 83 =50。 = 2020。 = 3。 = 1。 = 11。 = 7。 = 0。 // //查找录像文件 int lFindHandle = NET_DVR_FindFile_V30(lUserID, amp。 struFileCond)。 if(lFindHandle 0) { printf(find file fail,last error %d\n,NET_DVR_GetLastError())。 return。 } NET_DVR_FINDDATA_V30 struFileData。 while(true) { int result = NET_DVR_FindNextFile_V30(lFindHandle, amp。 struFileData)。 if(result == NET_DVR_ISFINDING) { continue。 } else if(result == NET_DVR_FILE_SUCCESS) { char strFileName[256] = {0}。 sprintf(strFileName, ./%s, )。 saveRecordFile(lUserID, , strFileName)。 break。 } else if(result == NET_DVR_FILE_NOFIND || result == NET_DVR_NOMOREFILE) { break。 } else { printf(find file fail for illegal get file state)。 break。 } } //停止查找 if(lFindHandle 0) 中国电子科技集团公司第三研究所 20 / 83 { NET_DVR_FindClose_V30(lFindHandle)。 } //注销用户 NET_DVR_Logout(lUserID)。 //释放 SDK 资源 NET_DVR_Cleanup()。 return。 } 示例二:按时间播放录像文件 include include iostream include include using namespace std。 void main() { // // 初始化 NET_DVR_Init()。 //设置连接时间与重连时间 NET_DVR_SetConnectTime(2020, 1)。 NET_DVR_SetReconnect(10000, true)。 // // 注册设备 LONG lUserID。 NET_DVR_DEVICEINFO_V30 struDeviceInfo。 lUserID = NET_DVR_Login_V30(, 8000, admin, 12345, amp。 struDeviceInfo)。 if (lUserID 0) { printf(Login error, %d\n, NET_DVR_GetLastError())。 NET_DVR_Cleanup()。 return。 } NET_DVR_TIME struStartTime, struStopTime。 = 2020。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。