hkcamera.cpp 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. #include "hkcamera.h"
  2. #include<iostream>
  3. using namespace std;
  4. hkcamera::hkcamera(QObject *parent) : QObject(parent)
  5. {
  6. }
  7. BOOL hkcamera::connect(QString ip, int port, QString name, QString password)
  8. {
  9. char* ch_ip;
  10. char* ch_name;
  11. char* ch_password;
  12. QByteArray ba_ip = ip.toLatin1();
  13. QByteArray ba_name = name.toLatin1();
  14. QByteArray ba_password = password.toLatin1();
  15. ch_ip = ba_ip.data();
  16. ch_name = ba_name.data();
  17. ch_password = ba_password.data();
  18. //初始化SDK
  19. bool isok = NET_DVR_Init();
  20. if (isok == false)
  21. {
  22. std::cout << "NET_DVR_Init error;error number is " << NET_DVR_GetLastError();
  23. return false;
  24. }
  25. //设置连接时间与重连时间
  26. NET_DVR_SetConnectTime(2000, 1);
  27. NET_DVR_SetReconnect(10000, true);
  28. NET_DVR_DEVICEINFO DeviceInfoTmp; //设备信息
  29. LONG userID = NET_DVR_Login(ch_ip, port, ch_name, ch_password, &DeviceInfoTmp);
  30. //long userID = NET_DVR_Login("192.168.1.64", 8000, "admin", "a12345678", &DeviceInfoTmp);
  31. if (userID < 0)
  32. {
  33. std::cout << "NET_DVR_Login error;" << "error number is " << NET_DVR_GetLastError();
  34. return false;
  35. }
  36. std::cout << "Login userID:" << userID;
  37. m_userid = userID;
  38. return true;
  39. }
  40. BOOL hkcamera::displaypic(HWND hWnd)
  41. {
  42. NET_DVR_PREVIEWINFO struPlayInfo = { 0 }; //初始化
  43. struPlayInfo.hPlayWnd = hWnd;//需要 SDK 解码时句柄设为有效值,仅取流不解码时可设为空
  44. struPlayInfo.lChannel = 1;//预览通道号
  45. struPlayInfo.dwStreamType = 0;//码流类型:0-主码流,1-子码流,2-三码流,3-虚拟码流,以此类推
  46. struPlayInfo.dwLinkMode = 0;//0- TCP 方式,1- UDP 方式,2- 多播方式,3- RTP 方式,4-RTP/RTSP,5-RSTP/HTTP
  47. struPlayInfo.bBlocked = 1;//0- 非阻塞取流,1- 阻塞取流
  48. LONG IRealPlayHandle = NET_DVR_RealPlay_V40(m_userid, &struPlayInfo, NULL, NULL);
  49. if (IRealPlayHandle < 0)
  50. {
  51. std::cout << "NET_DVR_RealPlay_V40 error;error number " << NET_DVR_GetLastError();
  52. NET_DVR_Logout(m_userid);
  53. m_userid = 0;
  54. return false;
  55. }
  56. else
  57. {
  58. m_playhandle = IRealPlayHandle;
  59. return true;
  60. }
  61. }
  62. void hkcamera::stopdisplaypic()
  63. {
  64. NET_DVR_StopRealPlay(m_playhandle);
  65. return;
  66. }
  67. BOOL hkcamera::savepic(QString filename)
  68. {
  69. if(-1 == m_playhandle)
  70. {
  71. return false;
  72. }
  73. QString capImagePath = filename;
  74. QDir m_capImagePath(capImagePath);
  75. if (m_capImagePath.exists())
  76. {
  77. QFile::remove(capImagePath);
  78. }
  79. char* savefilename;
  80. QByteArray bytefilename = filename.toLatin1();
  81. savefilename = bytefilename.data();
  82. //保存为jpg格式
  83. // NET_DVR_SetCapturePictureMode(JPEG_MODE);//BMP_MODE
  84. NET_DVR_SetCapturePictureMode(BMP_MODE);
  85. bool pic_status = NET_DVR_CapturePicture(m_playhandle, savefilename);
  86. if (pic_status)
  87. {
  88. std::cout << "camera_SavePicture save pic :" << savefilename << "success";
  89. }
  90. else
  91. {
  92. std::cout << "camera_SavePicture save pic :" << savefilename << "false";
  93. }
  94. return pic_status;
  95. }
  96. void hkcamera::logout()
  97. {
  98. if(0 != m_userid)
  99. {
  100. NET_DVR_Logout(m_userid);
  101. m_userid = 0;
  102. m_playhandle = -1;
  103. }
  104. }