设备网络SDK开发使用手册

NET_DVR_PlayBackByTime

按时间回放录像文件。

LONG NET_DVR_PlayBackByTime(
  LONG              lUserID,
  LONG              lChannel,
  LPNET_DVR_TIME    lpStartTime,
  LPNET_DVR_TIME    lpStopTime,
  HWND              hWnd
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lChannel
[in] 通道号
lpStartTime
[in] 文件的开始时间
lpStopTime
[in] 文件结束时间
hWnd
[in] 回放的窗口句柄,若置为空,SDK仍能收到码流数据,但不解码显示

Return Values

-1表示失败,其他值作为NET_DVR_StopPlayBack等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码,通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 错误值 错误信息
NET_DVR_NOERROR 0 没有错误。
NET_DVR_PASSWORD_ERROR 1 用户名密码错误。注册时输入的用户名或者密码错误。
NET_DVR_NOINIT 3 SDK未初始化。
NET_DVR_OVER_MAXLINK 5 连接到设备的用户个数超过最大。
NET_DVR_NETWORK_FAIL_CONNECT 7 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR 8 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR 9 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT 10 从设备接收数据超时。
NET_DVR_COMMANDTIMEOUT 14 设备命令执行超时。
NET_DVR_PARAMETER_ERROR 17 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_NOSPECFILE 33 回放时设备没有指定的文件。
NET_DVR_ALLOC_RESOURCE_ERROR 41 SDK资源分配错误。
NET_DVR_NOENOUGH_BUF 43 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR 44 创建SOCKET出错。
NET_DVR_LOADPLAYERSDKFAILED 64 载入当前目录下Player Sdk出错。
NET_DVR_LOADPLAYERSDKPROC_ERROR 65 找不到Player Sdk中某个函数入口。
NET_DVR_LOADDSSDKFAILED 66 载入当前目录下DSsdk出错。
NET_DVR_BINDSOCKET_ERROR 72 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR 73 socket连接中断,此错误通常是由于连接中断或目的地不可达。

Remarks

该接口指定了当前要播放的录像文件,调用成功后,还必须调用NET_DVR_PlayBackControl接口的开始播放控制命令(NET_DVR_PLAYSTART)才能实现回放。
当回放的是按事件搜索出的录像文件时,由于每个文件都会有预录和延迟的部分,因此在设置本接口的开始和结束时间参数时可以适当提前开始时间和延长结束时间。 建议值:最多10分钟,最少5秒。
在调用该接口成功后,可以通过接口NET_DVR_SetPlayDataCallBack注册回调函数,捕获录像的码流数据并自行处理。

Linux下

对于4.1或者以上的版本的SDK,HWND表示播放窗口的句柄,定义为:
typedef unsigned int HWND;

如果使用Qt进行界面开发,示例如下:

NET_DVR_CLIENTINFO tmpclientinfo;
tmpclientinfo.hPlayWnd = (HWND)m_framePlayWnd->GetPlayWndId();

对于4.1以前的版本的SDK,HWND定义如下:

typedef struct __PLAYRECT
{
    int  x;          //显示框左上角横坐标
    int  y;          //显示框左上角纵坐标
    int  uWidth;  //显示框宽度
    int  uHeight; //显示框高度
}PLAYRECT;
typedef PLAYRECT HWND;

NET_DVR_CLIENTINFO结构中的hPlayWnd = {0}则SDK仍取流,不进行解码显示,所以仍可以录像,但是不能设置hPlayWnd = 0(即NULL),否则非法结构地址会导致调用hPlayWnd.x等去判断的时候崩溃。

See Also

NET_DVR_PlayBackControl   NET_DVR_StopPlayBack   NET_DVR_SetPlayDataCallBack
NET_DVR_Login   NET_DVR_Login_V40

Reference Interface

扩展接口可见

NET_DVR_PlayBackByTime_V40