是海康卡的SDK
就是翻译成delphi版的pas原来没有做过这些,完全弄不懂谁能帮我翻译一下sdk下载
http://prj.csdn.net/upfile/adjunct/2010_02_04_201939579.rar
x-flashboy[ a ]163.com
就是翻译成delphi版的pas原来没有做过这些,完全弄不懂谁能帮我翻译一下sdk下载
http://prj.csdn.net/upfile/adjunct/2010_02_04_201939579.rar
x-flashboy[ a ]163.com
http://www.prowt.com/soft/showsoft.asp?id=44
HIKS_CreatePlayer
HIKS_OpenURL
这两个函数就可以了
CLIENT_API HSESSION __stdcall
HIKS_CreatePlayer(IHikClientAdviseSink* pSink, void* pWndSiteHandle,
pDataRec pRecFunc, pMsgBack pMsgFunc=0, int TransMethod=0)
作用:创建Player。pSink 为回调函数集合类指针, pWndSiteHandle 为显示
窗口句柄,cfun 为回调函数指针。如果pWndSiteHandle 是否为NULL 表示是否
被实时播放,如果pWndSiteHandle 为NULL,表示不被实时播放。cfun 指向处
理数据录像的函数,如果cfun 为NULL,表示不录像。pMsgFunc 为消息回调函
数句柄,它的功能和第一个参数pSink 表示的回调函数集合的功能一致,只不过
采用了不同形式,pMsgFunc 和pSink 不能同时为null。TransMethod 表示媒体
数据传输的方式,0 表示TCP,1 表示UDP,默认为TCP 传输,但如果在局域
网环境下,建议使用UDP。
回调函数:(i) IHikClientAdviseSink 形式见2.2.2 回调函数集的说明。
(ii) pDataRec typedef int (__stdcall *pDataRec)(int sid, int iusrdata, int
idatatype, char* pdata, int ilen)。sid 表示Session ID。iusrdata 暂时无用处。idatatype
表示回调上来的数据类型,0 表示头数据,1 表示流媒体数据。pdata 是回调上
来的数据的指针。ilen 表示数据的大小。
(iii) pMsgBack typedef int (__stdcall *pMsgBack)(int sid, int opt, int param1,
int param2)。Sid 表示SessionID。opt 表示消息类型。param1 和param2 视消息
的类型决定其有效性。不同的opt 对应了回调函数集IHikClientAdviseSink 中不
同的回调函数:
opt 回调函数 param1 param2
1 OnPosLength nLength 无效
2 OnPresentationOpened success 无效
3 OnPresentationClosed 无效 无效
4 OnPreSeek uOldTime uNewTime
5 OnPostSeek uOldTime uNewTime
6 OnStop 无效 无效
7 OnPause uTime 无效
8 OnBegin uTime 无效
9 OnRandomBegin uTime 无效
10 OnContacting pszHost 无效
11 OnPutErrorMsg pError 无效
12 OnBuffering uFlag uPercentComplete
13 OnChangeRate flag 无效
14 OnDisconnect 无效 无效
返回值:成功返回新建Player 的标示(int 类型,>=0),失败返回-1。
CLIENT_API int __stdcall HIKS_OpenURL(HSESSION hSession,const
char* pszURL,int iusrdata)
作用:根据URL,连接服务器。hSession 是Player 的标示,应该设置为
HIKS_CreatePlayer 成功返回的新建Player 的标示, pszURL 即为服务器的地址,
iusrdata 为用户数据。
返回值:成功返回1,失败返回-1。
HIKS_OpenURL 其他的我都翻译好了,这是这两个不会
type
pDataRec = function (sID, iUsrdata, iDataType: Longint; pData: PByte; iLen: Longint): Longint; stdcall;
pMsgBack = function (sID, opt, param1, param2: Longint): Longint; stdcall;function HIKS_CreatePlayer(pSink: Pointer; pWndSiteHandle: HWND; pRecFunc: pDataRec;
pMsgFunc: pMsgBack = nil; TransMethod: Longint = 0): Longint; stdcall; external 'client.dll';function HIKS_OpenURL(hSession: Longint; pszURL: PChar; iusrdata: Longint): Longint; stdcall; external 'client.dll';
最后的nRet是返回[-1]
是不是那里写错了?==============================================procedure TForm1.Button3Click(Sender: TObject);
var
m_hSession,nRet:Integer;
begin
InitStreamClientLib();
m_hSession:=HIKS_CreatePlayer(Panel1,Panel1.Handle,nil); Application.MessageBox(PChar(IntToStr(m_hSession)), '提示', MB_OK); nRet:=HIKS_OpenURL(m_hSession,'rtsp://192.168.1.111:554/127.0.0.1:5050:HIK-Cards:0:0:admin:12345/av_stream',0); Application.MessageBox(PChar(IntToStr(nRet)), '提示', MB_OK);
end;
pMsgFunc: pMsgBack = nil; TransMethod: Longint = 0): Longint; stdcall; external 'client.dll';
//作用:创建Player。
//参数:
// pSink 为回调函数集合类指针
// pWndSiteHandle 为显示窗口句柄
// cfun 为回调函数指针。如果pWndSiteHandle 是否为Nil 表示是否被实时播放,如果pWndSiteHandle 为Nil,表示不被实时播放。
// cfun 指向处理数据录像的函数,如果cfun 为Nil,表示不录像。
// pMsgFunc 为消息回调函数句柄,它的功能和第一个参数pSink 表示的回调函数集合的功能一致,只不过
// 采用了不同形式,pMsgFunc 和pSink 不能同时为Nil。
// TransMethod 表示媒体数据传输的方式,0 表示TCP,1 表示UDP,默认为TCP 传输,但如果在局域网环境下,建议使用UDP。
//返回值:成功返回新建Player 的标示(int 类型,>=0),失败返回-1。}你要么实现一个pSink, 要么实现一个pMsgFunc, 必选其一。
这个pSink在Delphi里我也不知道该如何实现,所以还是实现一个pMsgFunc吧。m_hSession := HIKS_CreatePlayer(nil, Panel1.Handle, nil, @MyMsgBack); ......function MyMsgBack(sID, opt, param1, param2: Longint): Longint; stdcall;
begin
//这里需要对回调消息进行处理
Result := 0;
end;
的话,在服务端没有连接的提示,如果用
HIKS_CreatePlayer(Sender, Panel1.Handle, nil, @MyMsgBack);
服务端会提示[加入],不过过了一些时间提示[退出]连接是用:
nRet:=HIKS_OpenURL(m_hSession,'rtsp://192.168.1.111:554/127.0.0.1:5050:HIK-Cards:0:0:admin:12345/av_stream',0);是不是已经成功连接,只是读取数据不对呢?
jadeluo能不能写一个实例呢,太谢谢你了