QT+海康威视SDK开发

解码处理流程:

  1. 调用NET_DVR_Init初始化sdk,一个项目中只需要初始化一次。
  2. 调用NET_DVR_SetConnectTime、NET_DVR_SetReconnect设置连接时间与重连时间。
  3. 填充NET_DVR_PREVIEWINFO结构体数据用来登录。
  4. 调用NET_DVR_Login_V30登录设备。
  5. 调用NET_DVR_RealPlay_V40播放视频。
  6. 调用NET_DVR_StopRealPlay停止播放。
  7. 调用NET_DVR_Logout登出设备。

返回最后操作的错误码:NET_DVR_GetLastError(https://open.hikvision.com/hardware/definitions/NET_DVR_GetLastError.html)

NET_DVR_Login_V30

登录设备

LONG NET_DVR_Login_V30(
  char                       *sDVRIP,
  WORD                       wDVRPort,
  char                       *sUserName,
  char                       *sPassword,
  LPNET_DVR_DEVICEINFO_V30   lpDeviceInfo
);

Parameters:

  • sDVRIP

    [in] 设备IP地址或是静态域名,字符数不大于128个

  • wServerPort

    [in] 设备端口号

  • sUserName

    [in] 登录的用户名

  • sPassword

    [in] 用户密码

  • lpDeviceInfo

    [out] 设备信息

Return Values:

-1表示失败,其他值表示返回的用户ID值。该用户ID具有唯一性,后续对设备的操作都需要通过此ID实现。

NET_DVR_PREVIEWINFO

预览参数结构体。

struct{
  LONG     lChannel;
  DWORD    dwStreamType;
  DWORD    dwLinkMode;
  HWND     hPlayWnd;
  BOOL     bBlocked;
  BOOL     bPassbackRecord;
  BYTE     byPreviewMode;
  BYTE     byStreamID[STREAM_ID_LEN];
  BYTE     byProtoType;
  BYTE     byRes1;
  BYTE     byVideoCodingType;
  DWORD    dwDisplayBufNum;
  BYTE     byRes[216];
}NET_DVR_PREVIEWINFO, *LPNET_DVR_PREVIEWINFO;

Members

lChannel
通道号,目前设备模拟通道号从1开始,数字通道的起始通道号通过NET_DVR_GetDVRConfig(配置命令NET_DVR_GET_IPPARACFG_V40)获取(dwStartDChan)。
dwStreamType
码流类型:0-主码流,1-子码流,2-三码流,3-虚拟码流,以此类推
dwLinkMode
连接方式:0- TCP方式,1- UDP方式,2- 多播方式,3- RTP方式,4- RTP/RTSP,5- RTP/HTTP,6- HRUDP(可靠传输)
hPlayWnd
播放窗口的句柄,为NULL表示不解码显示。
bBlocked
0- 非阻塞取流,1- 阻塞取流
若设为不阻塞,表示发起与设备的连接就认为连接成功,如果发生码流接收失败、播放失败等情况以预览异常的方式通知上层。在循环播放的时候可以减短停顿的时间,与NET_DVR_RealPlay处理一致。
若设为阻塞,表示直到播放操作完成才返回成功与否,网络异常时SDK内部connect失败将会有5s的超时才能够返回,不适合于轮询取流操作。
bPassbackRecord
是否启用录像回传:0-不启用录像回传,1-启用录像回传。ANR断网补录功能,客户端和设备之间网络异常恢复之后自动将前端数据同步过来,需要设备支持。
byPreviewMode
延迟预览模式:0- 正常预览,1- 延迟预览
byStreamID
流ID,为字母、数字和"_"的组合,lChannel为0xffffffff时启用此参数
byProtoType
应用层取流协议:0- 私有协议,1- RTSP协议。主子码流支持的取流协议通过登录返回结构参数NET_DVR_DEVICEINFO_V30的byMainProto、bySubProto值得知。设备同时支持私协议和RTSP协议时,该参数才有效,默认使用私有协议,可选RTSP协议。
byRes1
保留,置为0
byVideoCodingType
码流数据编解码类型:0- 通用编码数据,1- 热成像探测器产生的原始数据(温度数据的加密信息,通过去加密运算,将原始数据算出真实的温度值)
dwDisplayBufNum
播放库播放缓冲区最大缓冲帧数,取值范围:1、6(默认,自适应播放模式)、15,置0时默认为1
byRes
保留,置为0

Remarks

  • dwStreamType(码流类型)、dwLinkMode(连接方式)、bPassbackRecord(录像回传)、byPreviewMode(延迟预览模式)、byStreamID(流ID)这些参数的取值需要设备支持。
  • NET_DVR_RealPlay_V40支持多播方式预览(dwLinkMode设为2),不需要传多播组地址,底层自动从设备获取已配置的多播组地址(**NET_DVR_NETCFG_V50**中的参数struMulticastIpAddr)并以该多播组地址实现多播。

猜你喜欢

转载自blog.csdn.net/qq_43805944/article/details/131331433