|
|
导航: |
论坛 -> 发布代码
斑竹:liumazi,ruralboy |
|
作者: |
|
2020/6/27 7:39:57 |
标题: |
海康威视及大华技术SDK C头文件转Delphi Pas文件 |
浏览:7215 |
|
加入我的收藏 |
楼主: |
视频监控领域两家著名的公司海康威视和大华技术,他们提供的SDK都不直接支持Delphi,据他们的说法是Delphi用户不够多,无法什么语言都支持。如果我们想用Delphi调用这些SDK里面的接口,那就需要自己先把其中C头文件转换成Delphi的pas文件。
海康威视SDK里面的HCNetSDK.h有50734行,而大华技术的dhnetsdk.h和dhconfigsdk.h分别有53335行和13846行,如果手工转的话,不知要转到何年何月,而且手工转不但容易出错、而且难以发现转错的地方。以前我曾经用手工方式试转了一下,感觉既机械又郁闷。后来在网上找了一些别人手工转的,但很不完整,只转其中极小的一部分,而且对应的sdk版本比较老。
最后是想用程序自动转。在网上找了一下C头文件转pas的工具,发现没有一个是好用的,不论是国外的还是国内的。最后没有办法,只能自己写程序来转换,花了我不少的时间。
现把这些转换后的文件共享出来,避免大家重复造轮子了。 这些文件我只是用到其中极少一部分的功能,没有做过完整的测试,仅供参考,有问题欢迎留言。
文件可以到盒子ftp里面下载, 在ftp里搜索“海康威视”或“大华”就能找到。
----------------------------------------------
- |
作者: |
|
2020/6/27 8:46:44 |
1楼: |
谢谢
----------------------------------------------
-
|
作者: |
|
2020/6/27 9:05:38 |
2楼: |
辛苦
----------------------------------------------
一卡通专家的中专家www.cnduh.com
|
作者: |
tiez (骑牛夜旅) |
★☆☆☆☆ |
-
|
普通会员 |
|
2020/6/27 10:34:07 |
4楼: |
我看了一下,你大华中有如下代码 {$IFDEF WIN64} LLONG = Int64; LDWORD = UInt64; {$ELSE} LLONG = LONG; LDWORD = DWORD; 然后多数地方对应的句柄都是用LLONG来定义的 而海康中没有相关的定义转换,我很久前看过海康的代码,好像海康直接使用的LONG,这个LONG在什么地方做了定义,64位系统中也是Int64的,我记不清了,但我在头文件转换时是这样定义的 THIK_NET_DVR_Login_V30 = function(sDVRIP: PAnsiChar; wDVRPort: Word; sUserName, sPassword: PAnsiChar; var lpDeviceInfo: THIK_NET_DVR_DEVICEINFO_V30): NativeInt; stdcall; THIK_NET_DVR_Logout_V30 = function(lUserID: NativeInt): BOOL; stdcall; 在实际使用中做64位或32位都未发现问题,应该海康和大华在头文件中确实使用了LONG来表示句柄。
后来我做这个始终有点担心,就在头部加了重定义的部分 THikNet_Int = integer; THikNet_Long = Long; THikNet_Handle = THikNet_Long;
TDahNet_Int = integer; TDahNet_Long = integer; TDahNet_LLong = NativeInt; TDahNet_Handle = TDahNet_LLong; 但海康和大华都还有一套解码库,它们的头部我是这样定义的 THikPlay_Int = integer; THikPlay_Long = Long; THikPlay_Port = THikPlay_Long;
TDahPlay_Int = integer; TDahPlay_Long = integer; TDahPlay_Port = TDahPlay_Long; 其实我还做有别的一些厂商的SDK接口,为了这个32位和64位的问题早就看晕了
有没有海康自己的人把这些类型的宏定义说明一下啊,有的定义部分在一些版本真的找不到了
----------------------------------------------
-
|
作者: |
|
2020/6/27 10:48:11 |
5楼: |
我可以负责的讲,楼主是个好人。造福大家。。。
----------------------------------------------
山外青山楼外楼,能人背后有能人弄..
|
作者: |
kaida (kaida) |
★☆☆☆☆ |
-
|
盒子活跃会员 |
|
2020/6/27 11:05:15 |
6楼: |
楼主好人,十分感谢!
----------------------------------------------
http://down.desei.com.cn/down/1041485/MyWeb/VCLs.html
|
作者: |
|
2020/6/27 13:36:06 |
7楼: |
楼主热心,我之前也自己手工转过,真心累
----------------------------------------------
只会简单使用,并未精通深入
|
作者: |
bdl1 (bdl1) |
▲▲▲▲▲ |
-
|
普通会员 |
|
2020/6/27 14:19:35 |
8楼: |
向作者敬礼!
----------------------------------------------
-我的博客
|
作者: |
|
2020/6/27 15:11:20 |
9楼: |
楼主好人,十分感谢!
----------------------------------------------
http://www.cnblogs.com/tulater/
|
作者: |
|
2020/6/27 17:14:38 |
11楼: |
我曾经试过用C2Pascal来转,但各种报错太多,基本上帮不上什么忙。 海康威视sdk里面有宏函数、重复的常量定义、结构体名称和函数名称重复、函数定义里面含有回调函数的定义、结构体定义里面含有联合体的定义,而这些联合体定义又含有结构体的定义,等等,特殊的、复杂的地方太多, C2Pascal应付不过来,我试用了一下就放弃了。
----------------------------------------------
-
|
作者: |
bdl1 (bdl1) |
▲▲▲▲▲ |
-
|
普通会员 |
|
2020/6/27 17:16:11 |
12楼: |
bluestorm:试下Chet,期待结果。
----------------------------------------------
-我的博客
|
作者: |
|
2020/6/27 17:21:28 |
13楼: |
我自己都写了转换程序,就没有必要用chet了。试下Chet的事情,为什么你自己不试一下?
----------------------------------------------
-
|
作者: |
xjia (xjia) |
★☆☆☆☆ |
-
|
盒子活跃会员 |
|
2020/6/27 22:03:15 |
14楼: |
楼主辛苦了,感谢楼主分享~~~
----------------------------------------------
-
|
作者: |
421 (421) |
★☆☆☆☆ |
-
|
盒子活跃会员 |
|
2020/6/28 8:49:44 |
15楼: |
感谢分享~~ 楼主辛苦了 曾经用过各种工具转换,出错太多,后来索性用到哪个就手工添加,一直没有如此完整的单元文件
----------------------------------------------
-
|
作者: |
|
2020/6/28 10:04:28 |
16楼: |
我试过手工转,但后来发现有转错的地方,如数组下标忘了减1了,因此对手工转没什么信心,才下定决心用程序转。由于第一次写这样的程序,而且完全没有参考别人的转换程序,以为这个程序比较简单,直到写的过程中,才发现工作量和难度远超原来的估计,耗费了一个多月的时间,还加班加点,真是高强度的脑力活。
----------------------------------------------
-
|
作者: |
|
2020/7/22 14:39:17 |
17楼: |
楼主好人
----------------------------------------------
我和我追逐的梦,擦肩而过
|
作者: |
|
2020/7/22 15:15:15 |
18楼: |
mark
----------------------------------------------
-
|
作者: |
|
2020/8/5 12:09:28 |
19楼: |
mark,delphi海康车牌识别做过,也走了不少弯路,为支持楼主,有需要的朋友可以联系我,不收费
----------------------------------------------
-
|
作者: |
|
2020/8/5 14:09:24 |
20楼: |
@shuaialang ,海康车牌识别,能发一份demo吗?37540862@qq.com
----------------------------------------------
山外青山楼外楼,能人背后有能人弄..
|
作者: |
glwang (glwang) |
★☆☆☆☆ |
-
|
盒子活跃会员 |
|
2020/8/5 14:31:51 |
21楼: |
19楼:同求车牌识别代码 85269698@qq.com
----------------------------------------------
|
作者: |
|
2020/8/6 8:33:11 |
22楼: |
@shuaialang :同求车牌识别代码 14625154@qq.com 谢谢!!
----------------------------------------------
-
|
作者: |
|
2020/8/6 8:41:43 |
23楼: |
感谢分享!
----------------------------------------------
-
|
作者: |
|
2020/8/13 10:18:35 |
24楼: |
支持楼主大侠!!!
----------------------------------------------
kittyapp
|
作者: |
|
2020/9/29 9:36:54 |
25楼: |
支持下楼主,感谢分享。
----------------------------------------------
-
|
作者: |
|
2020/9/29 14:37:27 |
26楼: |
确实,现在监控、AI这么发达,值班人员面临下岗大潮。 只要把摄像头接到云上,一个人就能同时监控几百个摄像头有没有异常,有异常就通知人处理。 物业、没有物业的小区、停车场、商场购物中心、家里,WOW,影响面好大
----------------------------------------------
软件是什么,相信很多人都说不清。
|
作者: |
|
2020/9/29 20:39:42 |
27楼: |
重复的劳动,全被机器代替了。
----------------------------------------------
山外青山楼外楼,能人背后有能人弄..
|
作者: |
|
2020/10/12 19:52:13 |
28楼: |
新版本出来了,包括人脸考勤机的体温数据,如果有空,希望更新下。 非常感谢
----------------------------------------------
Delphi forever
|
作者: |
|
2020/10/13 10:51:19 |
29楼: |
海康PlayMpeg4.pas 来源:https://gitee.com/afrusrsc/HCNetSDK/blob/master/src/PlayMpeg4.pas {********** 名 称:海康威视播放库SDK 作 者:jxq 方 式: 静态调用 **********} unit PlayMpeg4;
interface
uses Winapi.Windows;
{======== 常量定义 ==========}
const {-------- 播放库错误码 ----------} PLAYM4_NOERROR = 0; //没有错误 PLAYM4_PARA_OVER = 1; //输入参数非法 PLAYM4_ORDER_ERROR = 2; //调用顺序不对 PLAYM4_TIMER_ERROR = 3; //多媒体时钟设置失败 PLAYM4_DEC_VIDEO_ERROR = 4; //视频解码失败 PLAYM4_DEC_AUDIO_ERROR = 5; //音频解码失败 PLAYM4_ALLOC_MEMORY_ERROR = 6; //分配内存失败 PLAYM4_OPEN_FILE_ERROR = 7; //文件操作失败 PLAYM4_CREATE_OBJ_ERROR = 8; //创建线程事件等失败 PLAYM4_CREATE_DDRAW_ERROR = 9; //创建DierctDraw失败 PLAYM4_CREATE_OFFSCREEN_ERROR = 10; //创建后端缓存失败 PLAYM4_BUF_OVER = 11; //缓冲区满,输入流失败 PLAYM4_CREATE_SOUND_ERROR = 12; //创建音频设备失败 PLAYM4_SET_VOLUME_ERROR = 13; //设置音量失败 PLAYM4_SUPPORT_FILE_ONLY = 14; //只能在播放文件时才能使用此接口 PLAYM4_SUPPORT_STREAM_ONLY = 15; //只能在播放流时才能使用此接口 PLAYM4_SYS_NOT_SUPPORT = 16; //不支持 PLAYM4_FILEHEADER_UNKNOWN = 17; //没有文件头 PLAYM4_VERSION_INCORRECT = 18; //解码器和编码器版本不对应 PALYM4_INIT_DECODER_ERROR = 19; //初始化解码器失败 PLAYM4_CHECK_FILE_ERROR = 20; //文件太短或码流无法识别 PLAYM4_INIT_TIMER_ERROR = 21; //初始化多媒体时钟失败 PLAYM4_BLT_ERROR = 22; //位拷贝失败 PLAYM4_UPDATE_ERROR = 23; //显示overlay失败 PLAYM4_OPEN_FILE_ERROR_MULTI = 24; //打开文件失败,流类型是复合流 PLAYM4_OPEN_FILE_ERROR_VIDEO = 25; //打开文件失败,流类型是视频流 PLAYM4_JPEG_COMPRESS_ERROR = 26; //JPEG压缩失败 PLAYM4_EXTRACT_NOT_SUPPORT = 27; //文件不支持 PLAYM4_EXTRACT_DATA_ERROR = 28; //数据错误 PLAYM4_SECRET_KEY_ERROR = 29; //解码密钥错误 PLAYM4_DECODE_KEYFRAME_ERROR = 30; //解码关键帧失败 PLAYM4_NEED_MORE_DATA = 31; //数据不足 PLAYM4_INVALID_PORT = 32; //无效端口号 PLAYM4_NOT_FIND = 33; //查找失败 PLAYM4_NEED_LARGER_BUFFER = 34; //需要更大的缓冲区 PLAYM4_FAIL_UNKNOWN = 99; //未知的错误 {-------- 鱼眼部分错误码 ----------} PLAYM4_FEC_ERR_ENABLEFAIL = 100; //鱼眼模块加载失败 PLAYM4_FEC_ERR_NOTENABLE = 101; //鱼眼模块没有加载 PLAYM4_FEC_ERR_NOSUBPORT = 102; //子端口没有分配 PLAYM4_FEC_ERR_PARAMNOTINIT = 103; //没有初始化对应端口的参数 PLAYM4_FEC_ERR_SUBPORTOVER = 104; //子端口已经用完 PLAYM4_FEC_ERR_EFFECTNOTSUPPORT = 105; //该安装方式下这种效果不支持 PLAYM4_FEC_ERR_INVALIDWND = 106; //非法的窗口 PLAYM4_FEC_ERR_PTZOVERFLOW = 107; //PTZ位置越界 PLAYM4_FEC_ERR_RADIUSINVALID = 108; //圆心参数非法 PLAYM4_FEC_ERR_UPDATENOTSUPPORT = 109; //指定的安装方式和矫正效果,该参数更新不支持 PLAYM4_FEC_ERR_NOPLAYPORT = 110; //播放库端口没有启用 PLAYM4_FEC_ERR_PARAMVALID = 111; //参数为空 PLAYM4_FEC_ERR_INVALIDPORT = 112; //非法子窗口 PLAYM4_FEC_ERR_PTZZOOMOVER = 113; //PTZ矫正范围越界 PLAYM4_FEC_ERR_OVERMAXPORT = 114; //矫正通道饱和,最大支持的矫正通道为四个 PLAYM4_FEC_ERR_ENABLED = 115; //该端口已经启用了鱼眼模块 PLAYM4_FEC_ERR_D3DACCENOTENABLE = 116; //D3D加速没有开启 PLAYM4_FEC_ERR_PLACETYPE = 117; //安装方式不正确;一个播放库port需要对应一种安装方式 PLAYM4_FEC_ERR_CorrectType = 118; //矫正方式错误:如矫正方式已有,则不能开多个;比如一个播放库port设定除了PTZ和鱼眼半球矫正方式外,其他的矫正方式则只能开一路;设置180度矫正不能和PTZ矫正仪器开,半球矫正与其他矫正则无关联性。 PLAYM4_FEC_ERR_NULLWND = 119; //鱼眼窗口为NULL
{-------- 流播放模式 ----------} STREAME_REALTIME = 0; //此模式(默认)下, 会尽量保正实时性, 防止数据阻塞; 而且数据检查严格 STREAME_FILE = 1; //此模式下按时间戳播放 {-------- 缓冲数据流大小 ----------} SOURCE_BUF_MIN = 1024 * 50; //缓冲数据流缓冲最小值 SOURCE_BUF_MAX = 1024 * 100000; //缓冲数据流缓冲最大值
{======== 结构体定义 ==========}
type {-------- 交互信息结构 --------} PLAYM4_SESSION_INFO = packed record nSessionInfoType: Integer; nSessionInfoLen: Integer; pSessionInfoData: Pointer; end;
/// <summary>索引回调函数</summary> /// <param name="nPort" IO="Out">播放器通道号</param> /// <param name="nUser" IO="Out">用户数据</param> FileRefDoneCB = procedure(nPort: DWORD; nUser: DWORD); stdcall;
{======== 接口函数 ==========}
{-------- 错误码 ----------}
/// <summary>获取错误号</summary> /// <param name="nPort" IO="In">播放通道号</param> /// <returns>错误码</returns> function PlayM4_GetLastError(nPort: LONG): DWORD; stdcall; external 'PlayCtrl.dll';
{-------- 端口号 ----------}
/// <summary>获取未使用的通道号</summary> /// <param name="nPort" IO="Out">播放通道号,指向用于获取端口号的LONG型变量指针</param> /// <returns>True成功,False失败</returns> function PlayM4_GetPort(nPort: PLongint): BOOL; stdcall; external 'PlayCtrl.dll';
/// <summary>释放已使用的通道号</summary> /// <param name="nPort" IO="In">播放通道号</param> /// <returns>True成功,False失败</returns> function PlayM4_FreePort(nPort: LONG): BOOL; stdcall; external 'PlayCtrl.dll';
{-------- 文件操作 ----------}
/// <summary>打开文件</summary> /// <param name="nPort" IO="In">播放通道号</param> /// <param name="sFileName" IO="In">文件名</param> /// <returns>True成功,False失败</returns> function PlayM4_OpenFile(nPort: LONG; sFileName: LPSTR): BOOL; stdcall; external 'PlayCtrl.dll';
/// <summary>关闭文件</summary> /// <param name="nPort" IO="In">播放通道号</param> /// <returns>True成功,False失败</returns> function PlayM4_CloseFile(nPort: LONG): BOOL; stdcall; external 'PlayCtrl.dll';
{-------- 流操作 ----------}
/// <summary>设置流播放模式</summary> /// <param name="nPort" IO="In">播放通道号</param> /// <param name="nMode" IO="In">流播放模式</param> /// <returns>True成功,False失败</returns> /// <remarks>必须在播放之前设置</remarks> function PlayM4_SetStreamOpenMode(nPort: LONG; nMode: DWORD): BOOL; stdcall; external 'PlayCtrl.dll';
/// <summary>获取流播放模式</summary> /// <param name="nPort" IO="In">播放通道号</param> /// <returns>STREAME_REALTIME或STREAME_FILE</returns> function PlayM4_GetStreamOpenMode(nPort: LONG): LONG; stdcall; external 'PlayCtrl.dll';
/// <summary>打开流</summary> /// <param name="nPort" IO="In">播放通道号</param> /// <param name="pFileHeadBuf" IO="In">文件头数据</param> /// <param name="nSize" IO="In">文件头长度</param> /// <param name="nBufPoolSize" IO="In">设置播放器中存放数据流的缓冲区大小。范围是SOURCE_BUF_MIN~ SOURCE_BUF_MAX</param> /// <returns>True成功,False失败</returns> /// <remarks>流开关接口和文件开关接口不能交叉使用</remarks> function PlayM4_OpenStream(nPort: LONG; pFileHeadBuf: PByte; nSize, nBufPoolSize: DWORD): BOOL; stdcall; external 'PlayCtrl.dll';
/// <summary>关闭流</summary> /// <param name="nPort" IO="In">播放通道号</param> /// <returns>True成功,False失败</returns> function PlayM4_CloseStream(nPort: LONG): BOOL; stdcall; external 'PlayCtrl.dll';
/// <summary>输入流数据</summary> /// <param name="nPort" IO="In">播放通道号</param> /// <param name="pBuf" IO="In">流数据缓冲区地址</param> /// <param name="nSize" IO="In">流数据缓冲区大小</param> /// <returns>True表示已经输入数据。False表示失败</returns> function PlayM4_InputData(nPort: LONG; pBuf: PByte; nSize: DWORD): BOOL; stdcall; external 'PlayCtrl.dll';
/// <summary>打开流(以协议的方式)</summary> /// <param name="nPort" IO="In">播放通道号</param> /// <param name="nProtocolType" IO="In">协议类型,若取值为PLAYM4_PROTOCOL_RTSP,表示RTSP协议</param> /// <param name="pstSessionInfo" IO="In">协议信息结构体,若取值为PLAYM4_SESSION_INFO_SDP,表示nSessionInfoTypeSDP信息</param> /// <param name="nBufPoolSize" IO="In">协议数据大小</param> /// <returns>True成功,False失败</returns> function PlayM4_OpenStreamAdvanced(nPort: LONG; nProtocolType: Integer; pstSessionInfo: PLAYM4_SESSION_INFO; nBufPoolSize: DWORD): BOOL; stdcall; external 'PlayCtrl.dll';
{-------- 播放控制 ----------}
/// <summary>开启播放</summary> /// <param name="nPort" IO="In">播放通道号</param> /// <param name="hWnd" IO="In">播放视频的窗口句柄</param> /// <returns>True成功,False失败</returns> function PlayM4_Play(nPort: LONG; HWND: HWND): BOOL; stdcall; external 'PlayCtrl.dll';
/// <summary>关闭播放</summary> /// <param name="nPort" IO="In">播放通道号</param> /// <returns>True成功,False失败</returns> function PlayM4_Stop(nPort: LONG): BOOL; stdcall; external 'PlayCtrl.dll';
/// <summary>暂停/恢复播放</summary> /// <param name="nPort" IO="In">播放通道号</param> /// <param name="nPause" IO="In">1:暂停,0:恢复</param> /// <returns>True成功,False失败</returns> function PlayM4_Pause(nPort: LONG; nPause: DWORD): BOOL; stdcall; external 'PlayCtrl.dll';
/// <summary>慢速播放</summary> /// <param name="nPort" IO="In">播放通道号</param> /// <returns>True成功,False失败</returns> /// <remarks>每次调用将使当前播放速度慢一倍;最多调用4次;要恢复正常播放调用PlayM4_Play(),从当前位置开始正常播放</remarks> function PlayM4_Slow(nPort: LONG): BOOL; stdcall; external 'PlayCtrl.dll';
/// <summary>快速播放</summary> /// <param name="nPort" IO="In">播放通道号</param> /// <returns>True成功,False失败</returns> /// <remarks>每次调用将使当前播放速度加快一倍,正常速度调用此接口最多调用4次;要恢复正常播放调用PlayM4_Play(),从当前位置开始正常播放;高清码流在高倍速播放时,由于受到解码和显示的限制,可能达不到所设置的速度</remarks> function PlayM4_Fast(nPort: LONG): BOOL; stdcall; external 'PlayCtrl.dll';
/// <summary>单帧前进</summary> /// <param name="nPort" IO="In">播放通道号</param> /// <returns>True成功,False失败</returns> /// <remarks>恢复正常播放需要调用PlayM4_Play()</remarks> function PlayM4_OneByOne(nPort: LONG): BOOL; stdcall; external 'PlayCtrl.dll';
/// <summary>单帧回退</summary> /// <param name="nPort" IO="In">播放通道号</param> /// <returns>True成功,False失败</returns> /// <remarks>只支持文件播放,且必须在文件索引生成之后才能调用,暂时不支持TS封装文件,且需要文件帧号是连续的</remarks> function PlayM4_OneByOneBack(nPort: LONG): BOOL; stdcall; external 'PlayCtrl.dll';
/// <summary>以独占方式打开声音</summary> /// <param name="nPort" IO="In">播放通道号</param> /// <returns>True成功,False失败</returns> function PlayM4_PlaySound(nPort: LONG): BOOL; stdcall; external 'PlayCtrl.dll';
/// <summary>关闭声音(独占方式)</summary> /// <returns>True成功,False失败</returns> function PlayM4_StopSound: BOOL; stdcall; external 'PlayCtrl.dll';
/// <summary>以共享方式打开声音</summary> /// <param name="nPort" IO="In">播放通道号</param> /// <returns>True成功,False失败</returns> /// <remarks>建议PlayM4_PlaySound,PlayM4_PlaySoundShare不要混用。播放低帧率文件时,必须先开启声音再播放,否则可能造成声音播放不正常</remarks> function PlayM4_PlaySoundShare(nPort: LONG): BOOL; stdcall; external 'PlayCtrl.dll';
/// <summary>关闭声音(共享方式)</summary> /// <param name="nPort" IO="In">播放通道号</param> /// <returns>True成功,False失败</returns> function PlayM4_StopSoundShare(nPort: LONG): BOOL; stdcall; external 'PlayCtrl.dll';
/// <summary>设置音量</summary> /// <param name="nPort" IO="In">播放通道号</param> /// <param name="nVolume" IO="In">音量值,范围0-$FFFF</param> /// <returns>True成功,False失败</returns> function PlayM4_SetVolume(nPort: LONG; nVolume: Word): BOOL; stdcall; external 'PlayCtrl.dll';
/// <summary>获取音量</summary> /// <param name="nPort" IO="In">播放通道号</param> /// <returns>音量值。这里的音量是指声卡输出的主音量,会影响到其他的声音应用</returns> function PlayM4_GetVolume(nPort: LONG): Word; stdcall; external 'PlayCtrl.dll';
{-------- 文件定位 ----------}
/// <summary>获取文件当前播放位置(百分比)</summary> /// <param name="nPort" IO="In">播放通道号</param> /// <returns>范围0~100%</returns> function PlayM4_GetPlayPos(nPort: LONG): Single; stdcall; external 'PlayCtrl.dll';
/// <summary>设置文件当前播放位置(百分比)</summary> /// <param name="nPort" IO="In">播放通道号</param> /// <param name="fRelativePos" IO="In">播放位置,范围:0~100%</param> /// <returns>True成功,False失败</returns> function PlayM4_SetPlayPos(nPort: LONG; fRelativePos: Single): BOOL; stdcall; external 'PlayCtrl.dll';
{-------- 文件索引 ----------}
/// <summary>设置建立索引回调</summary> /// <param name="nPort" IO="In">播放通道号</param> /// <param name="pFileRefDone" IO="In">索引回调函数</param> /// <param name="nUser" IO="In">用户指针</param> /// <returns>True成功,False失败</returns> function PlayM4_SetFileRefCallBack(nPort: LONG; pFileRefDone: FileRefDoneCB; nUser: DWORD): BOOL; stdcall; external 'PlayCtrl.dll';
implementation
end.
----------------------------------------------
只会简单使用,并未精通深入
|
作者: |
|
2020/12/3 17:34:09 |
30楼: |
@shuaialang ,海康车牌识别,能发一份demo吗?459242217@qq.com
----------------------------------------------
-
|
作者: |
|
2020/12/3 20:20:53 |
31楼: |
@shuaialang ,海康车牌识别,能发一份demo吗?14277268@qq.com
----------------------------------------------
-
|
作者: |
|
2020/12/4 12:04:01 |
32楼: |
@shuaialang ,海康车牌识别,请发一份demo,谢谢 945168347@qq.com
----------------------------------------------
-
|
作者: |
glwang (glwang) |
★☆☆☆☆ |
-
|
盒子活跃会员 |
|
2020/12/4 16:14:54 |
33楼: |
大家别留邮箱了,到现在也没有收到海康车牌识别的代码
----------------------------------------------
|
作者: |
|
2020/12/4 16:30:11 |
34楼: |
代码能不能收到不知道,但是广告一定有。 很多爬虫,天天爬邮箱。
----------------------------------------------
(C)(P)Flying Wang
|
作者: |
|
2021/1/11 16:01:04 |
35楼: |
感谢分享~~ 以前试过用工具转换,简直惨不忍睹,后来只能降低到delphi7用官方的pas文件
----------------------------------------------
-
|
作者: |
|
2021/1/11 16:22:09 |
36楼: |
官方什么时候出过Pas文件? 如果有官方Pas文件,为什么只能用Delphi 7
----------------------------------------------
-
|
作者: |
|
2021/1/14 14:21:34 |
37楼: |
建议作者放到 Gitee 或者Github上共享,让更多的delphi爱好者受益
----------------------------------------------
-
|
作者: |
ywqs (roger) |
★☆☆☆☆ |
-
|
盒子活跃会员 |
|
2021/2/15 17:23:09 |
38楼: |
感觉分享,非常好,比自己手工转好多了,全面,本来用一个转一个
----------------------------------------------
-
|
作者: |
|
2021/2/16 19:44:20 |
39楼: |
福彩3D 体彩排列5
----------------------------------------------
-
|
作者: |
|
2021/3/2 12:39:11 |
40楼: |
@bluestorm 官方什么时候出过Pas文件? 如果有官方Pas文件,为什么只能用Delphi 7 |
-- 官方在早期的时候,有出过Pas版,后来Delphi没落后就不维护了。因为当时的PAS文件是在D7下的,所以用XE以后的版本处理,会产生错误。如某些类型定义发生了改变。
----------------------------------------------
-
|
作者: |
|
2021/3/3 9:42:32 |
41楼: |
大华的SDK都提供Go语言版了。反观Delphi的境况、生态有多糟,大家都不支持这个开发平台了,囧、惨!
----------------------------------------------
-
|
作者: |
|
2021/3/8 16:05:29 |
42楼: |
对应的海康sdk https://download.hikvision.com/UploadFile/SDK/CH-HCNetSDKV6.1.4.6_build20191220_Win32.zip
----------------------------------------------
-
|
作者: |
|
2022/8/7 16:05:55 |
44楼: |
呵,谢谢,正好有需要。 https://wiki.freepascal.org/C_to_Pascal
----------------------------------------------
-
|
作者: |
|
2023/10/27 22:34:06 |
45楼: |
我用了下有2个问题请教大神: 1.我用的是delphiXE5 编译时提示没有PLong类型; 2.我将接口单元引入工程,调用接口时出错,不知何故? 请指教!!不甚感激! procedure THMainFrm.Button1Click(Sender: TObject); Var BResu: Boolean; int: Integer;
UserP: LPNET_DVR_USER_LOGIN_INFO; MacsP: LPNET_DVR_DEVICEINFO_V40; begin BResu := NET_DVR_Init(); //执行此时报错:External exception C06D007E.
NET_DVR_SetConnectTime(2000, 1); NET_DVR_SetReconnect(10000, true); if not BResu then Exit; end;
----------------------------------------------
-
|
作者: |
|
2023/10/28 6:03:22 |
46楼: |
…… 被禁用帐号,帖子内容自动屏蔽! ……
----------------------------------------------
呆湾傻冒
|
作者: |
|
2023/10/30 8:57:55 |
47楼: |
海康威视sdk pas文件最新版本在这里: https://bbs.2ccc.com/topic.asp?topicid=606222(31楼)
Delphi 10.3里面PLong的定义是PLong = ^Long = ^LongInt
----------------------------------------------
-
|
|