以下是SDK中的函数定义:
远程录像下载
JCSDK_API BOOL JCSDK_CALLTYPE JCSDK_DownloadRemoteFile(JCLink_t nLinkID, int nFileID);
参数:nLinkID:连接ID
nFileID:录像文件ID
返回值:返回调用结果
注意:录像文件数据通过事件回调返回
事件回调函数
typedef void (*JCEventCallback_t)(JCLink_t nLinkID, JCEventType etType, DWORD_PTR pData1, DWORD_PTR pData2, LPVOID pUserData);
参数:nLinkID: 连接ID
etType: 事件类型
pData1: 数据1
pData2: 数据2
pUserData:用户数据
注意:数据1、数据2携带数据随事件类型不同而不同
JCET_Connected pData1:返回连接类型(字符串)
JCET_ConnectOK 无数据
JCET_DownloadData pData1:数据块指针
pData2:数据块大小
....
因为本人不熟悉c++的指针,在回调函数里得到的pData1,pData2不知道该如何使用,怎样把下载的录像文件保存到本地硬盘,请高手们指点一下,非常感谢!
更多 0
1 定义一个回调函数的实现,如
Void JCEventCallback_DownLoad (JCLink_t nLinkID, JCEventType etType, DWORD_PTR pData1, DWORD_PTR pData2, LPVOID pUserData)
{
/**/Return;
}
然后在SDK里找到设置回调函数的接口,将函数地址传进去,例如:
SetDownLoadCallback(JCEventCallback_DownLoad, pUserData);
2 JCSDK_DownloadRemoteFile(JCLink_t nLinkID, int nFileID),调用此接口,如果返回结果TRUE,则将nLinkID,和nFileID传进pUserData;
3在回调函数里实现对文件的保存
Void JCEventCallback_DownLoad (JCLink_t nLinkID, JCEventType etType, DWORD_PTR pData1, DWORD_PTR pData2, LPVOID pUserData)
{
If(etType==JCET_DownloadData && pData2 >0)
{
//如果nLinkID等于你要下载的ID
//fwtite,将pData1的pData2字节的数据写到本地
}
Return;
}
4建议写一个结构体或者类,将相关信息放入,然后pUserData的值取结构体的指针,就OK了