现在二次开发流媒体,使用delphi语言//定义dll函数 unit HikStreamSDK;interface
uses
Windows;type pDataRec = function (sID, iUsrdata, iDataType: Longint; pData: PByte; iLen: Longint): Longint; cdecl;
pMsgBack = function (sID, opt, param1, param2: Longint): Longint; cdecl;
//作用:初始化ACE。该函数需要在窗口程序初始化时调用
Function InitStreamClientLib():LongInt;stdcall;external 'client.dll' name 'InitStreamClientLib';
//作用:关闭ACE。该函数需要在窗口程序关闭时时调用
Function FiniStreamClientLib():LongInt;stdcall;external 'client.dll' name 'FiniStreamClientLib';
//作用:创建Player
function HIKS_CreatePlayer(pSink: Pointer; pWndSiteHandle: HWND; pRecFunc: pDataRec;
pMsgFunc: pMsgBack = nil; TransMethod: Longint = 0): Longint; stdcall; external 'client.dll' name 'HIKS_CreatePlayer';
//作用:根据URL,连接服务器。
function HIKS_OpenURL(hSession: Longint; pszURL: PChar; iusrdata: Longint): Longint; stdcall; external 'client.dll' name 'HIKS_OpenURL';
//作用:播放。hSession 是Player 的标示。
function HIKS_Play(hSession:Integer) : Longint; stdcall; external 'client.dll' name 'HIKS_Play'; implementationend.
//代码 function MypDataRec(sID, iUsrdata, iDataType: Longint; pData: PByte; iLen: Longint): Longint; cdecl;
begin
end;function MypMsgBack (sID, opt, param1, param2: Longint): Longint; cdecl;
begin
end;procedure TMain_Frm.Button1Click(Sender: TObject);
var
m_hSession,nRet:Integer;
begin
nRet:=InitStreamClientLib();
Memo1.Lines.Add(IntToStr(nRet));
m_hSession:=HIKS_CreatePlayer(nil,Panel1.Handle,nil,MypMsgBack,1);
Memo1.Lines.Add(IntToStr(m_hSession));
nRet:=HIKS_OpenURL(m_hSession,Pchar('rtsp://192.168.1.155/192.168.1.207:8000:HIK-DS8000HC:0:0:admin:12345/av_stream'),0); Memo1.Lines.Add(IntToStr(nRet));
end; end. 问题出在HIKS_OpenURL函数,使用后直接报错,但是在流媒体服务端可以看到客户端已经登录了,不知错在那里??
uses
Windows;type pDataRec = function (sID, iUsrdata, iDataType: Longint; pData: PByte; iLen: Longint): Longint; cdecl;
pMsgBack = function (sID, opt, param1, param2: Longint): Longint; cdecl;
//作用:初始化ACE。该函数需要在窗口程序初始化时调用
Function InitStreamClientLib():LongInt;stdcall;external 'client.dll' name 'InitStreamClientLib';
//作用:关闭ACE。该函数需要在窗口程序关闭时时调用
Function FiniStreamClientLib():LongInt;stdcall;external 'client.dll' name 'FiniStreamClientLib';
//作用:创建Player
function HIKS_CreatePlayer(pSink: Pointer; pWndSiteHandle: HWND; pRecFunc: pDataRec;
pMsgFunc: pMsgBack = nil; TransMethod: Longint = 0): Longint; stdcall; external 'client.dll' name 'HIKS_CreatePlayer';
//作用:根据URL,连接服务器。
function HIKS_OpenURL(hSession: Longint; pszURL: PChar; iusrdata: Longint): Longint; stdcall; external 'client.dll' name 'HIKS_OpenURL';
//作用:播放。hSession 是Player 的标示。
function HIKS_Play(hSession:Integer) : Longint; stdcall; external 'client.dll' name 'HIKS_Play'; implementationend.
//代码 function MypDataRec(sID, iUsrdata, iDataType: Longint; pData: PByte; iLen: Longint): Longint; cdecl;
begin
end;function MypMsgBack (sID, opt, param1, param2: Longint): Longint; cdecl;
begin
end;procedure TMain_Frm.Button1Click(Sender: TObject);
var
m_hSession,nRet:Integer;
begin
nRet:=InitStreamClientLib();
Memo1.Lines.Add(IntToStr(nRet));
m_hSession:=HIKS_CreatePlayer(nil,Panel1.Handle,nil,MypMsgBack,1);
Memo1.Lines.Add(IntToStr(m_hSession));
nRet:=HIKS_OpenURL(m_hSession,Pchar('rtsp://192.168.1.155/192.168.1.207:8000:HIK-DS8000HC:0:0:admin:12345/av_stream'),0); Memo1.Lines.Add(IntToStr(nRet));
end; end. 问题出在HIKS_OpenURL函数,使用后直接报错,但是在流媒体服务端可以看到客户端已经登录了,不知错在那里??
解决方案 »
- delphi怎么批量去除MP3广告
- Winsock组件的Licence怎么弄?
- 想让DBEdit.DataSource的值为空,怎样设置?
- delphi7中如何设计图标?
- 如何制作类outlook的快捷导航工具栏,不想使用activebar activx控件,自己如何写这样的东西?
- 求助:如何将StringGrid的最左列画成宽为30,而其它列为defaultcolwidth???
- 数据库的连接判定?
- 关于ADO查询
- 关闭应用程序可以用Application.terminate,但关闭Dll用什么呢?
- 高手请相告好吗? ////
- for i:=0 to ADOQUERY.Fieldcount-1 do
- 自己设计了一个系统登录窗体,敬请各位达人指教!
pMsgBack = function (sID, opt, param1, param2: Longint): Longint; cdecl;
这两个回调函数的调用方式改成stdcall就行了