hksdkapi.cpp 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327
  1. #include "hksdkapi.h"
  2. #include "LHQLogAPI.h"
  3. #include <QString>
  4. #include <QLibrary>
  5. /* ========================================================================
  6. * ************************* 定义海康的SDK接口 *****************************
  7. * ======================================================================== */
  8. /* 网络登陆相关的函数指针 */
  9. using pNet_DEV_Init = bool(*)();
  10. using pNET_DVR_Cleanup = bool(*)();
  11. using pNET_DVR_SetConnectTime = bool(*)(DWORD dwWaitTime, DWORD dwTryTimes);
  12. using pNET_DVR_SetReconnect = bool(*)(DWORD dwInterval, BOOL bEnableRecon);
  13. using pNET_DVR_Login_V40 = LONG(*)(LPNET_DVR_USER_LOGIN_INFO pLoginInfo,LPNET_DVR_DEVICEINFO_V40 lpDeviceInfo);
  14. using pNET_DVR_Logout = BOOL(*)(LONG lUserID);
  15. using pNET_DVR_GetLastError = DWORD(*)();
  16. using pNET_DVR_RealPlay_V40 = LONG(*)(LONG lUserID, LPNET_DVR_PREVIEWINFO lpPreviewInfo, REALDATACALLBACK fRealDataCallBack_V30, void* pUser);
  17. using pNET_DVR_StopRealPlay = bool(*)(LONG lRealHandle);
  18. /* 播放相关的函数指针 */
  19. using pPlayM4_GetPort = BOOL(*)(LONG* nPort);
  20. using pPlayM4_FreePort = BOOL(*)(LONG nPort);
  21. using pPlayM4_Stop = BOOL(*)(LONG nPort);
  22. using pPlayM4_OpenStream = BOOL(*)(LONG nPort,PBYTE pFileHeadBuf,DWORD nSize,DWORD nBufPoolSize);
  23. using pPlayM4_CloseStream = BOOL(*)(LONG nPort);
  24. using pPlayM4_SetDecCallBackMend = BOOL(*)(LONG nPort, void (CALLBACK* DecCBFun)(long nPort, char * pBuf, long nSize, FRAME_INFO * pFrameInfo, void* nUser,void* nReserved2), void* nUser);
  25. using pPlayM4_Play = BOOL(*)(LONG nPort, HWND hWnd);
  26. using pPlayM4_PlaySound = BOOL(*)(LONG nPort);
  27. using pPlayM4_InputData = BOOL(*)(LONG nPort,PBYTE pBuf,DWORD nSize);
  28. using pPlayM4_GetLastError = DWORD(*)(LONG nPort);
  29. /* 网络登录相关的函数指针 */
  30. pNet_DEV_Init g_NET_DVR_Init = nullptr;
  31. pNET_DVR_Cleanup g_NET_DVR_Cleanup = nullptr;
  32. pNET_DVR_SetConnectTime g_NET_DVR_SetConnectTime = nullptr;
  33. pNET_DVR_SetReconnect g_NET_DVR_SetReconnect = nullptr;
  34. pNET_DVR_Login_V40 g_NET_DVR_Login_V40 = nullptr;
  35. pNET_DVR_Logout g_NET_DVR_Logout = nullptr;
  36. pNET_DVR_GetLastError g_NET_DVR_GetLastError = nullptr;
  37. pNET_DVR_RealPlay_V40 g_NET_DVR_RealPlay_V40 = nullptr;
  38. pNET_DVR_StopRealPlay g_NET_DVR_StopRealPlay = nullptr;
  39. /* 播放相关的函数指针 */
  40. pPlayM4_GetPort g_PlayM4_GetPort = nullptr;
  41. pPlayM4_FreePort g_PlayM4_FreePort = nullptr;
  42. pPlayM4_Stop g_PlayM4_Stop = nullptr;
  43. pPlayM4_OpenStream g_PlayM4_OpenStream = nullptr;
  44. pPlayM4_CloseStream g_PlayM4_CloseStream = nullptr;
  45. pPlayM4_SetDecCallBackMend g_PlayM4_SetDecCallBackMend = nullptr;
  46. pPlayM4_Play g_PlayM4_Play = nullptr;
  47. pPlayM4_PlaySound g_PlayM4_PlaySound = nullptr;
  48. pPlayM4_InputData g_PlayM4_InputData = nullptr;
  49. pPlayM4_GetLastError g_PlayM4_GetLastError = nullptr;
  50. /* ========================================================================
  51. * ****************************** API函数 **********************************
  52. * ======================================================================== */
  53. /* 加载动态库 */
  54. bool load_HKSDK_Library(QString libPath)
  55. {
  56. if(libPath.isEmpty())
  57. {
  58. return false;
  59. }
  60. /* 加载网络动态库 */
  61. #if defined(Q_OS_WIN)
  62. QString libNetPath = libPath + "/HCNetSDK.dll";
  63. QString libPlayPath = libPath + "/PlayCtrl.dll";
  64. #elif defined(Q_OS_LINUX)
  65. QString libNetPath = libPath + "/libhcnetsdk.so";
  66. QString libPlayPath = libPath + "/libPlayCtrl.so";
  67. #endif
  68. QLibrary libNet(libNetPath);
  69. if(!libNet.load())
  70. {
  71. LH_WRITE_ERROR(QString("load 《HCNetSDK》 library failed, path: %1").arg(libPath));
  72. return false;
  73. }
  74. g_NET_DVR_Init = (pNet_DEV_Init)libNet.resolve("NET_DVR_Init");
  75. g_NET_DVR_Cleanup = (pNET_DVR_Cleanup)libNet.resolve("NET_DVR_Cleanup");
  76. g_NET_DVR_SetConnectTime = (pNET_DVR_SetConnectTime)libNet.resolve("NET_DVR_SetConnectTime");
  77. g_NET_DVR_SetReconnect = (pNET_DVR_SetReconnect)libNet.resolve("NET_DVR_SetReconnect");
  78. g_NET_DVR_Login_V40 = (pNET_DVR_Login_V40)libNet.resolve("NET_DVR_Login_V40");
  79. g_NET_DVR_Logout = (pNET_DVR_Logout)libNet.resolve("NET_DVR_Logout");
  80. g_NET_DVR_GetLastError = (pNET_DVR_GetLastError)libNet.resolve("NET_DVR_GetLastError");
  81. g_NET_DVR_RealPlay_V40 = (pNET_DVR_RealPlay_V40)libNet.resolve("NET_DVR_RealPlay_V40");
  82. g_NET_DVR_StopRealPlay = (pNET_DVR_StopRealPlay)libNet.resolve("NET_DVR_StopRealPlay");
  83. if(g_NET_DVR_Init == nullptr || g_NET_DVR_Cleanup == nullptr || g_NET_DVR_SetConnectTime == nullptr ||
  84. g_NET_DVR_SetReconnect == nullptr || g_NET_DVR_Login_V40 == nullptr || g_NET_DVR_Logout == nullptr ||
  85. g_NET_DVR_GetLastError == nullptr || g_NET_DVR_RealPlay_V40 == nullptr || g_NET_DVR_StopRealPlay == nullptr)
  86. {
  87. LH_WRITE_ERROR("load HCNetSDK library failed, resolve function failed!");
  88. return false;
  89. }
  90. /* 加载播放动态库 */
  91. QLibrary libPlayM4(libPlayPath);
  92. if(!libPlayM4.load())
  93. {
  94. LH_WRITE_ERROR(QString("load 《PlayCtrl》 library failed, path: %1").arg(libPath));
  95. return false;
  96. }
  97. g_PlayM4_GetPort = (pPlayM4_GetPort)libPlayM4.resolve("PlayM4_GetPort");
  98. g_PlayM4_FreePort = (pPlayM4_FreePort)libPlayM4.resolve("PlayM4_FreePort");
  99. g_PlayM4_Stop = (pPlayM4_Stop)libPlayM4.resolve("PlayM4_Stop");
  100. g_PlayM4_OpenStream = (pPlayM4_OpenStream)libPlayM4.resolve("PlayM4_OpenStream");
  101. g_PlayM4_CloseStream = (pPlayM4_CloseStream)libPlayM4.resolve("PlayM4_CloseStream");
  102. g_PlayM4_SetDecCallBackMend = (pPlayM4_SetDecCallBackMend)libPlayM4.resolve("PlayM4_SetDecCallBackMend");
  103. g_PlayM4_Play = (pPlayM4_Play)libPlayM4.resolve("PlayM4_Play");
  104. g_PlayM4_PlaySound = (pPlayM4_PlaySound)libPlayM4.resolve("PlayM4_PlaySound");
  105. g_PlayM4_InputData = (pPlayM4_InputData)libPlayM4.resolve("PlayM4_InputData");
  106. g_PlayM4_GetLastError = (pPlayM4_GetLastError)libPlayM4.resolve("PlayM4_GetLastError");
  107. if(g_PlayM4_GetPort == nullptr || g_PlayM4_FreePort == nullptr || g_PlayM4_Stop == nullptr ||
  108. g_PlayM4_OpenStream == nullptr || g_PlayM4_CloseStream == nullptr || g_PlayM4_SetDecCallBackMend == nullptr ||
  109. g_PlayM4_Play == nullptr || g_PlayM4_PlaySound == nullptr || g_PlayM4_InputData == nullptr || g_PlayM4_GetLastError == nullptr)
  110. {
  111. LH_WRITE_ERROR("load PlayCtrl library failed, resolve function failed!");
  112. return false;
  113. }
  114. return true;
  115. }
  116. bool NET_DVR_Init()
  117. {
  118. if(g_NET_DVR_Init == nullptr)
  119. {
  120. LH_WRITE_ERROR("NET_DVR_Init is nullptr");
  121. return false;
  122. }
  123. return g_NET_DVR_Init();
  124. }
  125. bool NET_DVR_Cleanup()
  126. {
  127. if(g_NET_DVR_Cleanup == nullptr)
  128. {
  129. LH_WRITE_ERROR("NET_DVR_Cleanup is nullptr");
  130. return false;
  131. }
  132. return g_NET_DVR_Cleanup();
  133. }
  134. bool NET_DVR_SetConnectTime(DWORD dwWaitTime, DWORD dwTryTimes)
  135. {
  136. if(g_NET_DVR_SetConnectTime == nullptr)
  137. {
  138. LH_WRITE_ERROR("NET_DVR_SetConnectTime is nullptr");
  139. return false;
  140. }
  141. return g_NET_DVR_SetConnectTime(dwWaitTime, dwTryTimes);
  142. }
  143. bool NET_DVR_SetReconnect(DWORD dwInterval, BOOL bEnableRecon)
  144. {
  145. if(g_NET_DVR_SetReconnect == nullptr)
  146. {
  147. LH_WRITE_ERROR("NET_DVR_SetReconnect is nullptr");
  148. return false;
  149. }
  150. return g_NET_DVR_SetReconnect(dwInterval, bEnableRecon);
  151. }
  152. LONG NET_DVR_Login_V40(LPNET_DVR_USER_LOGIN_INFO pLoginInfo,LPNET_DVR_DEVICEINFO_V40 lpDeviceInfo)
  153. {
  154. if(g_NET_DVR_Login_V40 == nullptr)
  155. {
  156. LH_WRITE_ERROR("NET_DVR_Login_V40 is nullptr");
  157. return -1;
  158. }
  159. return g_NET_DVR_Login_V40(pLoginInfo, lpDeviceInfo);
  160. }
  161. bool NET_DVR_Logout(LONG lUserID)
  162. {
  163. if(g_NET_DVR_Logout == nullptr)
  164. {
  165. LH_WRITE_ERROR("NET_DVR_Logout is nullptr");
  166. return false;
  167. }
  168. return g_NET_DVR_Logout(lUserID);
  169. }
  170. DWORD NET_DVR_GetLastError()
  171. {
  172. if(g_NET_DVR_GetLastError == nullptr)
  173. {
  174. LH_WRITE_ERROR("NET_DVR_GetLastError is nullptr");
  175. return -1;
  176. }
  177. return g_NET_DVR_GetLastError();
  178. }
  179. LONG NET_DVR_RealPlay_V40(LONG lUserID, LPNET_DVR_PREVIEWINFO lpPreviewInfo, REALDATACALLBACK fRealDataCallBack_V30, void* pUser)
  180. {
  181. if(g_NET_DVR_RealPlay_V40 == nullptr)
  182. {
  183. LH_WRITE_ERROR("NET_DVR_RealPlay_V40 is nullptr");
  184. return -1;
  185. }
  186. return g_NET_DVR_RealPlay_V40(lUserID, lpPreviewInfo, fRealDataCallBack_V30, pUser);
  187. }
  188. bool NET_DVR_StopRealPlay(LONG lRealHandle)
  189. {
  190. if(g_NET_DVR_StopRealPlay == nullptr)
  191. {
  192. LH_WRITE_ERROR("NET_DVR_StopRealPlay is nullptr");
  193. return false;
  194. }
  195. return g_NET_DVR_StopRealPlay(lRealHandle);
  196. }
  197. bool PlayM4_GetPort(LONG* nPort)
  198. {
  199. if(g_PlayM4_GetPort == nullptr)
  200. {
  201. LH_WRITE_ERROR("PlayM4_GetPort is nullptr");
  202. return false;
  203. }
  204. return g_PlayM4_GetPort(nPort);
  205. }
  206. bool PlayM4_FreePort(LONG nPort)
  207. {
  208. if(g_PlayM4_FreePort == nullptr)
  209. {
  210. LH_WRITE_ERROR("PlayM4_FreePort is nullptr");
  211. return false;
  212. }
  213. return g_PlayM4_FreePort(nPort);
  214. }
  215. bool PlayM4_Stop(LONG nPort)
  216. {
  217. if(g_PlayM4_Stop == nullptr)
  218. {
  219. LH_WRITE_ERROR("PlayM4_Stop is nullptr");
  220. return false;
  221. }
  222. return g_PlayM4_Stop(nPort);
  223. }
  224. bool PlayM4_OpenStream(LONG nPort,PBYTE pFileHeadBuf,DWORD nSize,DWORD nBufPoolSize)
  225. {
  226. if(g_PlayM4_OpenStream == nullptr)
  227. {
  228. LH_WRITE_ERROR("PlayM4_OpenStream is nullptr");
  229. return false;
  230. }
  231. return g_PlayM4_OpenStream(nPort, pFileHeadBuf, nSize, nBufPoolSize);
  232. }
  233. bool PlayM4_CloseStream(LONG nPort)
  234. {
  235. if(g_PlayM4_CloseStream == nullptr)
  236. {
  237. LH_WRITE_ERROR("PlayM4_CloseStream is nullptr");
  238. return false;
  239. }
  240. return g_PlayM4_CloseStream(nPort);
  241. }
  242. bool PlayM4_SetDecCallBackMend(LONG nPort, void (CALLBACK* DecCBFun)(long nPort, char * pBuf, long nSize, FRAME_INFO * pFrameInfo, void* nUser,void* nReserved2), void* nUser)
  243. {
  244. if(g_PlayM4_SetDecCallBackMend == nullptr)
  245. {
  246. LH_WRITE_ERROR("PlayM4_SetDecCallBackMend is nullptr");
  247. return false;
  248. }
  249. return g_PlayM4_SetDecCallBackMend(nPort, DecCBFun, nUser);
  250. }
  251. bool PlayM4_Play(LONG nPort, HWND hWnd)
  252. {
  253. if(g_PlayM4_Play == nullptr)
  254. {
  255. LH_WRITE_ERROR("PlayM4_Play is nullptr");
  256. return false;
  257. }
  258. return g_PlayM4_Play(nPort, hWnd);
  259. }
  260. bool PlayM4_PlaySound(LONG nPort)
  261. {
  262. if(g_PlayM4_PlaySound == nullptr)
  263. {
  264. LH_WRITE_ERROR("PlayM4_PlaySound is nullptr");
  265. return false;
  266. }
  267. return g_PlayM4_PlaySound(nPort);
  268. }
  269. bool PlayM4_InputData(LONG nPort,PBYTE pBuf,DWORD nSize)
  270. {
  271. if(g_PlayM4_InputData == nullptr)
  272. {
  273. LH_WRITE_ERROR("PlayM4_InputData is nullptr");
  274. return false;
  275. }
  276. return g_PlayM4_InputData(nPort, pBuf, nSize);
  277. }
  278. DWORD PlayM4_GetLastError(LONG nPort)
  279. {
  280. if(g_PlayM4_GetLastError == nullptr)
  281. {
  282. LH_WRITE_ERROR("PlayM4_GetLastError is nullptr");
  283. return -1;
  284. }
  285. return g_PlayM4_GetLastError(nPort);
  286. }