├── .gitignore
├── .vscode
└── settings.json
├── README.md
├── logo.png
└── src
├── QuickNV.HikvisionNetSDK.Api.Sample
├── Program.cs
└── QuickNV.HikvisionNetSDK.Api.Sample.csproj
├── QuickNV.HikvisionNetSDK.Api
├── HvChannel.cs
├── HvDeviceConfig.cs
├── HvHdConfig.cs
├── HvIpChannel.cs
├── HvLogLevel.cs
├── HvNetworkConfig.cs
├── HvPTZCommand.cs
├── HvPreset.cs
├── HvRemoteFile.cs
├── HvRtspPathFormat.cs
├── HvSession.cs
├── HvStreamType.cs
├── QuickNV.HikvisionNetSDK.Api.csproj
├── README.md
├── Service
│ ├── ChannelService.cs
│ ├── ConfigService.cs
│ ├── PictureService.cs
│ ├── SdkService.cs
│ └── VideoFileService.cs
└── Utils
│ └── StringUtils.cs
├── QuickNV.HikvisionNetSDK.Generator
├── CHCNetSDK.cs
├── ErrorInfo.cs
├── Program.cs
└── QuickNV.HikvisionNetSDK.Generator.csproj
├── QuickNV.HikvisionNetSDK.Native
├── QuickNV.HikvisionNetSDK.Native.nuspec
├── build
│ └── net45
│ │ └── Hikvision.NetSDK.Native.props
├── lib
│ └── netstandard1.0
│ │ └── _._
├── logo.png
└── runtimes
│ ├── linux-arm64
│ └── native
│ │ ├── HCNetSDKCom
│ │ ├── libAudioIntercom.so
│ │ ├── libHCAlarm.so
│ │ ├── libHCCoreDevCfg.so
│ │ ├── libHCDisplay.so
│ │ ├── libHCGeneralCfgMgr.so
│ │ ├── libHCIndustry.so
│ │ ├── libHCPlayBack.so
│ │ ├── libHCPreview.so
│ │ ├── libHCVoiceTalk.so
│ │ ├── libStreamTransClient.so
│ │ ├── libSystemTransform.so
│ │ ├── libanalyzedata.so
│ │ └── libiconv.so.2
│ │ ├── HCNetSDK_Log_Switch.xml
│ │ ├── libAudioRender.so
│ │ ├── libHCCore.so
│ │ ├── libPlayCtrl.so
│ │ ├── libSuperRender.so
│ │ ├── libcrypto.so
│ │ ├── libcrypto.so.1.1
│ │ ├── libhcnetsdk.so
│ │ ├── libhpr.so
│ │ ├── libssl.so
│ │ ├── libssl.so.1.1
│ │ └── libz.so
│ ├── linux-x64
│ └── native
│ │ ├── HCNetSDKCom
│ │ ├── libAudioIntercom.so
│ │ ├── libHCAlarm.so
│ │ ├── libHCCoreDevCfg.so
│ │ ├── libHCDisplay.so
│ │ ├── libHCGeneralCfgMgr.so
│ │ ├── libHCIndustry.so
│ │ ├── libHCPlayBack.so
│ │ ├── libHCPreview.so
│ │ ├── libHCVoiceTalk.so
│ │ ├── libStreamTransClient.so
│ │ ├── libSystemTransform.so
│ │ ├── libanalyzedata.so
│ │ └── libiconv2.so
│ │ ├── HCNetSDK_Log_Switch.xml
│ │ ├── libAudioRender.so
│ │ ├── libHCCore.so
│ │ ├── libNPQos.so
│ │ ├── libPlayCtrl.so
│ │ ├── libSuperRender.so
│ │ ├── libcrypto.so.1.1
│ │ ├── libhcnetsdk.so
│ │ ├── libhpr.so
│ │ ├── libopenal.so.1
│ │ ├── libssl.so.1.1
│ │ └── libz.so
│ └── win-x64
│ └── native
│ ├── AudioRender.dll
│ ├── GdiPlus.dll
│ ├── HCCore.dll
│ ├── HCNetSDK.dll
│ ├── HCNetSDKCom
│ ├── AnalyzeData.dll
│ ├── AudioIntercom.dll
│ ├── AudioRender.dll
│ ├── HCAlarm.dll
│ ├── HCCoreDevCfg.dll
│ ├── HCDisplay.dll
│ ├── HCGeneralCfgMgr.dll
│ ├── HCIndustry.dll
│ ├── HCPlayBack.dll
│ ├── HCPreview.dll
│ ├── HCVoiceTalk.dll
│ ├── OpenAL32.dll
│ ├── StreamTransClient.dll
│ ├── SystemTransform.dll
│ └── libiconv2.dll
│ ├── HXVA.dll
│ ├── HmMerge.dll
│ ├── LocalSensorAdd.dat
│ ├── LocalXml.zip
│ ├── MP_Render.dll
│ ├── NPQos.dll
│ ├── OpenAL32.dll
│ ├── PlayCtrl.dll
│ ├── SuperRender.dll
│ ├── YUVProcess.dll
│ ├── hlog.dll
│ ├── hpr.dll
│ ├── libcrypto-1_1-x64.dll
│ ├── libmmd.dll
│ ├── libssl-1_1-x64.dll
│ └── zlib1.dll
├── QuickNV.HikvisionNetSDK.Sample
├── Program.cs
└── QuickNV.HikvisionNetSDK.Sample.csproj
├── QuickNV.HikvisionNetSDK.sln
└── QuickNV.HikvisionNetSDK
├── Defines.cs
├── Errors.cs
├── HikvisionException.cs
├── HikvisionExtensions.cs
├── Methods.cs
├── Methods_Linux.cs
├── Methods_Win.cs
├── QuickNV.HikvisionNetSDK.csproj
└── README.md
/.gitignore:
--------------------------------------------------------------------------------
1 | ## Ignore Visual Studio temporary files, build results, and
2 | ## files generated by popular Visual Studio add-ons.
3 | ##
4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
5 |
6 | # User-specific files
7 | *.rsuser
8 | *.suo
9 | *.user
10 | *.userosscache
11 | *.sln.docstates
12 |
13 | # User-specific files (MonoDevelop/Xamarin Studio)
14 | *.userprefs
15 |
16 | # Mono auto generated files
17 | mono_crash.*
18 |
19 | # Build results
20 | [Dd]ebug/
21 | [Dd]ebugPublic/
22 | [Rr]elease/
23 | [Rr]eleases/
24 | x64/
25 | x86/
26 | [Aa][Rr][Mm]/
27 | [Aa][Rr][Mm]64/
28 | bld/
29 | [Bb]in/
30 | [Oo]bj/
31 | [Ll]og/
32 | [Ll]ogs/
33 |
34 | # Visual Studio 2015/2017 cache/options directory
35 | .vs/
36 | # Uncomment if you have tasks that create the project's static files in wwwroot
37 | #wwwroot/
38 |
39 | # Visual Studio 2017 auto generated files
40 | Generated\ Files/
41 |
42 | # MSTest test Results
43 | [Tt]est[Rr]esult*/
44 | [Bb]uild[Ll]og.*
45 |
46 | # NUnit
47 | *.VisualState.xml
48 | TestResult.xml
49 | nunit-*.xml
50 |
51 | # Build Results of an ATL Project
52 | [Dd]ebugPS/
53 | [Rr]eleasePS/
54 | dlldata.c
55 |
56 | # Benchmark Results
57 | BenchmarkDotNet.Artifacts/
58 |
59 | # .NET Core
60 | project.lock.json
61 | project.fragment.lock.json
62 | artifacts/
63 |
64 | # StyleCop
65 | StyleCopReport.xml
66 |
67 | # Files built by Visual Studio
68 | *_i.c
69 | *_p.c
70 | *_h.h
71 | *.ilk
72 | *.meta
73 | *.obj
74 | *.iobj
75 | *.pch
76 | *.pdb
77 | *.ipdb
78 | *.pgc
79 | *.pgd
80 | *.rsp
81 | *.sbr
82 | *.tlb
83 | *.tli
84 | *.tlh
85 | *.tmp
86 | *.tmp_proj
87 | *_wpftmp.csproj
88 | *.log
89 | *.vspscc
90 | *.vssscc
91 | .builds
92 | *.pidb
93 | *.svclog
94 | *.scc
95 |
96 | # Chutzpah Test files
97 | _Chutzpah*
98 |
99 | # Visual C++ cache files
100 | ipch/
101 | *.aps
102 | *.ncb
103 | *.opendb
104 | *.opensdf
105 | *.sdf
106 | *.cachefile
107 | *.VC.db
108 | *.VC.VC.opendb
109 |
110 | # Visual Studio profiler
111 | *.psess
112 | *.vsp
113 | *.vspx
114 | *.sap
115 |
116 | # Visual Studio Trace Files
117 | *.e2e
118 |
119 | # TFS 2012 Local Workspace
120 | $tf/
121 |
122 | # Guidance Automation Toolkit
123 | *.gpState
124 |
125 | # ReSharper is a .NET coding add-in
126 | _ReSharper*/
127 | *.[Rr]e[Ss]harper
128 | *.DotSettings.user
129 |
130 | # TeamCity is a build add-in
131 | _TeamCity*
132 |
133 | # DotCover is a Code Coverage Tool
134 | *.dotCover
135 |
136 | # AxoCover is a Code Coverage Tool
137 | .axoCover/*
138 | !.axoCover/settings.json
139 |
140 | # Visual Studio code coverage results
141 | *.coverage
142 | *.coveragexml
143 |
144 | # NCrunch
145 | _NCrunch_*
146 | .*crunch*.local.xml
147 | nCrunchTemp_*
148 |
149 | # MightyMoose
150 | *.mm.*
151 | AutoTest.Net/
152 |
153 | # Web workbench (sass)
154 | .sass-cache/
155 |
156 | # Installshield output folder
157 | [Ee]xpress/
158 |
159 | # DocProject is a documentation generator add-in
160 | DocProject/buildhelp/
161 | DocProject/Help/*.HxT
162 | DocProject/Help/*.HxC
163 | DocProject/Help/*.hhc
164 | DocProject/Help/*.hhk
165 | DocProject/Help/*.hhp
166 | DocProject/Help/Html2
167 | DocProject/Help/html
168 |
169 | # Click-Once directory
170 | publish/
171 |
172 | # Publish Web Output
173 | *.[Pp]ublish.xml
174 | *.azurePubxml
175 | # Note: Comment the next line if you want to checkin your web deploy settings,
176 | # but database connection strings (with potential passwords) will be unencrypted
177 | *.pubxml
178 | *.publishproj
179 |
180 | # Microsoft Azure Web App publish settings. Comment the next line if you want to
181 | # checkin your Azure Web App publish settings, but sensitive information contained
182 | # in these scripts will be unencrypted
183 | PublishScripts/
184 |
185 | # NuGet Packages
186 | *.nupkg
187 | # NuGet Symbol Packages
188 | *.snupkg
189 | # The packages folder can be ignored because of Package Restore
190 | **/[Pp]ackages/*
191 | # except build/, which is used as an MSBuild target.
192 | !**/[Pp]ackages/build/
193 | # Uncomment if necessary however generally it will be regenerated when needed
194 | #!**/[Pp]ackages/repositories.config
195 | # NuGet v3's project.json files produces more ignorable files
196 | *.nuget.props
197 | *.nuget.targets
198 |
199 | # Microsoft Azure Build Output
200 | csx/
201 | *.build.csdef
202 |
203 | # Microsoft Azure Emulator
204 | ecf/
205 | rcf/
206 |
207 | # Windows Store app package directories and files
208 | AppPackages/
209 | BundleArtifacts/
210 | Package.StoreAssociation.xml
211 | _pkginfo.txt
212 | *.appx
213 | *.appxbundle
214 | *.appxupload
215 |
216 | # Visual Studio cache files
217 | # files ending in .cache can be ignored
218 | *.[Cc]ache
219 | # but keep track of directories ending in .cache
220 | !?*.[Cc]ache/
221 |
222 | # Others
223 | ClientBin/
224 | ~$*
225 | *~
226 | *.dbmdl
227 | *.dbproj.schemaview
228 | *.jfm
229 | *.pfx
230 | *.publishsettings
231 | orleans.codegen.cs
232 |
233 | # Including strong name files can present a security risk
234 | # (https://github.com/github/gitignore/pull/2483#issue-259490424)
235 | #*.snk
236 |
237 | # Since there are multiple workflows, uncomment next line to ignore bower_components
238 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
239 | #bower_components/
240 |
241 | # RIA/Silverlight projects
242 | Generated_Code/
243 |
244 | # Backup & report files from converting an old project file
245 | # to a newer Visual Studio version. Backup files are not needed,
246 | # because we have git ;-)
247 | _UpgradeReport_Files/
248 | Backup*/
249 | UpgradeLog*.XML
250 | UpgradeLog*.htm
251 | ServiceFabricBackup/
252 | *.rptproj.bak
253 |
254 | # SQL Server files
255 | *.mdf
256 | *.ldf
257 | *.ndf
258 |
259 | # Business Intelligence projects
260 | *.rdl.data
261 | *.bim.layout
262 | *.bim_*.settings
263 | *.rptproj.rsuser
264 | *- [Bb]ackup.rdl
265 | *- [Bb]ackup ([0-9]).rdl
266 | *- [Bb]ackup ([0-9][0-9]).rdl
267 |
268 | # Microsoft Fakes
269 | FakesAssemblies/
270 |
271 | # GhostDoc plugin setting file
272 | *.GhostDoc.xml
273 |
274 | # Node.js Tools for Visual Studio
275 | .ntvs_analysis.dat
276 | node_modules/
277 |
278 | # Visual Studio 6 build log
279 | *.plg
280 |
281 | # Visual Studio 6 workspace options file
282 | *.opt
283 |
284 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
285 | *.vbw
286 |
287 | # Visual Studio LightSwitch build output
288 | **/*.HTMLClient/GeneratedArtifacts
289 | **/*.DesktopClient/GeneratedArtifacts
290 | **/*.DesktopClient/ModelManifest.xml
291 | **/*.Server/GeneratedArtifacts
292 | **/*.Server/ModelManifest.xml
293 | _Pvt_Extensions
294 |
295 | # Paket dependency manager
296 | .paket/paket.exe
297 | paket-files/
298 |
299 | # FAKE - F# Make
300 | .fake/
301 |
302 | # CodeRush personal settings
303 | .cr/personal
304 |
305 | # Python Tools for Visual Studio (PTVS)
306 | __pycache__/
307 | *.pyc
308 |
309 | # Cake - Uncomment if you are using it
310 | # tools/**
311 | # !tools/packages.config
312 |
313 | # Tabs Studio
314 | *.tss
315 |
316 | # Telerik's JustMock configuration file
317 | *.jmconfig
318 |
319 | # BizTalk build output
320 | *.btp.cs
321 | *.btm.cs
322 | *.odx.cs
323 | *.xsd.cs
324 |
325 | # OpenCover UI analysis results
326 | OpenCover/
327 |
328 | # Azure Stream Analytics local run output
329 | ASALocalRun/
330 |
331 | # MSBuild Binary and Structured Log
332 | *.binlog
333 |
334 | # NVidia Nsight GPU debugger configuration file
335 | *.nvuser
336 |
337 | # MFractors (Xamarin productivity tool) working folder
338 | .mfractor/
339 |
340 | # Local History for Visual Studio
341 | .localhistory/
342 |
343 | # BeatPulse healthcheck temp database
344 | healthchecksdb
345 |
346 | # Backup folder for Package Reference Convert tool in Visual Studio 2017
347 | MigrationBackup/
348 |
349 | # Ionide (cross platform F# VS Code tools) working folder
350 | .ionide/
351 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {}
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # QuickNV.HikvisionNetSDK
2 | QuickNV.HikvisionNetSDK
--------------------------------------------------------------------------------
/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/logo.png
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Api.Sample/Program.cs:
--------------------------------------------------------------------------------
1 | using QuickNV.HikvisionNetSDK.Api;
2 | using Newtonsoft.Json;
3 | using System.Text;
4 |
5 | var host = "127.0.0.1";
6 | var port = 8000;
7 | var user = "admin";
8 | var password = "123456";
9 | var encoding = CodePagesEncodingProvider.Instance.GetEncoding("gb2312");
10 |
11 | try
12 | {
13 | HvSession.Init();
14 | Console.WriteLine("初始化成功!");
15 | //登录
16 | Console.WriteLine("正在登录...");
17 | var session = HvSession.Login(host, port, user, password, encoding);
18 | Console.WriteLine("登录成功!");
19 | Console.WriteLine("设备时间: " + session.ConfigService.GetTime());
20 | Console.WriteLine("设备配置: " + JsonConvert.SerializeObject(session.ConfigService.GetDeviceConfig(), Formatting.Indented));
21 | Console.WriteLine("网络配置: " + JsonConvert.SerializeObject(session.ConfigService.GetNetworkConfig(), Formatting.Indented));
22 | Console.WriteLine("硬盘配置: " + JsonConvert.SerializeObject(session.ConfigService.GetHdConfigs(), Formatting.Indented));
23 | Console.WriteLine("正在读取通道名称...");
24 | session.ChannelService.RefreshChannelsName();
25 | Console.WriteLine("模拟通道:" + string.Join(",", session.ChannelService.AnalogChannels.Select(t => $"通道{t.Id}_{t.Name}")));
26 | Console.WriteLine("IP通道:" + string.Join(",", session.ChannelService.IpChannels.Select(t => $"通道{t.Id}_{t.Name}")));
27 |
28 | //获取RTSP地址
29 | var rtsp = session.ChannelService.GetLiveRtspUrl(session.ChannelService.AllChannels.First(), HvStreamType.Main);
30 | //获取PTZ参数
31 | var ptzPosition = session.ChannelService.GetPtzPosition(session.ChannelService.AllChannels.First().Id);
32 |
33 | //设置当前位置为预置位并命名
34 | //session.ChannelService.SetPresetWithName(33, 5, "SDK测试-50");
35 | //session.ChannelService.SetPresetWithName(1, 6, "SDK测试-6");
36 | //转动到指定预置位
37 | //session.ChannelService.GotoPreset(33, 5);
38 | //删除预置位
39 | //session.ChannelService.RemovePreset(33, 6);
40 | //直到摄像机停止转动
41 | //await session.ChannelService.WaitUntilStopMovingAsync(33);
42 |
43 | //输出所有有效预置位
44 | foreach (var channel in session.ChannelService.AllChannels)
45 | {
46 | Console.WriteLine($"通道 [{channel.Name}] 预置位信息:");
47 | var presets = session.ChannelService.GetPresets(channel.Id);
48 | foreach (var preset in presets)
49 | {
50 | Console.WriteLine(preset);
51 | }
52 | }
53 |
54 | //for (int i = 1; i <= 100; i += 2)
55 | //{
56 | // var path1 = $"images/{i}.jpg";
57 | // var path2 = $"images/{i + 1}.jpg";
58 |
59 | // // 抓图方式1:
60 | // session.PictureService.CaptureJPEGPicture(session.ChannelService.AllChannels.First().Id, path1);
61 |
62 | // // 抓图方式2:
63 | // var pictureBytes = session.PictureService.CaptureJPEGPicture_NEW(session.ChannelService.AllChannels.First().Id);
64 | // File.WriteAllBytes(path2, pictureBytes);
65 | //}
66 |
67 | ////如果存在IP通道
68 | //if (session.ChannelService.IpChannels.Count > 0)
69 | //{
70 | // Console.WriteLine("开始查找录像文件...");
71 | // var channel = session.ChannelService.IpChannels.First();
72 | // var stopTime = DateTime.Now;
73 | // var startTime = stopTime.AddDays(-1);
74 | // var files = session.VideoFileService.FindFile(channel.Id, startTime, stopTime);
75 | // Console.WriteLine("录像文件:" + JsonConvert.SerializeObject(files, Formatting.Indented));
76 | // Console.WriteLine("查找录像文件完成.");
77 |
78 |
79 | // Console.WriteLine("开始下载...");
80 | // //var channel = session.ChannelService.IpChannels.First();
81 | // //var stopTime = DateTime.Now;
82 | // //var startTime = stopTime.AddMinutes(-1);
83 | // var localFileName = $"{channel.Name}_{startTime.ToString("yyyyMMddHHmmss")}_{stopTime.ToString("yyyyMMddHHmmss")}.mp4";
84 | // var fileHandle = session.VideoFileService.StartDownloadFile(channel.Id, startTime, stopTime, localFileName);
85 | // while (true)
86 | // {
87 | // Thread.Sleep(1000);
88 | // var progress = session.VideoFileService.GetDownloadPosition(fileHandle);
89 | // if (progress < 0 || progress > 100)
90 | // throw new Exception("Download error.Progress: " + progress);
91 | // Console.CursorLeft = 0;
92 | // Console.Write($"进度:{progress}%");
93 | // if (progress == 100)
94 | // break;
95 | // }
96 | // Console.WriteLine();
97 | // session.VideoFileService.StopDownloadFile(fileHandle);
98 | // Console.WriteLine("下载完成。文件:" + localFileName);
99 |
100 | //}
101 | //退出登录
102 | session.Logout();
103 | Console.WriteLine("退出登录完成");
104 |
105 | //清理
106 | HvSession.Cleanup();
107 | Console.WriteLine("清理完成");
108 |
109 | Console.ReadLine();
110 | }
111 | catch (Exception ex)
112 | {
113 | Console.WriteLine(ex.ToString());
114 | }
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Api.Sample/QuickNV.HikvisionNetSDK.Api.Sample.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Exe
5 | net8.0
6 | enable
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Api/HvChannel.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Text;
4 |
5 | namespace QuickNV.HikvisionNetSDK.Api
6 | {
7 | public class HvChannel
8 | {
9 | public int Id { get; }
10 | public string Name { get; internal set; }
11 | public virtual int RtspChannelId => Id;
12 |
13 | internal HvChannel(int id)
14 | {
15 | Id = id;
16 | }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Api/HvDeviceConfig.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Text;
4 |
5 | namespace QuickNV.HikvisionNetSDK.Api
6 | {
7 | public class HvDeviceConfig
8 | {
9 | public int AnalogChannel { get; internal set; }
10 | public int IPChannel { get; internal set; }
11 | public int ZeroChannel { get; internal set; }
12 | public int NetworkPort { get; internal set; }
13 | public int AlarmInPort { get; internal set; }
14 | public int AlarmOutPort { get; internal set; }
15 | public string Serial { get; internal set; }
16 | public string Version { get; internal set; }
17 | public string TypeName { get; internal set; }
18 | public string Name { get; internal set; }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Api/HvHdConfig.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Text;
4 | using static QuickNV.HikvisionNetSDK.Defines;
5 |
6 | namespace QuickNV.HikvisionNetSDK.Api
7 | {
8 | public class HvHdConfig
9 | {
10 | public HvHdConfig() { }
11 | internal HvHdConfig(NET_DVR_SINGLE_HD hd)
12 | {
13 | Capacity = hd.dwCapacity;
14 | FreeSpace = hd.dwFreeSpace;
15 | HdStatus = hd.dwHdStatus;
16 | HDAttr = hd.byHDAttr;
17 | HDType = hd.byHDType;
18 | Recycling = hd.byRecycling;
19 | PictureCapacity = hd.dwPictureCapacity;
20 | FreePictureSpace = hd.dwFreePictureSpace;
21 | }
22 |
23 | public bool IsErrorStatus => HdStatus == 2;
24 |
25 | public uint Capacity { get; set; }
26 | public uint FreeSpace { get; set; }
27 | public uint HdStatus { get; set; }
28 | public byte HDAttr { get; set; }
29 | public byte HDType { get; set; }
30 | public byte Recycling { get; set; }
31 | public uint PictureCapacity { get; set; }
32 | public uint FreePictureSpace { get; set; }
33 |
34 | public override string ToString()
35 | {
36 |
37 | StringBuilder sb = new StringBuilder();
38 |
39 | sb.AppendLine();
40 | sb.AppendLine(GetRow(nameof(Capacity), ToGB(Capacity)));
41 | sb.AppendLine(GetRow(nameof(FreeSpace), ToGB(FreeSpace)));
42 | sb.AppendLine(GetRow(nameof(PictureCapacity), ToGB(PictureCapacity)));
43 | sb.AppendLine(GetRow(nameof(FreePictureSpace), ToGB(FreePictureSpace)));
44 | sb.AppendLine(GetRow(nameof(HdStatus), HdStatuses.TryGetValue(HdStatus, out var status) ? status : "unknown"));
45 | sb.AppendLine(GetRow(nameof(HDAttr), HdAttributes.TryGetValue(HDAttr, out var atr) ? atr : "unknown"));
46 | sb.AppendLine(GetRow(nameof(HDType), HdTypes.TryGetValue(HDType, out var hdType) ? hdType : "unknown"));
47 | sb.AppendLine(GetRow(nameof(Recycling), Convert.ToString(Recycling)));
48 |
49 | return sb.ToString();
50 | }
51 |
52 | private static readonly Dictionary HdStatuses = new Dictionary
53 | {
54 | {0, "normal"},
55 | {1, "unformatted"},
56 | {2, "error"},
57 | {3, "S.M.A.R.T state"},
58 | {4, "not match"},
59 | {5, "sleeping"},
60 | {6, "unconnected(network disk)"},
61 | {7, "virtual disk is normal and supports expansion"},
62 | {10, "hard disk is being restored"},
63 | {11, "hard disk is being formatted"},
64 | {12, "hard disk is waiting formatted"},
65 | {13, "the hard disk has been uninstalled"},
66 | {14, "local hard disk does not exist"},
67 | {15, "it is deleting the network disk"},
68 | {16, "locked"}
69 | };
70 |
71 | private static readonly Dictionary HdAttributes = new Dictionary
72 | {
73 | {0, "default"},
74 | {1, "redundancy (back up important data)"},
75 | {2, "read only"},
76 | {3, "Archiving"},
77 | {4, "Cannot be read/read"}
78 | };
79 |
80 | private static readonly Dictionary HdTypes = new Dictionary
81 | {
82 | {0, "local disk"},
83 | {1, "eSATA disk"},
84 | {2, "NFS disk"},
85 | {3, "iSCSI disk"},
86 | {4, "RAID virtual disk"},
87 | {5, "SD card"},
88 | {6, "miniSAS"}
89 | };
90 |
91 | private string ToGB(uint mb)
92 | {
93 | return $"{mb / 1024.0:0.00} GB ({mb} Mb)";
94 | }
95 |
96 | private string GetRow(string field, string value)
97 | {
98 | return $"{field,-24}: {value}";
99 | }
100 | }
101 | }
102 |
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Api/HvIpChannel.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Text;
4 |
5 | namespace QuickNV.HikvisionNetSDK.Api
6 | {
7 | public class HvIpChannel : HvChannel
8 | {
9 | private int rtspChannelId;
10 | public bool IsOnline { get; }
11 | public override int RtspChannelId => rtspChannelId;
12 | internal HvIpChannel(int id, int rtspChannelId, bool isOnline) : base(id)
13 | {
14 | IsOnline = isOnline;
15 | this.rtspChannelId = rtspChannelId;
16 | }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Api/HvLogLevel.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Text;
4 |
5 | namespace QuickNV.HikvisionNetSDK.Api
6 | {
7 | public enum HvLogLevel
8 | {
9 | Close = 0,
10 | Error = 1,
11 | ErrorAndDebug = 2,
12 | All = 3
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Api/HvNetworkConfig.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Text;
4 |
5 | namespace QuickNV.HikvisionNetSDK.Api
6 | {
7 | public class HvNetworkConfig
8 | {
9 | public string IPAddress { get; internal set; }
10 | public string GateWay { get; internal set; }
11 | public string SubMask { get; internal set; }
12 | public string Dns { get; internal set; }
13 | public string HostIP { get; internal set; }
14 | public string PPPoEName { get; internal set; }
15 | public string PPPoEPassword { get; internal set; }
16 | public int AlarmHostIpPort { get; internal set; }
17 | public int HttpPort { get; internal set; }
18 | public int DVRPort { get; internal set; }
19 | public bool DHCP { get; internal set; }
20 | public bool PPPoE { get; internal set; }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Api/HvPTZCommand.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Text;
4 |
5 | namespace QuickNV.HikvisionNetSDK.Api
6 | {
7 | public enum HvPTZCommand : uint
8 | {
9 | LIGHT_PWRON = 2, //接通灯光电源
10 | WIPER_PWRON = 3, //接通雨刷开关
11 | FAN_PWRON = 4, // 接通风扇开关
12 | HEATER_PWRON = 5, // 接通加热器开关
13 | AUX_PWRON1 = 6, // 接通辅助设备开关
14 | AUX_PWRON2 = 7, // 接通辅助设备开关
15 | ZOOM_IN = 11, // 焦距变大(倍率变大)
16 | ZOOM_OUT = 12, // 焦距变小(倍率变小)
17 | FOCUS_NEAR = 13, // 焦点前调
18 | FOCUS_FAR = 14, // 焦点后调
19 | IRIS_OPEN = 15, // 光圈扩大
20 | IRIS_CLOSE = 16, // 光圈缩小
21 | TILT_UP = 21, // 云台上仰
22 | TILT_DOWN = 22, // 云台下俯
23 | PAN_LEFT = 23, // 云台左转
24 | PAN_RIGHT = 24, // 云台右转
25 | UP_LEFT = 25, // 云台上仰和左转
26 | UP_RIGHT = 26, // 云台上仰和右转
27 | DOWN_LEFT = 27, // 云台下俯和左转
28 | DOWN_RIGHT = 28, // 云台下俯和右转
29 | PAN_AUTO = 29// 云台左右自动扫描
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Api/HvPreset.cs:
--------------------------------------------------------------------------------
1 | namespace QuickNV.HikvisionNetSDK.Api
2 | {
3 | ///
4 | /// 预置点信息
5 | ///
6 | public class HvPreset
7 | {
8 | public HvPreset(int number, string name)
9 | {
10 | Number = number;
11 | Name = name;
12 | }
13 |
14 | ///
15 | /// 预置点编号(从1开始)
16 | ///
17 | public int Number { get; internal set; }
18 |
19 | ///
20 | /// 预置点名称
21 | ///
22 | public string Name { get; internal set; }
23 |
24 | ///
25 | /// 水平参数:角度
26 | ///
27 | public double PanPos { get; set; }
28 |
29 | ///
30 | /// 垂直参数:角度
31 | ///
32 | public double TiltPos { get; set; }
33 |
34 | ///
35 | /// 变倍参数:倍数
36 | ///
37 | public double ZoomPos { get; set; }
38 |
39 | ///
40 | /// 是否被设置
41 | ///
42 | public bool IsSet => PanPos != 0 && TiltPos != 0;
43 |
44 | public override string ToString()
45 | {
46 | return $"[{Number}] {Name} P:{PanPos} T:{TiltPos} Z:{ZoomPos}";
47 | }
48 | }
49 |
50 | ///
51 | /// PTZ位置信息
52 | ///
53 | public class HvPtzPosition
54 | {
55 | public HvPtzPosition()
56 | {
57 | }
58 |
59 | public HvPtzPosition(double panPos, double tiltPos, double zoomPos)
60 | {
61 | PanPos = panPos;
62 | TiltPos = tiltPos;
63 | ZoomPos = zoomPos;
64 | }
65 |
66 | ///
67 | /// 水平参数:角度
68 | ///
69 | public double PanPos { get; set; }
70 |
71 | ///
72 | /// 垂直参数:角度
73 | ///
74 | public double TiltPos { get; set; }
75 |
76 | ///
77 | /// 变倍参数:倍数
78 | ///
79 | public double ZoomPos { get; set; }
80 | }
81 | }
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Api/HvRemoteFile.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Text;
4 | using static QuickNV.HikvisionNetSDK.Defines;
5 |
6 | namespace QuickNV.HikvisionNetSDK.Api
7 | {
8 | public class HvRemoteFile
9 | {
10 | public string Name { get; set; }
11 | public DateTime StartTime { get; set; }
12 | public DateTime StopTime { get; set; }
13 | public long Size { get; set; }
14 |
15 | internal HvRemoteFile(NET_DVR_FIND_PICTURE_V50 findData)
16 | {
17 | Name = Encoding.Default.GetString(findData.sFileName);
18 | StartTime = findData.struTime.ToDateTime();
19 | Size = findData.dwFileSize;
20 | }
21 |
22 | internal HvRemoteFile(NET_DVR_FINDDATA_V30 findData)
23 | {
24 | Name = findData.sFileName;
25 | StartTime = findData.struStartTime.ToDateTime();
26 | StopTime = findData.struStopTime.ToDateTime();
27 | Size = findData.dwFileSize;
28 | }
29 |
30 | internal HvRemoteFile(NET_DVR_FINDDATA_V40 findData)
31 | {
32 | Name = findData.sFileName;
33 | StartTime = findData.struStartTime.ToDateTime();
34 | StopTime = findData.struStopTime.ToDateTime();
35 | Size = findData.dwFileSize;
36 | }
37 |
38 | public HvRemoteFile()
39 | {
40 | }
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Api/HvRtspPathFormat.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace QuickNV.HikvisionNetSDK.Api
4 | {
5 | public enum HvRtspPathFormat
6 | {
7 | ///
8 | /// 2012年以前路径格式。示例:rtsp://192.168.1.65/h264/ch1/sub/av_stream
9 | ///
10 | AvStream,
11 | ///
12 | /// 2012年以后路径格式。rtsp://192.168.1.65/Streaming/Channels/102
13 | ///
14 | Streaming
15 | }
16 | }
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Api/HvSession.cs:
--------------------------------------------------------------------------------
1 | using QuickNV.HikvisionNetSDK.Api.Service;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.Text;
5 | using static QuickNV.HikvisionNetSDK.Defines;
6 | using static QuickNV.HikvisionNetSDK.Methods;
7 |
8 | namespace QuickNV.HikvisionNetSDK.Api
9 | {
10 | public class HvSession : IDisposable
11 | {
12 | private static SdkService _SdkService;
13 | public static SdkService SdkService
14 | {
15 | get
16 | {
17 | if (_SdkService == null)
18 | {
19 | _SdkService = new SdkService();
20 | }
21 | return _SdkService;
22 | }
23 | }
24 |
25 | public static void Init()
26 | {
27 | Invoke(NET_DVR_Init());
28 | }
29 |
30 | public static HvSession Login(string host, int port, string username, string password, Encoding encoding)
31 | {
32 | NET_DVR_DEVICEINFO_V30 deviceInfo = default;
33 | var userId = Invoke(NET_DVR_Login_V30(host, port, username, password, ref deviceInfo));
34 | var session = new HvSession(userId, encoding, deviceInfo);
35 | session.Host = host;
36 | session.Port = port;
37 | session.UserName = username;
38 | session.Password = password;
39 | return session;
40 | }
41 | public static HvSession Login(string host, int port, string username, string password)
42 | {
43 | return Login(host, port, username, password, Encoding.Default);
44 | }
45 | public static void Cleanup() => Invoke(NET_DVR_Cleanup());
46 |
47 | public string Host { get; private set; }
48 | public int Port { get; private set; }
49 | public string UserName { get; private set; }
50 | public string Password { get; private set; }
51 | public int UserId { get; private set; }
52 | public bool IsOnline { get; private set; } = true;
53 | public Encoding Encoding { get; }
54 | private NET_DVR_DEVICEINFO_V30 deviceInfo;
55 |
56 | private HvSession(int userId, Encoding encoding, NET_DVR_DEVICEINFO_V30 deviceInfo)
57 | {
58 | UserId = userId;
59 | Encoding = encoding;
60 | this.deviceInfo = deviceInfo;
61 | }
62 |
63 | public void Logout()
64 | {
65 | if (!IsOnline)
66 | return;
67 | IsOnline = false;
68 | Invoke(NET_DVR_Logout_V30(UserId));
69 | }
70 |
71 | public void Dispose()
72 | {
73 | Logout();
74 | }
75 |
76 | private ChannelService _ChannelService;
77 | public ChannelService ChannelService
78 | {
79 | get
80 | {
81 | if (_ChannelService == null)
82 | _ChannelService = new ChannelService(this, deviceInfo);
83 | return _ChannelService;
84 | }
85 | }
86 |
87 | private ConfigService _ConfigService;
88 | public ConfigService ConfigService
89 | {
90 | get
91 | {
92 | if (_ConfigService == null)
93 | _ConfigService = new ConfigService(this);
94 | return _ConfigService;
95 | }
96 | }
97 |
98 | private PictureService _PictureService;
99 | public PictureService PictureService
100 | {
101 | get
102 | {
103 | if (_PictureService == null)
104 | _PictureService = new PictureService(this);
105 | return _PictureService;
106 | }
107 | }
108 |
109 | private VideoFileService _VideoFileService;
110 | public VideoFileService VideoFileService
111 | {
112 | get
113 | {
114 | if (_VideoFileService == null)
115 | _VideoFileService = new VideoFileService(this);
116 | return _VideoFileService;
117 | }
118 | }
119 | }
120 | }
121 |
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Api/HvStreamType.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Text;
4 |
5 | namespace QuickNV.HikvisionNetSDK.Api
6 | {
7 | public enum HvStreamType
8 | {
9 | Main = 1,
10 | Sub = 2,
11 | StreamType3 = 3,
12 | StreamType4 = 4
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Api/QuickNV.HikvisionNetSDK.Api.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard2.0
5 | aaasoft
6 | https://github.com/QuickNV/QuickNV.HikvisionNetSDK
7 | Hikvision, SDK
8 | https://github.com/QuickNV/QuickNV.HikvisionNetSDK.git
9 | git
10 | Hikvision NetSDK二次开发API
11 | 1.0.8
12 | logo.png
13 | README.md
14 |
15 |
16 |
17 |
18 | True
19 | \
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 | True
30 | \
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Api/README.md:
--------------------------------------------------------------------------------
1 | # QuickNV.HikvisionNetSDK.Api
2 | * Avaliable as [nuget](https://www.nuget.org/packages/QuickNV.HikvisionNetSDK.Api/)
3 |
4 | * [](https://www.nuget.org/packages/QuickNV.HikvisionNetSDK.Api/)
5 |
6 | * Api for Hikvision NetSDK.
7 |
8 | 示例
9 | ```
10 | using QuickNV.HikvisionNetSDK.Api;
11 | using Newtonsoft.Json;
12 | using System.Text;
13 |
14 | var host = "127.0.0.1";
15 | var port = 8000;
16 | var user = "admin";
17 | var password = "123456";
18 | var encoding = CodePagesEncodingProvider.Instance.GetEncoding("gb2312");
19 |
20 | try
21 | {
22 | HvSession.Init();
23 | Console.WriteLine("初始化成功!");
24 | //登录
25 | Console.WriteLine("正在登录...");
26 | var session = HvSession.Login(host, port, user, password, encoding);
27 | Console.WriteLine("登录成功!");
28 | Console.WriteLine("设备时间: " + session.ConfigService.GetTime());
29 | Console.WriteLine("设备配置: " + JsonConvert.SerializeObject(session.ConfigService.GetDeviceConfig(), Formatting.Indented));
30 | Console.WriteLine("网络配置: " + JsonConvert.SerializeObject(session.ConfigService.GetNetworkConfig(), Formatting.Indented));
31 | Console.WriteLine("硬盘配置: " + JsonConvert.SerializeObject(session.ConfigService.GetHdConfig(), Formatting.Indented));
32 | Console.WriteLine("正在读取通道名称...");
33 | session.ChannelService.RefreshChannelsName();
34 | Console.WriteLine("模拟通道:" + string.Join(",", session.ChannelService.AnalogChannels.Select(t => $"通道{t.Id}_{t.Name}")));
35 | Console.WriteLine("IP通道:" + string.Join(",", session.ChannelService.IpChannels.Select(t => $"通道{t.Id}_{t.Name}")));
36 | //如果存在IP通道
37 | if (session.ChannelService.IpChannels.Count > 0)
38 | {
39 | Console.WriteLine("开始下载...");
40 | var channel = session.ChannelService.IpChannels.First();
41 | var stopTime = DateTime.Now;
42 | var startTime = stopTime.AddMinutes(-1);
43 | var localFileName = $"{channel.Name}_{startTime.ToString("yyyyMMddHHmmss")}_{stopTime.ToString("yyyyMMddHHmmss")}.mp4";
44 | var fileHandle = session.VideoFileService.StartDownloadFile(channel.Id, startTime, stopTime, localFileName);
45 | while (true)
46 | {
47 | Thread.Sleep(1000);
48 | var progress = session.VideoFileService.GetDownloadPosition(fileHandle);
49 | if (progress < 0 || progress > 100)
50 | throw new Exception("Download error.Progress: " + progress);
51 | Console.CursorLeft = 0;
52 | Console.Write($"进度:{progress}%");
53 | if (progress == 100)
54 | break;
55 | }
56 | Console.WriteLine();
57 | session.VideoFileService.StopDownloadFile(fileHandle);
58 | Console.WriteLine("下载完成。文件:" + localFileName);
59 | }
60 | //退出登录
61 | session.Logout();
62 | Console.WriteLine("退出登录完成");
63 |
64 | //清理
65 | HvSession.Cleanup();
66 | Console.WriteLine("清理完成");
67 | }
68 | catch (Exception ex)
69 | {
70 | Console.WriteLine(ex.ToString());
71 | }
72 | ```
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Api/Service/ChannelService.cs:
--------------------------------------------------------------------------------
1 | using QuickNV.HikvisionNetSDK.Api.Utils;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.Linq;
5 | using System.Runtime.InteropServices;
6 | using System.Threading.Tasks;
7 | using static QuickNV.HikvisionNetSDK.Defines;
8 | using static QuickNV.HikvisionNetSDK.Methods;
9 |
10 | namespace QuickNV.HikvisionNetSDK.Api.Service
11 | {
12 | public class ChannelService
13 | {
14 | private HvSession session;
15 | private int rtspPort;
16 | public IReadOnlyCollection AnalogChannels { get; private set; }
17 | public IReadOnlyCollection IpChannels { get; private set; }
18 | public IReadOnlyCollection AllChannels { get; private set; }
19 |
20 | internal ChannelService(HvSession session, NET_DVR_DEVICEINFO_V30 deviceInfo)
21 | {
22 | this.session = session;
23 | RefreshChannelsInfo(deviceInfo);
24 | rtspPort = session.ConfigService.GetRtspPort();
25 | }
26 |
27 | private void RefreshChannelsInfo(NET_DVR_DEVICEINFO_V30 deviceInfo)
28 | {
29 | var allChannels = new List();
30 |
31 | var dwAnalogChannelTotalNumber = deviceInfo.byChanNum;
32 | var analogChannels = new List();
33 | for (var i = 0; i < dwAnalogChannelTotalNumber; i++)
34 | {
35 | var id = i + deviceInfo.byStartChan;
36 | var channel = new HvChannel(id);
37 | analogChannels.Add(channel);
38 | allChannels.Add(channel);
39 | }
40 | AnalogChannels = analogChannels;
41 |
42 | var ipChannels = new List();
43 | uint dwDigitalChannelTotalNumber = deviceInfo.byIPChanNum + 256 * (uint)deviceInfo.byHighDChanNum;
44 | if (dwDigitalChannelTotalNumber > 0)
45 | {
46 | NET_DVR_IPPARACFG_V40 struIpParaCfgV40 = default;
47 |
48 | int dwSize = Marshal.SizeOf(struIpParaCfgV40);
49 |
50 | IntPtr ptrIpParaCfgV40 = Marshal.AllocHGlobal(dwSize);
51 | Marshal.StructureToPtr(struIpParaCfgV40, ptrIpParaCfgV40, false);
52 |
53 | uint dwReturn = 0;
54 | int iGroupNo = 0;
55 |
56 | var ipChannelsConfig = Invoke(NET_DVR_GetDVRConfig(
57 | session.UserId,
58 | NET_DVR_GET_IPPARACFG_V40,
59 | iGroupNo,
60 | ptrIpParaCfgV40,
61 | (uint)dwSize,
62 | ref dwReturn));
63 | if (ipChannelsConfig)
64 | {
65 | // succ
66 | struIpParaCfgV40 = Marshal.PtrToStructure(ptrIpParaCfgV40);
67 |
68 | byte byStreamType;
69 | uint iDChanNum = 64;
70 |
71 | if (dwDigitalChannelTotalNumber < 64)
72 | {
73 | //If the ip channels of device is less than 64,will get the real channel of device
74 | iDChanNum = dwDigitalChannelTotalNumber;
75 | }
76 |
77 | for (int i = 0; i < iDChanNum; i++)
78 | {
79 | byStreamType = struIpParaCfgV40.struStreamMode[i].byGetStreamType;
80 | var unionGetStream = struIpParaCfgV40.struStreamMode[i].uGetStream;
81 |
82 | switch (byStreamType)
83 | {
84 | //At present NVR just support case 0-one way to get stream from device
85 | case 0:
86 | dwSize = Marshal.SizeOf(unionGetStream);
87 | IntPtr ptrChanInfo = Marshal.AllocHGlobal(dwSize);
88 | Marshal.StructureToPtr(unionGetStream, ptrChanInfo, false);
89 | var struChanInfo = Marshal.PtrToStructure(ptrChanInfo);
90 | //List ip channels
91 | if (struChanInfo.byIPID == 0)
92 | continue;
93 | var channelId = i + (int)struIpParaCfgV40.dwStartDChan;
94 | var channel = new HvIpChannel(
95 | channelId,
96 | i + 1,
97 | struChanInfo.byEnable != 0);
98 | ipChannels.Add(channel);
99 | allChannels.Add(channel);
100 | Marshal.FreeHGlobal(ptrChanInfo);
101 | break;
102 |
103 | default:
104 | break;
105 | }
106 | }
107 | }
108 | Marshal.FreeHGlobal(ptrIpParaCfgV40);
109 | }
110 | IpChannels = ipChannels;
111 | AllChannels = allChannels;
112 | }
113 |
114 | public void RefreshChannelName(HvChannel channel)
115 | {
116 | NET_DVR_PICCFG_V30 config = default;
117 | var ptrSize = Marshal.SizeOf(config);
118 | IntPtr ptr = Marshal.AllocHGlobal(ptrSize);
119 | try
120 | {
121 | uint ret = 0;
122 | Invoke(NET_DVR_GetDVRConfig(session.UserId, NET_DVR_GET_PICCFG_V30, channel.Id, ptr, (uint)ptrSize, ref ret));
123 | config = Marshal.PtrToStructure(ptr);
124 | channel.Name = StringUtils.ByteArray2String(config.sChanName, session.Encoding);
125 | }
126 | catch
127 | {
128 | throw;
129 | }
130 | finally
131 | {
132 | Marshal.FreeHGlobal(ptr);
133 | }
134 | }
135 |
136 | public void RefreshChannelsName()
137 | {
138 | foreach (var channel in AllChannels)
139 | RefreshChannelName(channel);
140 | }
141 |
142 | ///
143 | /// 云台控制
144 | ///
145 | /// 通道号
146 | /// 云台控制命令
147 | /// 云台停止动作或开始动作
148 | /// 云台控制的速度,用户按不同解码器的速度控制值设置。取值范围[1,160]
149 | public void PTZControl(int channelId, HvPTZCommand ptzCommand, bool isStop, uint speed)
150 | {
151 | uint dwStop = 0;
152 | if (isStop)
153 | dwStop = 1;
154 | Invoke(NET_DVR_PTZControlWithSpeed_Other(session.UserId, channelId, (uint)ptzCommand, dwStop, speed));
155 | }
156 |
157 | ///
158 | /// 获取通道实时视频流的RTSP地址
159 | ///
160 | /// 通道
161 | /// 视频流类型
162 | ///
163 | public string GetLiveRtspUrl(HvChannel channel, HvStreamType streamType)
164 | {
165 | return GetLiveRtspUrl(channel,streamType, HvRtspPathFormat.Streaming);
166 | }
167 |
168 | ///
169 | /// 获取通道实时视频流的RTSP地址
170 | ///
171 | /// 通道
172 | /// 视频流类型
173 | /// 路径格式
174 | ///
175 | public string GetLiveRtspUrl(HvChannel channel, HvStreamType streamType, HvRtspPathFormat pathFormat)
176 | {
177 | UriBuilder uriBuilder = new UriBuilder();
178 | uriBuilder.Scheme = "rtsp";
179 | uriBuilder.Host = session.Host;
180 | uriBuilder.Port = rtspPort;
181 | uriBuilder.UserName = session.UserName;
182 | uriBuilder.Password = session.Password;
183 | switch (pathFormat)
184 | {
185 | case HvRtspPathFormat.AvStream:
186 | uriBuilder.Path = $"/h264/ch{channel.RtspChannelId}/{streamType.ToString().ToLower()}/av_stream";
187 | break;
188 | case HvRtspPathFormat.Streaming:
189 | uriBuilder.Path = $"/Streaming/Channels/{channel.RtspChannelId}0{(int)streamType}";
190 | break;
191 | }
192 | return uriBuilder.ToString();
193 | }
194 |
195 | private string dateTime2Str(DateTime dateTime)
196 | {
197 | return $"{dateTime.ToString("yyyyMMdd")}t{dateTime.ToString("HHmmss")}z";
198 | }
199 |
200 | ///
201 | /// 获取通道回放视频流的RTSP地址
202 | ///
203 | /// 通道
204 | /// 视频流类型
205 | /// 开始时间
206 | /// 结束时间
207 | ///
208 | public string GetPlaybackRtspUrl(HvChannel channel, HvStreamType streamType, DateTime startTime, DateTime endTime)
209 | {
210 | UriBuilder uriBuilder = new UriBuilder();
211 | uriBuilder.Scheme = "rtsp";
212 | uriBuilder.Host = session.Host;
213 | uriBuilder.Port = rtspPort;
214 | uriBuilder.UserName = session.UserName;
215 | uriBuilder.Password = session.Password;
216 | uriBuilder.Path = $"/Streaming/tracks/{channel.RtspChannelId}0{(int)streamType}";
217 | uriBuilder.Query = $"starttime={dateTime2Str(startTime)}&endtime={dateTime2Str(endTime)}";
218 | return uriBuilder.ToString();
219 | }
220 |
221 | ///
222 | /// 获取预置位数量
223 | ///
224 | /// 通道号
225 | ///
226 | public int GetPresetCount(int channelId)
227 | {
228 | uint bytesReturned = 0;
229 |
230 | NET_DVR_PRESET_INFO presetInfo = new NET_DVR_PRESET_INFO();
231 | int size = Marshal.SizeOf(typeof(NET_DVR_PRESET_INFO));
232 | IntPtr presetInfoPtr = Marshal.AllocHGlobal(size);
233 | Marshal.StructureToPtr(presetInfo, presetInfoPtr, false);
234 |
235 | Invoke(NET_DVR_GetDVRConfig(session.UserId, NET_DVR_GET_PRESETCFG, channelId, presetInfoPtr, (uint)size, ref bytesReturned));
236 | presetInfo = Marshal.PtrToStructure(presetInfoPtr);
237 | Console.WriteLine(presetInfo.dwPresetNum);
238 | return Convert.ToInt32(presetInfo.dwPresetNum);
239 | }
240 |
241 | ///
242 | /// 设置当前位置为特定预置位
243 | ///
244 | /// 通道号
245 | /// 预置位编码
246 | ///
247 | public void SetPreset(int channelId, ushort presetNumber)
248 | {
249 | Invoke(NET_DVR_PTZPreset_Other(session.UserId, channelId, SET_PRESET, presetNumber));
250 | }
251 |
252 | ///
253 | /// 修改特定预置位的名称
254 | ///
255 | /// 通道号
256 | /// 预置位编码
257 | /// 预置位名称
258 | public void ModifyPresetName(int channelId, ushort presetNumber, string presetName)
259 | {
260 | if (string.IsNullOrWhiteSpace(presetName))
261 | {
262 | presetName = $"预置点 {presetNumber}";
263 | }
264 |
265 | NET_DVR_PRESET_NAME structure = new NET_DVR_PRESET_NAME();
266 | int nSize = Marshal.SizeOf(structure);
267 | var bytes = new byte[32];
268 | var src = session.Encoding.GetBytes(presetName);
269 | var length = bytes.Length <= 32 ? src.Length : 32;
270 | Array.Copy(src, bytes, length);
271 | structure.dwSize = (uint)nSize;
272 | structure.wPresetNum = presetNumber;
273 | structure.byName = bytes;
274 |
275 | IntPtr ptr = Marshal.AllocHGlobal(nSize);
276 | Marshal.StructureToPtr(structure, ptr, false);
277 | try
278 | {
279 | Invoke(NET_DVR_SetDVRConfig(session.UserId, NET_DVR_SET_PRESET_NAME, channelId, ptr, (uint)nSize));
280 | }
281 | catch
282 | {
283 | throw;
284 | }
285 | finally
286 | {
287 | Marshal.FreeHGlobal(ptr);
288 | }
289 | }
290 |
291 | ///
292 | /// 设置当前位置为特定预置位编号及指定名称
293 | ///
294 | /// 通道号
295 | /// 预置位编码
296 | /// 预置位名称
297 | ///
298 | public void SetPresetWithName(int channelId, ushort presetNumber, string presetName)
299 | {
300 | SetPreset(channelId, presetNumber);
301 | ModifyPresetName(channelId, presetNumber, presetName);
302 | }
303 |
304 | ///
305 | /// 转动到指定预置位
306 | ///
307 | /// 通道号
308 | /// 预置位编码
309 | public void GotoPreset(int channelId, ushort presetNumber)
310 | {
311 | Invoke(NET_DVR_PTZPreset_Other(session.UserId, channelId, GOTO_PRESET, presetNumber));
312 | }
313 |
314 | ///
315 | /// 清除指定预置位
316 | ///
317 | /// 通道号
318 | /// 预置位编码
319 | public void RemovePreset(int channelId, ushort presetNumber)
320 | {
321 | Invoke(NET_DVR_PTZPreset_Other(session.UserId, channelId, CLE_PRESET, presetNumber));
322 | }
323 |
324 | ///
325 | /// 获取NVR通道的预置位信息
326 | ///
327 | /// 通道号
328 | /// 预置位数量,默认为255
329 | /// 是否仅反馈有效的预置位,默认是 true
330 | ///
331 | public HvPreset[] GetPresets(int channelId, int presetCount = 255, bool containOnlyValidPreset = true)
332 | {
333 | if (presetCount <= 0)
334 | {
335 | return Array.Empty();
336 | }
337 |
338 | uint bytesReturned = 0;
339 | var presets = new HvPreset[presetCount];
340 | var presetCfg = new NET_DVR_PRESET_NAME[presetCount];
341 | int nSize = Marshal.SizeOf(typeof(NET_DVR_PRESET_NAME));
342 | int nOutBufSize = nSize * presetCount;
343 | IntPtr ptrPreSetCfg = Marshal.AllocHGlobal(nOutBufSize);
344 |
345 | try
346 | {
347 | int i;
348 | for (i = 0; i < presetCount; i++)
349 | {
350 | Marshal.StructureToPtr(presetCfg[i], ptrPreSetCfg, false);
351 | }
352 |
353 | //获取参数成功
354 |
355 | if (Invoke(NET_DVR_GetDVRConfig(
356 | session.UserId,
357 | NET_DVR_GET_PRESET_NAME,
358 | channelId, ptrPreSetCfg,
359 | (uint)nOutBufSize,
360 | ref bytesReturned)))
361 | {
362 | for (i = 0; i < presetCount; i++)
363 | {
364 | // 在每次循环中,通过计算当前结构体的指针位置,将 ptrPreSetCfg 移动到正确的位置。然后使用 Marshal.PtrToStructure 方法将指针转换为结构体
365 | var ptrCurrent = IntPtr.Add(ptrPreSetCfg, i * nSize);
366 | presetCfg[i] = Marshal.PtrToStructure(ptrCurrent);
367 | if (presetCfg[i].byName != null)
368 | {
369 | var presetName = StringUtils.ByteArray2String(presetCfg[i].byName, session.Encoding);
370 | var preset = new HvPreset(presetCfg[i].wPresetNum, presetName);
371 | preset.PanPos = ConvertPtzPos(presetCfg[i].wPanPos);
372 | preset.TiltPos = ConvertPtzPos(presetCfg[i].wTiltPos);
373 | preset.ZoomPos = ConvertPtzPos(presetCfg[i].wZoomPos);
374 |
375 | presets[i] = preset;
376 | }
377 | }
378 | }
379 | }
380 | catch
381 | {
382 | throw;
383 | }
384 | finally
385 | {
386 | Marshal.FreeHGlobal(ptrPreSetCfg);
387 | }
388 | return containOnlyValidPreset ? presets.Where(x => x.IsSet).ToArray() : presets;
389 | }
390 |
391 | ///
392 | /// 获取球机Ptz参数
393 | ///
394 | /// 通道号
395 | ///
396 | public HvPtzPosition GetPtzPosition(int channelId)
397 | {
398 | uint bytesReturned = 0;
399 | NET_DVR_PTZPOS ptzPos = default;
400 | int nSize = Marshal.SizeOf(ptzPos);
401 | IntPtr ptrPicCfg = Marshal.AllocHGlobal(nSize);
402 | Marshal.StructureToPtr(ptzPos, ptrPicCfg, false);
403 | try
404 | {
405 | Invoke(NET_DVR_GetDVRConfig(session.UserId, NET_DVR_GET_PTZPOS, channelId, ptrPicCfg, (uint)nSize, ref bytesReturned));
406 | ptzPos = (NET_DVR_PTZPOS)Marshal.PtrToStructure(ptrPicCfg, typeof(NET_DVR_PTZPOS));
407 |
408 | var panPos = ConvertPtzPos(ptzPos.wPanPos);
409 | var tiltPos = ConvertPtzPos(ptzPos.wTiltPos);
410 | var zoomPos = ConvertPtzPos(ptzPos.wZoomPos);
411 |
412 | return new HvPtzPosition(panPos, tiltPos, zoomPos);
413 | }
414 | catch
415 | {
416 | throw;
417 | }
418 | finally
419 | {
420 | Marshal.FreeHGlobal(ptrPicCfg);
421 | }
422 | }
423 |
424 | ///
425 | /// 等待摄像机停止转动
426 | ///
427 | /// 通道号
428 | ///
429 | public async Task WaitUntilStopMovingAsync(int channelId)
430 | {
431 | uint bytesReturned = 0;
432 | NET_DVR_PTZPOS structure = new NET_DVR_PTZPOS();
433 | int nSize = Marshal.SizeOf(structure);
434 | IntPtr ptrPicCfg = Marshal.AllocHGlobal(nSize);
435 | Marshal.StructureToPtr(structure, ptrPicCfg, false);
436 |
437 | try
438 | {
439 | bool result = NET_DVR_GetDVRConfig(session.UserId, NET_DVR_GET_PTZPOS, channelId, ptrPicCfg, (uint)nSize, ref bytesReturned);
440 | structure = (NET_DVR_PTZPOS)Marshal.PtrToStructure(ptrPicCfg, typeof(NET_DVR_PTZPOS));
441 | var panPos = structure.wPanPos;
442 | var tiltPos = structure.wTiltPos;
443 | var zoomPos = structure.wZoomPos;
444 |
445 | bool isMoving = true;
446 | while (isMoving)
447 | {
448 | await Task.Delay(100);
449 |
450 | result = NET_DVR_GetDVRConfig(session.UserId, NET_DVR_GET_PTZPOS, channelId, ptrPicCfg, (uint)nSize, ref bytesReturned);
451 | if (result)
452 | {
453 | structure = (NET_DVR_PTZPOS)Marshal.PtrToStructure(ptrPicCfg, typeof(NET_DVR_PTZPOS));
454 | //只要坐标没变就代表没动
455 | if (structure.wPanPos == panPos && structure.wTiltPos == tiltPos && structure.wZoomPos == zoomPos)
456 | {
457 | isMoving = false;
458 | }
459 | else
460 | {
461 | //设置当前位置为最新位置
462 | panPos = structure.wPanPos;
463 | tiltPos = structure.wTiltPos;
464 | zoomPos = structure.wZoomPos;
465 | }
466 | }
467 | }
468 | }
469 | catch
470 | {
471 | throw;
472 | }
473 | finally
474 | {
475 | Marshal.FreeHGlobal(ptrPicCfg);
476 | }
477 | }
478 |
479 | ///
480 | /// 将PTZPOS参数转化为实际值
481 | ///
482 | /// 参数
483 | ///
484 | private double ConvertPtzPos(ushort ptzPos)
485 | {
486 | var temp = (ptzPos / 4096) * 1000 + ((ptzPos % 4096) / 256) * 100 + ((ptzPos % 256) / 16) * 10 + (ptzPos % 16);
487 | var result = temp / 10d % 360;
488 | return result;
489 | }
490 | }
491 | }
492 |
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Api/Service/ConfigService.cs:
--------------------------------------------------------------------------------
1 | using QuickNV.HikvisionNetSDK.Api.Utils;
2 | using System;
3 | using System.Linq;
4 | using System.Runtime.InteropServices;
5 | using static QuickNV.HikvisionNetSDK.Defines;
6 | using static QuickNV.HikvisionNetSDK.Methods;
7 |
8 | namespace QuickNV.HikvisionNetSDK.Api.Service
9 | {
10 | public class ConfigService
11 | {
12 | private HvSession session;
13 | internal ConfigService(HvSession session)
14 | {
15 | this.session = session;
16 | }
17 |
18 | public DateTime GetTime()
19 | {
20 | NET_DVR_TIME m_struTimeCfg = default;
21 | uint dwReturn = 0;
22 | int nSize = Marshal.SizeOf(m_struTimeCfg);
23 | IntPtr ptrTimeCfg = Marshal.AllocHGlobal(nSize);
24 | try
25 | {
26 | Marshal.StructureToPtr(m_struTimeCfg, ptrTimeCfg, false);
27 | Invoke(NET_DVR_GetDVRConfig(session.UserId, NET_DVR_GET_TIMECFG, 1, ptrTimeCfg, (uint)nSize, ref dwReturn));
28 | m_struTimeCfg = Marshal.PtrToStructure(ptrTimeCfg);
29 | return m_struTimeCfg.ToDateTime();
30 | }
31 | catch
32 | {
33 | throw;
34 | }
35 | finally
36 | {
37 | Marshal.FreeHGlobal(ptrTimeCfg);
38 | }
39 | }
40 |
41 | public void SetTime(DateTime dateTime)
42 | {
43 | NET_DVR_TIME m_struTimeCfg = dateTime.ToNET_DVR_TIME();
44 | int nSize = Marshal.SizeOf(m_struTimeCfg);
45 | IntPtr ptrTimeCfg = Marshal.AllocHGlobal(nSize);
46 | try
47 | {
48 | Marshal.StructureToPtr(m_struTimeCfg, ptrTimeCfg, false);
49 | Invoke(NET_DVR_SetDVRConfig(session.UserId, NET_DVR_SET_TIMECFG, -1, ptrTimeCfg, (uint)nSize));
50 | }
51 | catch
52 | {
53 | throw;
54 | }
55 | finally
56 | {
57 | Marshal.FreeHGlobal(ptrTimeCfg);
58 | }
59 | }
60 |
61 | public HvNetworkConfig GetNetworkConfig()
62 | {
63 | NET_DVR_NETCFG_V30 m_struNetCfg = default;
64 | uint dwReturn = 0;
65 | int nSize = Marshal.SizeOf(m_struNetCfg);
66 | IntPtr ptrNetCfg = Marshal.AllocHGlobal(nSize);
67 | try
68 | {
69 | Marshal.StructureToPtr(m_struNetCfg, ptrNetCfg, false);
70 |
71 | Invoke(NET_DVR_GetDVRConfig(session.UserId, NET_DVR_GET_NETCFG_V30, -1, ptrNetCfg, (uint)nSize, ref dwReturn));
72 | m_struNetCfg = Marshal.PtrToStructure(ptrNetCfg);
73 |
74 | HvNetworkConfig networkConfig = new HvNetworkConfig
75 | {
76 | IPAddress = StringUtils.ByteArray2String(m_struNetCfg.struEtherNet[0].struDVRIP.sIpV4, session.Encoding),
77 | GateWay = StringUtils.ByteArray2String(m_struNetCfg.struGatewayIpAddr.sIpV4, session.Encoding),
78 | SubMask = StringUtils.ByteArray2String(m_struNetCfg.struEtherNet[0].struDVRIPMask.sIpV4, session.Encoding),
79 | Dns = StringUtils.ByteArray2String(m_struNetCfg.struDnsServer1IpAddr.sIpV4, session.Encoding),
80 | HostIP = StringUtils.ByteArray2String(m_struNetCfg.struAlarmHostIpAddr.sIpV4, session.Encoding),
81 | AlarmHostIpPort = Convert.ToInt32(m_struNetCfg.wAlarmHostIpPort),
82 | HttpPort = Convert.ToInt32(m_struNetCfg.wHttpPortNo),
83 | DVRPort = Convert.ToInt32(m_struNetCfg.struEtherNet[0].wDVRPort),
84 | DHCP = m_struNetCfg.byUseDhcp == 1,
85 | PPPoE = m_struNetCfg.struPPPoE.dwPPPOE == 1,
86 | PPPoEName = StringUtils.ByteArray2String(m_struNetCfg.struPPPoE.sPPPoEUser, session.Encoding),
87 | PPPoEPassword = m_struNetCfg.struPPPoE.sPPPoEPassword
88 | };
89 | return networkConfig;
90 | }
91 | catch
92 | {
93 | throw;
94 | }
95 | finally
96 | {
97 | Marshal.FreeHGlobal(ptrNetCfg);
98 | }
99 | }
100 |
101 |
102 | public HvDeviceConfig GetDeviceConfig()
103 | {
104 | NET_DVR_DEVICECFG_V40 m_struDeviceCfg = default;
105 |
106 | uint dwReturn = 0;
107 | int nSize = Marshal.SizeOf(m_struDeviceCfg);
108 | IntPtr ptrDeviceCfg = Marshal.AllocHGlobal(nSize);
109 | try
110 | {
111 | Marshal.StructureToPtr(m_struDeviceCfg, ptrDeviceCfg, false);
112 |
113 | Invoke(NET_DVR_GetDVRConfig(session.UserId, NET_DVR_GET_DEVICECFG_V40, -1, ptrDeviceCfg, (uint)nSize, ref dwReturn));
114 |
115 | m_struDeviceCfg = Marshal.PtrToStructure(ptrDeviceCfg);
116 |
117 | uint iVer1 = (m_struDeviceCfg.dwSoftwareVersion >> 24) & 0xFF;
118 | uint iVer2 = (m_struDeviceCfg.dwSoftwareVersion >> 16) & 0xFF;
119 | uint iVer3 = m_struDeviceCfg.dwSoftwareVersion & 0xFFFF;
120 | uint iVer4 = (m_struDeviceCfg.dwSoftwareBuildDate >> 16) & 0xFFFF;
121 | uint iVer5 = (m_struDeviceCfg.dwSoftwareBuildDate >> 8) & 0xFF;
122 | uint iVer6 = m_struDeviceCfg.dwSoftwareBuildDate & 0xFF;
123 |
124 | var deviceConfig = new HvDeviceConfig
125 | {
126 | Name = StringUtils.ByteArray2String(m_struDeviceCfg.sDVRName, session.Encoding),
127 | TypeName = StringUtils.ByteArray2String(m_struDeviceCfg.byDevTypeName, session.Encoding),
128 | AnalogChannel = Convert.ToInt32(m_struDeviceCfg.byChanNum),
129 | IPChannel = Convert.ToInt32(m_struDeviceCfg.byIPChanNum + 256 * m_struDeviceCfg.byHighIPChanNum),
130 | ZeroChannel = Convert.ToInt32(m_struDeviceCfg.byZeroChanNum),
131 | NetworkPort = Convert.ToInt32(m_struDeviceCfg.byNetworkPortNum),
132 | AlarmInPort = Convert.ToInt32(m_struDeviceCfg.byAlarmInPortNum),
133 | AlarmOutPort = Convert.ToInt32(m_struDeviceCfg.byAlarmOutPortNum),
134 | Serial = StringUtils.ByteArray2String(m_struDeviceCfg.sSerialNumber, session.Encoding),
135 | Version = $"V{iVer1}.{iVer2}.{iVer3} Build {iVer4,0:D2}{iVer5,0:D2}{iVer6,0:D2}"
136 | };
137 | return deviceConfig;
138 | }
139 | catch
140 | {
141 | throw;
142 | }
143 | finally
144 | {
145 | Marshal.FreeHGlobal(ptrDeviceCfg);
146 | }
147 | }
148 |
149 | ///
150 | /// 获取第一块硬盘信息
151 | ///
152 | ///
153 | public HvHdConfig GetHdConfig()
154 | {
155 | return GetHdConfigs().FirstOrDefault();
156 | }
157 |
158 | ///
159 | /// 获取全部硬盘信息
160 | ///
161 | ///
162 | public HvHdConfig[] GetHdConfigs()
163 | {
164 | NET_DVR_HDCFG hdConfig = default;
165 | uint returned = 0;
166 | int sizeOfConfig = Marshal.SizeOf(hdConfig);
167 | IntPtr ptrDeviceCfg = Marshal.AllocHGlobal(sizeOfConfig);
168 | try
169 | {
170 | Marshal.StructureToPtr(hdConfig, ptrDeviceCfg, false);
171 | Invoke(NET_DVR_GetDVRConfig(
172 | session.UserId,
173 | NET_DVR_GET_HDCFG,
174 | -1,
175 | ptrDeviceCfg,
176 | (uint)sizeOfConfig,
177 | ref returned));
178 |
179 | hdConfig = Marshal.PtrToStructure(ptrDeviceCfg);
180 | var disks = hdConfig.struHDInfo
181 | .Take((int)hdConfig.dwHDCount)
182 | .Select(x => new HvHdConfig(x))
183 | .ToArray();
184 | return disks;
185 | }
186 | catch
187 | {
188 | throw;
189 | }
190 | finally
191 | {
192 | Marshal.FreeHGlobal(ptrDeviceCfg);
193 | }
194 | }
195 |
196 | ///
197 | /// 获取RTSP端口
198 | ///
199 | ///
200 | public int GetRtspPort()
201 | {
202 | NET_DVR_RTSPCFG rtspConfig = default;
203 | var ptrSize = Marshal.SizeOf(rtspConfig);
204 | NET_DVR_GetRtspConfig(session.UserId, 0, ref rtspConfig, (uint)ptrSize);
205 | return rtspConfig.wPort;
206 | }
207 | }
208 | }
209 |
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Api/Service/PictureService.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Runtime.InteropServices.ComTypes;
4 | using System.Text;
5 | using static QuickNV.HikvisionNetSDK.Defines;
6 | using static QuickNV.HikvisionNetSDK.Methods;
7 |
8 | namespace QuickNV.HikvisionNetSDK.Api.Service
9 | {
10 | public class PictureService
11 | {
12 | private HvSession session;
13 | internal PictureService(HvSession session)
14 | {
15 | this.session = session;
16 | }
17 |
18 | public void CaptureJPEGPicture(int channelId, string fileName)
19 | {
20 | NET_DVR_JPEGPARA lpJpegPara = new NET_DVR_JPEGPARA();
21 | lpJpegPara.wPicQuality = 0; //图像质量 Image quality
22 | lpJpegPara.wPicSize = 0xff; //抓图分辨率 Picture size: 0xff-Auto(使用当前码流分辨率)
23 | //抓图分辨率需要设备支持,更多取值请参考SDK文档
24 | Invoke(NET_DVR_CaptureJPEGPicture(session.UserId, channelId, ref lpJpegPara, fileName));
25 | }
26 |
27 | public byte[] CaptureJPEGPicture_NEW(int channelId)
28 | {
29 | byte[] buffer = new byte[10 * 1024 * 1024];
30 | NET_DVR_JPEGPARA lpJpegPara = new NET_DVR_JPEGPARA();
31 | lpJpegPara.wPicQuality = 0; //图像质量 Image quality
32 | lpJpegPara.wPicSize = 0xff; //抓图分辨率 Picture size: 0xff-Auto(使用当前码流分辨率)
33 | uint ret = 0;
34 | Invoke(NET_DVR_CaptureJPEGPicture_NEW(session.UserId, channelId, ref lpJpegPara, buffer, (uint)buffer.Length, ref ret));
35 | var retBuffer = new byte[ret];
36 | Buffer.BlockCopy(buffer, 0, retBuffer, 0, (int)ret);
37 | return retBuffer;
38 | }
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Api/Service/SdkService.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Runtime.InteropServices;
4 | using System.Text;
5 | using static QuickNV.HikvisionNetSDK.Defines;
6 | using static QuickNV.HikvisionNetSDK.Methods;
7 |
8 | namespace QuickNV.HikvisionNetSDK.Api.Service
9 | {
10 | public class SdkService
11 | {
12 | private const int NET_SDK_LOCAL_CFG_TYPE_CHECK_DEV = 10;
13 | public bool SetConnectTime(uint waitTimeMilliseconds, uint tryTimes)
14 | => Invoke(NET_DVR_SetConnectTime(waitTimeMilliseconds, tryTimes)); // 2000 , 1
15 | public bool SetReconnect(uint interval, int enableRecon)
16 | => Invoke(NET_DVR_SetReconnect(interval, enableRecon)); // 10000 , 1
17 | public bool SetupLogs(HvLogLevel logLevel, string logDirectory, bool autoDelete)
18 | => Invoke(NET_DVR_SetLogToFile((int)logLevel, logDirectory, autoDelete));
19 |
20 | public NET_DVR_LOCAL_CHECK_DEV GetLocalCheckDev()
21 | {
22 | NET_DVR_LOCAL_CHECK_DEV config = default;
23 | var ptrSize = Marshal.SizeOf(config);
24 | IntPtr ptr = Marshal.AllocHGlobal(ptrSize);
25 | try
26 | {
27 | Invoke(NET_DVR_GetSDKLocalCfg(NET_SDK_LOCAL_CFG_TYPE_CHECK_DEV, ptr));
28 | config = Marshal.PtrToStructure(ptr);
29 | return config;
30 | }
31 | catch
32 | {
33 | throw;
34 | }
35 | finally
36 | {
37 | Marshal.FreeHGlobal(ptr);
38 | }
39 | }
40 |
41 | public void SetLocalCheckDev(NET_DVR_LOCAL_CHECK_DEV config)
42 | {
43 | IntPtr ptr = Marshal.AllocHGlobal(Marshal.SizeOf(config));
44 | try
45 | {
46 | Marshal.StructureToPtr(config, ptr, false);
47 | Invoke(NET_DVR_SetSDKLocalCfg(NET_SDK_LOCAL_CFG_TYPE_CHECK_DEV, ptr));
48 | }
49 | catch
50 | {
51 | throw;
52 | }
53 | finally
54 | {
55 | Marshal.FreeHGlobal(ptr);
56 | }
57 | }
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Api/Service/VideoFileService.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.IO;
4 | using System.Threading;
5 | using static QuickNV.HikvisionNetSDK.Defines;
6 | using static QuickNV.HikvisionNetSDK.Methods;
7 |
8 | namespace QuickNV.HikvisionNetSDK.Api.Service
9 | {
10 | public class VideoFileService
11 | {
12 | private HvSession session;
13 | internal VideoFileService(HvSession session)
14 | {
15 | this.session = session;
16 | }
17 |
18 | public HvRemoteFile[] FindFile(int channelId, DateTime startTime, DateTime stopTime)
19 | {
20 | NET_DVR_FILECOND_V40 findcond = new NET_DVR_FILECOND_V40()
21 | {
22 | lChannel = channelId,
23 | struStartTime = startTime.ToNET_DVR_TIME(),
24 | struStopTime = stopTime.ToNET_DVR_TIME(),
25 | };
26 | int iFindHandle = Invoke(NET_DVR_FindFile_V40(session.UserId, ref findcond));
27 | try
28 | {
29 | var fileList = new List();
30 | while (true)
31 | {
32 | NET_DVR_FINDDATA_V40 findData = default;
33 | var ret = Invoke(NET_DVR_FindNextFile_V40(iFindHandle, ref findData));
34 |
35 | //没有更多的文件,查找结束
36 | if (ret == NET_DVR_NOMOREFILE)
37 | break;
38 | //获取文件信息成功
39 | if (ret == NET_DVR_FILE_SUCCESS)
40 | {
41 | fileList.Add(new HvRemoteFile(findData));
42 | continue;
43 | }
44 | //未查找到文件
45 | if (ret == NET_DVR_FILE_NOFIND)
46 | break;
47 | //正在查找请等待
48 | if (ret == NET_DVR_ISFINDING)
49 | {
50 | Thread.Sleep(1000);
51 | continue;
52 | }
53 | //查找文件时异常
54 | if (ret == NET_DVR_FILE_EXCEPTION)
55 | {
56 | throw new IOException("NET_DVR_FindNextFile_V40 error,reason:" + NET_DVR_GetLastError());
57 | }
58 | throw new IOException($"NET_DVR_FindNextFile_V40 error,reason: Unknow return code:{ret}");
59 | }
60 | return fileList.ToArray();
61 | }
62 | catch
63 | {
64 | throw;
65 | }
66 | finally
67 | {
68 | NET_DVR_FindClose_V30(iFindHandle);
69 | }
70 | }
71 |
72 | public int StartDownloadFile(int channelId, DateTime startTime, DateTime stopTime, string destinationPath)
73 | {
74 | NET_DVR_PLAYCOND playcond = new NET_DVR_PLAYCOND()
75 | {
76 | dwChannel = (uint)channelId,
77 | struStartTime = startTime.ToNET_DVR_TIME(),
78 | struStopTime = stopTime.ToNET_DVR_TIME(),
79 | };
80 | int iPlayHandle = Invoke(NET_DVR_GetFileByTime_V40(session.UserId, destinationPath, ref playcond));
81 | uint iOutValue = 0;
82 | Invoke(NET_DVR_PlayBackControl_V40(iPlayHandle, NET_DVR_PLAYSTART, IntPtr.Zero, 0, IntPtr.Zero, ref iOutValue));
83 | return iPlayHandle;
84 | }
85 |
86 | public virtual int StartDownloadFile(string remoteFile, string destinationPath)
87 | {
88 | int iPlayHandle = Invoke(NET_DVR_GetFileByName(session.UserId, remoteFile, destinationPath));
89 | uint iOutValue = 0;
90 | Invoke(NET_DVR_PlayBackControl_V40(iPlayHandle, NET_DVR_PLAYSTART, IntPtr.Zero, 0, IntPtr.Zero, ref iOutValue));
91 | return iPlayHandle;
92 | }
93 |
94 | public int GetDownloadPosition(int fileHandle)=> Invoke(NET_DVR_GetDownloadPos(fileHandle));
95 | public void StopDownloadFile(int fileHandle)=> Invoke(NET_DVR_StopGetFile(fileHandle));
96 | }
97 | }
98 |
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Api/Utils/StringUtils.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Text;
4 |
5 | namespace QuickNV.HikvisionNetSDK.Api.Utils
6 | {
7 | public class StringUtils
8 | {
9 | public static string ByteArray2String(byte[] buffer)
10 | {
11 | return ByteArray2String(buffer, Encoding.ASCII);
12 | }
13 |
14 | public static string ByteArray2String(byte[] buffer, Encoding encoding)
15 | {
16 | return encoding.GetString(buffer).Trim(char.MinValue);
17 | }
18 |
19 | public static void String2ByteArray(string str, byte[] buffer)
20 | {
21 | String2ByteArray(str, buffer, Encoding.ASCII);
22 | }
23 |
24 | public static void String2ByteArray(string str, byte[] buffer, Encoding encoding)
25 | {
26 | encoding.GetBytes(str, 0, str.Length, buffer, 0);
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Generator/CHCNetSDK.cs:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Generator/CHCNetSDK.cs
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Generator/ErrorInfo.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace CHCNetSDK_Splitter
8 | {
9 | public class ErrorInfo
10 | {
11 | public string Name { get; set; }
12 | public string Value { get; set; }
13 | public string Description { get; set; }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Generator/Program.cs:
--------------------------------------------------------------------------------
1 | using CHCNetSDK_Splitter;
2 | using System.Linq;
3 | using System.Text;
4 | using System.Text.RegularExpressions;
5 |
6 | //源文件编码
7 | var sourceFileEncoding = CodePagesEncodingProvider.Instance.GetEncoding("gb2312");
8 | //源文件
9 | var sourceFile = "CHCNetSDK.cs";
10 | //方法开始前缀
11 | var methodStartLinePrefix = "[DllImport";
12 | //方法结束前缀
13 | var methodEndLinePrefix = "public static extern";
14 | //错误开始内容
15 | var errorStartContent = "全局错误码 begin";
16 | //错误结束内容
17 | var errorEndContent = "全局错误码 end";
18 |
19 | //方法正则表达式
20 | var methodRegex = new Regex(@"public static (?.*?) (?.*?)\((?.*?)\)");
21 | //错误正则表达式
22 | var errorRegex = new Regex("public const int (?.*?) = (?.*?);//(?.*)");
23 |
24 | //全部行
25 | var lines = File.ReadAllLines(sourceFile, sourceFileEncoding);
26 | var sbDefines = new StringBuilder();
27 | var sbMethods = new StringBuilder();
28 |
29 | var errorList = new List();
30 |
31 | var methodStartLineIndex = -1;
32 | var errorStartLineIndex = -1;
33 | var methodList =new List();
34 |
35 | for (var i = 0; i < lines.Length; i++)
36 | {
37 | var line = lines[i];
38 | var lineTrimed = line.Trim();
39 | if (lineTrimed.StartsWith("namespace "))
40 | line = "namespace QuickNV.HikvisionNetSDK";
41 | else if (lineTrimed.StartsWith("public class "))
42 | line = " public class Defines";
43 | else if (lineTrimed.StartsWith("public CHCNetSDK()"))
44 | line = " public Defines()";
45 | //如果是方法开始
46 | if (lineTrimed.StartsWith(methodStartLinePrefix))
47 | {
48 | methodStartLineIndex = i;
49 | line = " [DllImport(DllPath)]";
50 | }
51 | line = line.Replace("CHCNetSDK.", string.Empty);
52 | if (methodStartLineIndex >= 0)
53 | sbMethods.AppendLine(line);
54 | else
55 | sbDefines.AppendLine(line);
56 |
57 | //如果是方法结束
58 | if (lineTrimed.StartsWith(methodEndLinePrefix))
59 | {
60 | methodStartLineIndex = -1;
61 | methodList.Add(line);
62 | }
63 |
64 | //如果是错误结束
65 | if (lineTrimed.Contains(errorEndContent))
66 | {
67 | errorStartLineIndex = -1;
68 | }
69 | if (errorStartLineIndex >= 0)
70 | {
71 | var match = errorRegex.Match(lineTrimed);
72 | if (match.Success)
73 | {
74 | var name = match.Groups["Name"].Value;
75 | var value = match.Groups["Value"].Value;
76 | var description = match.Groups["Description"].Value;
77 | errorList.Add(new ErrorInfo()
78 | {
79 | Name = name,
80 | Value = value,
81 | Description = description
82 | });
83 | }
84 | }
85 | //如果是错误开始
86 | if (lineTrimed.Contains(errorStartContent))
87 | {
88 | errorStartLineIndex = i;
89 | }
90 | }
91 |
92 | var outFolder = "../../../../QuickNV.HikvisionNetSDK";
93 | Environment.CurrentDirectory = outFolder;
94 | //Defines.cs
95 | File.WriteAllText("Defines.cs", sbDefines.ToString());
96 | //Methods_Win.cs
97 | {
98 | var sb = new StringBuilder();
99 | sb.AppendLine(@"using System;
100 | using System.Runtime.InteropServices;
101 | using static QuickNV.HikvisionNetSDK.Defines;
102 |
103 | namespace QuickNV.HikvisionNetSDK
104 | {
105 | internal class Methods_Win
106 | {
107 | public const string DllPath = ""HCNetSDK.dll"";
108 | ");
109 | sb.Append(sbMethods);
110 | sb.AppendLine(" }");
111 | sb.AppendLine("}");
112 | File.WriteAllText("Methods_Win.cs", sb.ToString());
113 | }
114 | //Methods_Linux.cs
115 | {
116 | var sb = new StringBuilder();
117 | sb.AppendLine(@"using System;
118 | using System.Runtime.InteropServices;
119 | using static QuickNV.HikvisionNetSDK.Defines;
120 |
121 | namespace QuickNV.HikvisionNetSDK
122 | {
123 | internal class Methods_Linux
124 | {
125 | public const string DllPath = ""hcnetsdk.so"";
126 | ");
127 | sb.Append(sbMethods);
128 | sb.AppendLine(" }");
129 | sb.AppendLine("}");
130 | File.WriteAllText("Methods_Linux.cs", sb.ToString());
131 | }
132 | //Method.cs
133 | {
134 | var sb = new StringBuilder();
135 | sb.AppendLine(@"using System;
136 | using System.Collections.Generic;
137 | using System.Runtime.InteropServices;
138 | using System.Text;
139 | using static QuickNV.HikvisionNetSDK.Defines;
140 |
141 | namespace QuickNV.HikvisionNetSDK
142 | {
143 | public class Methods
144 | {
145 | private static bool IsWindows = Environment.OSVersion.Platform == PlatformID.Win32NT;
146 |
147 | public static int Invoke(int result)
148 | {
149 | if (result < 0)
150 | {
151 | uint lastErrorCode = NET_DVR_GetLastError();
152 | throw new HikvisionException(lastErrorCode);
153 | }
154 | return result;
155 | }
156 |
157 | public static bool Invoke(bool result)
158 | {
159 | if (!result)
160 | {
161 | uint lastErrorCode = NET_DVR_GetLastError();
162 | throw new HikvisionException(lastErrorCode);
163 | }
164 | return result;
165 | }
166 | ");
167 |
168 | foreach (var method in methodList)
169 | {
170 | var line = method
171 | .Replace(" extern ", " ")
172 | .Replace("CHCNetSDK.", string.Empty)
173 | .Replace(";", string.Empty);
174 | sb.AppendLine(line);
175 | sb.AppendLine(" {");
176 |
177 | var match = methodRegex.Match(line);
178 | var methodReturnType = match.Groups["ReturnType"].Value;
179 | var returnStr = methodReturnType == "void"?string.Empty:"return ";
180 | var methodMethodName = match.Groups["MethodName"].Value;
181 | var methodParameters = match.Groups["Parameters"].Value;
182 | var methodParameterList = new List();
183 | foreach (var str1 in methodParameters.Split(','))
184 | {
185 | var strs = str1.Split(' ', StringSplitOptions.RemoveEmptyEntries);
186 | if (strs.Length < 2)
187 | continue;
188 | else if (strs.Length == 2)
189 | methodParameterList.Add(strs[1]);
190 | else
191 | methodParameterList.Add(strs[0] + " " + strs[2]);
192 | }
193 | sb.AppendLine(" if (IsWindows)");
194 | sb.AppendLine($" {returnStr}Methods_Win.{methodMethodName}({string.Join(", ", methodParameterList)});");
195 | sb.AppendLine(" else");
196 | sb.AppendLine($" {returnStr}Methods_Linux.{methodMethodName}({string.Join(", ", methodParameterList)});");
197 | sb.AppendLine(" }");
198 | }
199 | sb.AppendLine(" }");
200 | sb.AppendLine("}");
201 | File.WriteAllText("Methods.cs", sb.ToString());
202 | }
203 | //Errors.cs
204 | {
205 | var sb = new StringBuilder();
206 | sb.AppendLine(@"using System.ComponentModel;
207 |
208 | namespace QuickNV.HikvisionNetSDK
209 | {
210 | public enum Errors
211 | {");
212 |
213 | for (var i = 0; i < errorList.Count; i++)
214 | {
215 | var error = errorList[i];
216 | sb.AppendLine($" [Description(\"{error.Description}\")]");
217 | sb.Append($" {error.Name} = {error.Value}");
218 | if (i == errorList.Count - 1)
219 | sb.AppendLine();
220 | else
221 | sb.AppendLine(",");
222 | }
223 | sb.AppendLine(" }");
224 | sb.AppendLine("}");
225 | File.WriteAllText("Errors.cs", sb.ToString());
226 | }
227 | Console.WriteLine("Done");
228 |
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Generator/QuickNV.HikvisionNetSDK.Generator.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Exe
5 | net8.0
6 | enable
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | PreserveNewest
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/QuickNV.HikvisionNetSDK.Native.nuspec:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | QuickNV.HikvisionNetSDK.Native
5 | 1.0.3
6 | Hikvision
7 | Hikvision
8 | false
9 | logo.png
10 | https://github.com/QuickNV/QuickNV.HikvisionNetSDK
11 | Native Hikvision NetSDK binaries(v6.1.9.48).Include win-x64,linux-x64,linux-arm64.
12 | Public Domain
13 | Hikvision,NetSDK
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/build/net45/Hikvision.NetSDK.Native.props:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | x86\%(Filename)%(Extension)
6 | PreserveNewest
7 | False
8 |
9 |
10 | x64\%(Filename)%(Extension)
11 | PreserveNewest
12 | False
13 |
14 |
15 |
16 |
17 | %(Filename)%(Extension)
18 | PreserveNewest
19 | False
20 |
21 |
22 |
23 |
24 | %(Filename)%(Extension)
25 | PreserveNewest
26 | False
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/lib/netstandard1.0/_._:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/lib/netstandard1.0/_._
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/logo.png
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-arm64/native/HCNetSDKCom/libAudioIntercom.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-arm64/native/HCNetSDKCom/libAudioIntercom.so
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-arm64/native/HCNetSDKCom/libHCAlarm.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-arm64/native/HCNetSDKCom/libHCAlarm.so
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-arm64/native/HCNetSDKCom/libHCCoreDevCfg.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-arm64/native/HCNetSDKCom/libHCCoreDevCfg.so
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-arm64/native/HCNetSDKCom/libHCDisplay.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-arm64/native/HCNetSDKCom/libHCDisplay.so
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-arm64/native/HCNetSDKCom/libHCGeneralCfgMgr.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-arm64/native/HCNetSDKCom/libHCGeneralCfgMgr.so
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-arm64/native/HCNetSDKCom/libHCIndustry.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-arm64/native/HCNetSDKCom/libHCIndustry.so
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-arm64/native/HCNetSDKCom/libHCPlayBack.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-arm64/native/HCNetSDKCom/libHCPlayBack.so
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-arm64/native/HCNetSDKCom/libHCPreview.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-arm64/native/HCNetSDKCom/libHCPreview.so
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-arm64/native/HCNetSDKCom/libHCVoiceTalk.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-arm64/native/HCNetSDKCom/libHCVoiceTalk.so
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-arm64/native/HCNetSDKCom/libStreamTransClient.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-arm64/native/HCNetSDKCom/libStreamTransClient.so
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-arm64/native/HCNetSDKCom/libSystemTransform.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-arm64/native/HCNetSDKCom/libSystemTransform.so
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-arm64/native/HCNetSDKCom/libanalyzedata.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-arm64/native/HCNetSDKCom/libanalyzedata.so
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-arm64/native/HCNetSDKCom/libiconv.so.2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-arm64/native/HCNetSDKCom/libiconv.so.2
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-arm64/native/HCNetSDK_Log_Switch.xml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-arm64/native/HCNetSDK_Log_Switch.xml
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-arm64/native/libAudioRender.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-arm64/native/libAudioRender.so
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-arm64/native/libHCCore.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-arm64/native/libHCCore.so
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-arm64/native/libPlayCtrl.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-arm64/native/libPlayCtrl.so
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-arm64/native/libSuperRender.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-arm64/native/libSuperRender.so
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-arm64/native/libcrypto.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-arm64/native/libcrypto.so
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-arm64/native/libcrypto.so.1.1:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-arm64/native/libcrypto.so.1.1
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-arm64/native/libhcnetsdk.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-arm64/native/libhcnetsdk.so
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-arm64/native/libhpr.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-arm64/native/libhpr.so
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-arm64/native/libssl.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-arm64/native/libssl.so
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-arm64/native/libssl.so.1.1:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-arm64/native/libssl.so.1.1
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-arm64/native/libz.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-arm64/native/libz.so
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-x64/native/HCNetSDKCom/libAudioIntercom.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-x64/native/HCNetSDKCom/libAudioIntercom.so
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-x64/native/HCNetSDKCom/libHCAlarm.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-x64/native/HCNetSDKCom/libHCAlarm.so
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-x64/native/HCNetSDKCom/libHCCoreDevCfg.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-x64/native/HCNetSDKCom/libHCCoreDevCfg.so
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-x64/native/HCNetSDKCom/libHCDisplay.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-x64/native/HCNetSDKCom/libHCDisplay.so
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-x64/native/HCNetSDKCom/libHCGeneralCfgMgr.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-x64/native/HCNetSDKCom/libHCGeneralCfgMgr.so
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-x64/native/HCNetSDKCom/libHCIndustry.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-x64/native/HCNetSDKCom/libHCIndustry.so
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-x64/native/HCNetSDKCom/libHCPlayBack.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-x64/native/HCNetSDKCom/libHCPlayBack.so
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-x64/native/HCNetSDKCom/libHCPreview.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-x64/native/HCNetSDKCom/libHCPreview.so
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-x64/native/HCNetSDKCom/libHCVoiceTalk.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-x64/native/HCNetSDKCom/libHCVoiceTalk.so
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-x64/native/HCNetSDKCom/libStreamTransClient.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-x64/native/HCNetSDKCom/libStreamTransClient.so
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-x64/native/HCNetSDKCom/libSystemTransform.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-x64/native/HCNetSDKCom/libSystemTransform.so
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-x64/native/HCNetSDKCom/libanalyzedata.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-x64/native/HCNetSDKCom/libanalyzedata.so
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-x64/native/HCNetSDKCom/libiconv2.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-x64/native/HCNetSDKCom/libiconv2.so
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-x64/native/HCNetSDK_Log_Switch.xml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-x64/native/HCNetSDK_Log_Switch.xml
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-x64/native/libAudioRender.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-x64/native/libAudioRender.so
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-x64/native/libHCCore.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-x64/native/libHCCore.so
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-x64/native/libNPQos.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-x64/native/libNPQos.so
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-x64/native/libPlayCtrl.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-x64/native/libPlayCtrl.so
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-x64/native/libSuperRender.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-x64/native/libSuperRender.so
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-x64/native/libcrypto.so.1.1:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-x64/native/libcrypto.so.1.1
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-x64/native/libhcnetsdk.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-x64/native/libhcnetsdk.so
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-x64/native/libhpr.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-x64/native/libhpr.so
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-x64/native/libopenal.so.1:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-x64/native/libopenal.so.1
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-x64/native/libssl.so.1.1:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-x64/native/libssl.so.1.1
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-x64/native/libz.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/linux-x64/native/libz.so
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/AudioRender.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/AudioRender.dll
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/GdiPlus.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/GdiPlus.dll
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/HCCore.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/HCCore.dll
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/HCNetSDK.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/HCNetSDK.dll
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/HCNetSDKCom/AnalyzeData.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/HCNetSDKCom/AnalyzeData.dll
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/HCNetSDKCom/AudioIntercom.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/HCNetSDKCom/AudioIntercom.dll
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/HCNetSDKCom/AudioRender.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/HCNetSDKCom/AudioRender.dll
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/HCNetSDKCom/HCAlarm.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/HCNetSDKCom/HCAlarm.dll
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/HCNetSDKCom/HCCoreDevCfg.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/HCNetSDKCom/HCCoreDevCfg.dll
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/HCNetSDKCom/HCDisplay.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/HCNetSDKCom/HCDisplay.dll
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/HCNetSDKCom/HCGeneralCfgMgr.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/HCNetSDKCom/HCGeneralCfgMgr.dll
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/HCNetSDKCom/HCIndustry.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/HCNetSDKCom/HCIndustry.dll
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/HCNetSDKCom/HCPlayBack.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/HCNetSDKCom/HCPlayBack.dll
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/HCNetSDKCom/HCPreview.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/HCNetSDKCom/HCPreview.dll
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/HCNetSDKCom/HCVoiceTalk.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/HCNetSDKCom/HCVoiceTalk.dll
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/HCNetSDKCom/OpenAL32.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/HCNetSDKCom/OpenAL32.dll
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/HCNetSDKCom/StreamTransClient.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/HCNetSDKCom/StreamTransClient.dll
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/HCNetSDKCom/SystemTransform.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/HCNetSDKCom/SystemTransform.dll
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/HCNetSDKCom/libiconv2.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/HCNetSDKCom/libiconv2.dll
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/HXVA.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/HXVA.dll
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/HmMerge.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/HmMerge.dll
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/LocalSensorAdd.dat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/LocalSensorAdd.dat
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/LocalXml.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/LocalXml.zip
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/MP_Render.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/MP_Render.dll
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/NPQos.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/NPQos.dll
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/OpenAL32.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/OpenAL32.dll
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/PlayCtrl.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/PlayCtrl.dll
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/SuperRender.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/SuperRender.dll
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/YUVProcess.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/YUVProcess.dll
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/hlog.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/hlog.dll
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/hpr.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/hpr.dll
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/libcrypto-1_1-x64.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/libcrypto-1_1-x64.dll
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/libmmd.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/libmmd.dll
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/libssl-1_1-x64.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/libssl-1_1-x64.dll
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/zlib1.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/QuickNV/QuickNV.HikvisionNetSDK/d9f8ce2da4d5bc0bc1dad559d7cd89fd0b50a4bd/src/QuickNV.HikvisionNetSDK.Native/runtimes/win-x64/native/zlib1.dll
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Sample/Program.cs:
--------------------------------------------------------------------------------
1 | using static QuickNV.HikvisionNetSDK.Defines;
2 | using static QuickNV.HikvisionNetSDK.Methods;
3 |
4 | var host = "127.0.0.1";
5 | var port = 8000;
6 | var user = "admin";
7 | var password = "123456";
8 |
9 | try
10 | {
11 | NET_DVR_Init();
12 | Console.WriteLine("初始化成功!");
13 | //登录
14 | Console.WriteLine("正在登录...");
15 | NET_DVR_DEVICEINFO_V30 deviceInfo = default;
16 | var userId = Invoke(NET_DVR_Login_V30(host, port, user, password, ref deviceInfo));
17 | Console.WriteLine("登录成功!");
18 | //退出登录
19 | NET_DVR_Logout_V30(userId);
20 | Console.WriteLine("退出登录完成");
21 | //清理
22 | NET_DVR_Cleanup();
23 | Console.WriteLine("清理完成");
24 | }
25 | catch (Exception ex)
26 | {
27 | Console.WriteLine(ex.ToString());
28 | }
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.Sample/QuickNV.HikvisionNetSDK.Sample.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Exe
5 | net8.0
6 | enable
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio Version 17
4 | VisualStudioVersion = 17.5.33516.290
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "QuickNV.HikvisionNetSDK", "QuickNV.HikvisionNetSDK\QuickNV.HikvisionNetSDK.csproj", "{314B6538-5FF4-48D4-88D2-497B0C552E99}"
7 | EndProject
8 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "QuickNV.HikvisionNetSDK.Generator", "QuickNV.HikvisionNetSDK.Generator\QuickNV.HikvisionNetSDK.Generator.csproj", "{C0F156BC-ECE2-4030-B620-CD8693F9843C}"
9 | EndProject
10 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "QuickNV.HikvisionNetSDK.Sample", "QuickNV.HikvisionNetSDK.Sample\QuickNV.HikvisionNetSDK.Sample.csproj", "{8C3B597A-4765-489F-A853-E5866DA6EDBB}"
11 | EndProject
12 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "QuickNV.HikvisionNetSDK.Api", "QuickNV.HikvisionNetSDK.Api\QuickNV.HikvisionNetSDK.Api.csproj", "{BE66715C-57D0-46B4-9FC4-E220A09E55BD}"
13 | EndProject
14 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "QuickNV.HikvisionNetSDK.Api.Sample", "QuickNV.HikvisionNetSDK.Api.Sample\QuickNV.HikvisionNetSDK.Api.Sample.csproj", "{7C7AAFC8-0528-4EE4-A681-9695631FB094}"
15 | EndProject
16 | Global
17 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
18 | Debug|Any CPU = Debug|Any CPU
19 | Release|Any CPU = Release|Any CPU
20 | EndGlobalSection
21 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
22 | {314B6538-5FF4-48D4-88D2-497B0C552E99}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
23 | {314B6538-5FF4-48D4-88D2-497B0C552E99}.Debug|Any CPU.Build.0 = Debug|Any CPU
24 | {314B6538-5FF4-48D4-88D2-497B0C552E99}.Release|Any CPU.ActiveCfg = Release|Any CPU
25 | {314B6538-5FF4-48D4-88D2-497B0C552E99}.Release|Any CPU.Build.0 = Release|Any CPU
26 | {C0F156BC-ECE2-4030-B620-CD8693F9843C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
27 | {C0F156BC-ECE2-4030-B620-CD8693F9843C}.Debug|Any CPU.Build.0 = Debug|Any CPU
28 | {C0F156BC-ECE2-4030-B620-CD8693F9843C}.Release|Any CPU.ActiveCfg = Release|Any CPU
29 | {C0F156BC-ECE2-4030-B620-CD8693F9843C}.Release|Any CPU.Build.0 = Release|Any CPU
30 | {8C3B597A-4765-489F-A853-E5866DA6EDBB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
31 | {8C3B597A-4765-489F-A853-E5866DA6EDBB}.Debug|Any CPU.Build.0 = Debug|Any CPU
32 | {8C3B597A-4765-489F-A853-E5866DA6EDBB}.Release|Any CPU.ActiveCfg = Release|Any CPU
33 | {8C3B597A-4765-489F-A853-E5866DA6EDBB}.Release|Any CPU.Build.0 = Release|Any CPU
34 | {BE66715C-57D0-46B4-9FC4-E220A09E55BD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
35 | {BE66715C-57D0-46B4-9FC4-E220A09E55BD}.Debug|Any CPU.Build.0 = Debug|Any CPU
36 | {BE66715C-57D0-46B4-9FC4-E220A09E55BD}.Release|Any CPU.ActiveCfg = Release|Any CPU
37 | {BE66715C-57D0-46B4-9FC4-E220A09E55BD}.Release|Any CPU.Build.0 = Release|Any CPU
38 | {7C7AAFC8-0528-4EE4-A681-9695631FB094}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
39 | {7C7AAFC8-0528-4EE4-A681-9695631FB094}.Debug|Any CPU.Build.0 = Debug|Any CPU
40 | {7C7AAFC8-0528-4EE4-A681-9695631FB094}.Release|Any CPU.ActiveCfg = Release|Any CPU
41 | {7C7AAFC8-0528-4EE4-A681-9695631FB094}.Release|Any CPU.Build.0 = Release|Any CPU
42 | EndGlobalSection
43 | GlobalSection(SolutionProperties) = preSolution
44 | HideSolutionNode = FALSE
45 | EndGlobalSection
46 | GlobalSection(ExtensibilityGlobals) = postSolution
47 | SolutionGuid = {577DB075-88EC-4192-94FB-320BA1F35F09}
48 | EndGlobalSection
49 | EndGlobal
50 |
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK/Errors.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel;
2 |
3 | namespace QuickNV.HikvisionNetSDK
4 | {
5 | public enum Errors
6 | {
7 | [Description("没有错误")]
8 | NET_DVR_NOERROR = 0,
9 | [Description("用户名密码错误")]
10 | NET_DVR_PASSWORD_ERROR = 1,
11 | [Description("权限不足")]
12 | NET_DVR_NOENOUGHPRI = 2,
13 | [Description("没有初始化")]
14 | NET_DVR_NOINIT = 3,
15 | [Description("通道号错误")]
16 | NET_DVR_CHANNEL_ERROR = 4,
17 | [Description("连接到DVR的客户端个数超过最大")]
18 | NET_DVR_OVER_MAXLINK = 5,
19 | [Description("版本不匹配")]
20 | NET_DVR_VERSIONNOMATCH = 6,
21 | [Description("连接服务器失败")]
22 | NET_DVR_NETWORK_FAIL_CONNECT = 7,
23 | [Description("向服务器发送失败")]
24 | NET_DVR_NETWORK_SEND_ERROR = 8,
25 | [Description("从服务器接收数据失败")]
26 | NET_DVR_NETWORK_RECV_ERROR = 9,
27 | [Description("从服务器接收数据超时")]
28 | NET_DVR_NETWORK_RECV_TIMEOUT = 10,
29 | [Description("传送的数据有误")]
30 | NET_DVR_NETWORK_ERRORDATA = 11,
31 | [Description("调用次序错误")]
32 | NET_DVR_ORDER_ERROR = 12,
33 | [Description("无此权限")]
34 | NET_DVR_OPERNOPERMIT = 13,
35 | [Description("DVR命令执行超时")]
36 | NET_DVR_COMMANDTIMEOUT = 14,
37 | [Description("串口号错误")]
38 | NET_DVR_ERRORSERIALPORT = 15,
39 | [Description("报警端口错误")]
40 | NET_DVR_ERRORALARMPORT = 16,
41 | [Description("参数错误")]
42 | NET_DVR_PARAMETER_ERROR = 17,
43 | [Description("服务器通道处于错误状态")]
44 | NET_DVR_CHAN_EXCEPTION = 18,
45 | [Description("没有硬盘")]
46 | NET_DVR_NODISK = 19,
47 | [Description("硬盘号错误")]
48 | NET_DVR_ERRORDISKNUM = 20,
49 | [Description("服务器硬盘满")]
50 | NET_DVR_DISK_FULL = 21,
51 | [Description("服务器硬盘出错")]
52 | NET_DVR_DISK_ERROR = 22,
53 | [Description("服务器不支持")]
54 | NET_DVR_NOSUPPORT = 23,
55 | [Description("服务器忙")]
56 | NET_DVR_BUSY = 24,
57 | [Description("服务器修改不成功")]
58 | NET_DVR_MODIFY_FAIL = 25,
59 | [Description("密码输入格式不正确")]
60 | NET_DVR_PASSWORD_FORMAT_ERROR = 26,
61 | [Description("硬盘正在格式化,不能启动操作")]
62 | NET_DVR_DISK_FORMATING = 27,
63 | [Description("DVR资源不足")]
64 | NET_DVR_DVRNORESOURCE = 28,
65 | [Description("DVR操作失败")]
66 | NET_DVR_DVROPRATEFAILED = 29,
67 | [Description("打开PC声音失败")]
68 | NET_DVR_OPENHOSTSOUND_FAIL = 30,
69 | [Description("服务器语音对讲被占用")]
70 | NET_DVR_DVRVOICEOPENED = 31,
71 | [Description("时间输入不正确")]
72 | NET_DVR_TIMEINPUTERROR = 32,
73 | [Description("回放时服务器没有指定的文件")]
74 | NET_DVR_NOSPECFILE = 33,
75 | [Description("创建文件出错")]
76 | NET_DVR_CREATEFILE_ERROR = 34,
77 | [Description("打开文件出错")]
78 | NET_DVR_FILEOPENFAIL = 35,
79 | [Description("获取当前播放的时间出错")]
80 | NET_DVR_GETPLAYTIMEFAIL = 37,
81 | [Description("播放出错")]
82 | NET_DVR_PLAYFAIL = 38,
83 | [Description("文件格式不正确")]
84 | NET_DVR_FILEFORMAT_ERROR = 39,
85 | [Description("路径错误")]
86 | NET_DVR_DIR_ERROR = 40,
87 | [Description("资源分配错误")]
88 | NET_DVR_ALLOC_RESOURCE_ERROR = 41,
89 | [Description("声卡模式错误")]
90 | NET_DVR_AUDIO_MODE_ERROR = 42,
91 | [Description("缓冲区太小")]
92 | NET_DVR_NOENOUGH_BUF = 43,
93 | [Description("创建SOCKET出错")]
94 | NET_DVR_CREATESOCKET_ERROR = 44,
95 | [Description("设置SOCKET出错")]
96 | NET_DVR_SETSOCKET_ERROR = 45,
97 | [Description("个数达到最大")]
98 | NET_DVR_MAX_NUM = 46,
99 | [Description("用户不存在")]
100 | NET_DVR_USERNOTEXIST = 47,
101 | [Description("写FLASH出错")]
102 | NET_DVR_WRITEFLASHERROR = 48,
103 | [Description("DVR升级失败")]
104 | NET_DVR_UPGRADEFAIL = 49,
105 | [Description("解码卡已经初始化过")]
106 | NET_DVR_CARDHAVEINIT = 50,
107 | [Description("调用播放库中某个函数失败")]
108 | NET_DVR_PLAYERFAILED = 51,
109 | [Description("设备端用户数达到最大")]
110 | NET_DVR_MAX_USERNUM = 52,
111 | [Description("获得客户端的IP地址或物理地址失败")]
112 | NET_DVR_GETLOCALIPANDMACFAIL = 53,
113 | [Description("该通道没有编码")]
114 | NET_DVR_NOENCODEING = 54,
115 | [Description("IP地址不匹配")]
116 | NET_DVR_IPMISMATCH = 55,
117 | [Description("MAC地址不匹配")]
118 | NET_DVR_MACMISMATCH = 56,
119 | [Description("升级文件语言不匹配")]
120 | NET_DVR_UPGRADELANGMISMATCH = 57,
121 | [Description("播放器路数达到最大")]
122 | NET_DVR_MAX_PLAYERPORT = 58,
123 | [Description("备份设备中没有足够空间进行备份")]
124 | NET_DVR_NOSPACEBACKUP = 59,
125 | [Description("没有找到指定的备份设备")]
126 | NET_DVR_NODEVICEBACKUP = 60,
127 | [Description("图像素位数不符,限24色")]
128 | NET_DVR_PICTURE_BITS_ERROR = 61,
129 | [Description("图片高*宽超限, 限128*256")]
130 | NET_DVR_PICTURE_DIMENSION_ERROR = 62,
131 | [Description("图片大小超限,限100K")]
132 | NET_DVR_PICTURE_SIZ_ERROR = 63,
133 | [Description("载入当前目录下Player Sdk出错")]
134 | NET_DVR_LOADPLAYERSDKFAILED = 64,
135 | [Description("找不到Player Sdk中某个函数入口")]
136 | NET_DVR_LOADPLAYERSDKPROC_ERROR = 65,
137 | [Description("载入当前目录下DSsdk出错")]
138 | NET_DVR_LOADDSSDKFAILED = 66,
139 | [Description("找不到DsSdk中某个函数入口")]
140 | NET_DVR_LOADDSSDKPROC_ERROR = 67,
141 | [Description("调用硬解码库DsSdk中某个函数失败")]
142 | NET_DVR_DSSDK_ERROR = 68,
143 | [Description("声卡被独占")]
144 | NET_DVR_VOICEMONOPOLIZE = 69,
145 | [Description("加入多播组失败")]
146 | NET_DVR_JOINMULTICASTFAILED = 70,
147 | [Description("建立日志文件目录失败")]
148 | NET_DVR_CREATEDIR_ERROR = 71,
149 | [Description("绑定套接字失败")]
150 | NET_DVR_BINDSOCKET_ERROR = 72,
151 | [Description("socket连接中断,此错误通常是由于连接中断或目的地不可达")]
152 | NET_DVR_SOCKETCLOSE_ERROR = 73,
153 | [Description("注销时用户ID正在进行某操作")]
154 | NET_DVR_USERID_ISUSING = 74,
155 | [Description("监听失败")]
156 | NET_DVR_SOCKETLISTEN_ERROR = 75,
157 | [Description("程序异常")]
158 | NET_DVR_PROGRAM_EXCEPTION = 76,
159 | [Description("写文件失败")]
160 | NET_DVR_WRITEFILE_FAILED = 77,
161 | [Description("禁止格式化只读硬盘")]
162 | NET_DVR_FORMAT_READONLY = 78,
163 | [Description("用户配置结构中存在相同的用户名")]
164 | NET_DVR_WITHSAMEUSERNAME = 79,
165 | [Description("导入参数时设备型号不匹配")]
166 | NET_DVR_DEVICETYPE_ERROR = 80,
167 | [Description("导入参数时语言不匹配")]
168 | NET_DVR_LANGUAGE_ERROR = 81,
169 | [Description("导入参数时软件版本不匹配")]
170 | NET_DVR_PARAVERSION_ERROR = 82,
171 | [Description("加载高清IPC通讯库StreamTransClient.dll失败")]
172 | NET_DVR_RTSP_SDK_ERROR = 84,
173 | [Description("加载转码库失败")]
174 | NET_DVR_CONVERT_SDK_ERROR = 85,
175 | [Description("超出最大的ip接入通道数")]
176 | NET_DVR_IPC_COUNT_OVERFLOW = 86,
177 | [Description("no error")]
178 | NET_PLAYM4_NOERROR = 500,
179 | [Description("input parameter is invalid")]
180 | NET_PLAYM4_PARA_OVER = 501,
181 | [Description("The order of the function to be called is error")]
182 | NET_PLAYM4_ORDER_ERROR = 502,
183 | [Description("Create multimedia clock failed")]
184 | NET_PLAYM4_TIMER_ERROR = 503,
185 | [Description("Decode video data failed")]
186 | NET_PLAYM4_DEC_VIDEO_ERROR = 504,
187 | [Description("Decode audio data failed")]
188 | NET_PLAYM4_DEC_AUDIO_ERROR = 505,
189 | [Description("Allocate memory failed")]
190 | NET_PLAYM4_ALLOC_MEMORY_ERROR = 506,
191 | [Description("Open the file failed")]
192 | NET_PLAYM4_OPEN_FILE_ERROR = 507,
193 | [Description("Create thread or event failed")]
194 | NET_PLAYM4_CREATE_OBJ_ERROR = 508,
195 | [Description("Create DirectDraw object failed")]
196 | NET_PLAYM4_CREATE_DDRAW_ERROR = 509,
197 | [Description("failed when creating off-screen surface")]
198 | NET_PLAYM4_CREATE_OFFSCREEN_ERROR = 510,
199 | [Description("buffer is overflow")]
200 | NET_PLAYM4_BUF_OVER = 511,
201 | [Description("failed when creating audio device")]
202 | NET_PLAYM4_CREATE_SOUND_ERROR = 512,
203 | [Description("Set volume failed")]
204 | NET_PLAYM4_SET_VOLUME_ERROR = 513,
205 | [Description("The function only support play file")]
206 | NET_PLAYM4_SUPPORT_FILE_ONLY = 514,
207 | [Description("The function only support play stream")]
208 | NET_PLAYM4_SUPPORT_STREAM_ONLY = 515,
209 | [Description("System not support")]
210 | NET_PLAYM4_SYS_NOT_SUPPORT = 516,
211 | [Description("No file header")]
212 | NET_PLAYM4_FILEHEADER_UNKNOWN = 517,
213 | [Description("The version of decoder and encoder is not adapted")]
214 | NET_PLAYM4_VERSION_INCORRECT = 518,
215 | [Description("Initialize decoder failed")]
216 | NET_PALYM4_INIT_DECODER_ERROR = 519,
217 | [Description("The file data is unknown")]
218 | NET_PLAYM4_CHECK_FILE_ERROR = 520,
219 | [Description("Initialize multimedia clock failed")]
220 | NET_PLAYM4_INIT_TIMER_ERROR = 521,
221 | [Description("Blt failed")]
222 | NET_PLAYM4_BLT_ERROR = 522,
223 | [Description("Update failed")]
224 | NET_PLAYM4_UPDATE_ERROR = 523,
225 | [Description("openfile error, streamtype is multi")]
226 | NET_PLAYM4_OPEN_FILE_ERROR_MULTI = 524,
227 | [Description("openfile error, streamtype is video")]
228 | NET_PLAYM4_OPEN_FILE_ERROR_VIDEO = 525,
229 | [Description("JPEG compress error")]
230 | NET_PLAYM4_JPEG_COMPRESS_ERROR = 526,
231 | [Description("Don't support the version of this file")]
232 | NET_PLAYM4_EXTRACT_NOT_SUPPORT = 527,
233 | [Description("extract video data failed")]
234 | NET_PLAYM4_EXTRACT_DATA_ERROR = 528
235 | }
236 | }
237 |
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK/HikvisionException.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.ComponentModel;
3 | using System.Reflection;
4 |
5 | namespace QuickNV.HikvisionNetSDK
6 | {
7 | public class HikvisionException : Exception
8 | {
9 | private string _Message;
10 | public uint ErrorCode { get; }
11 | public override string Message => _Message;
12 |
13 | public HikvisionException(uint errorCode)
14 | {
15 | ErrorCode = errorCode;
16 | _Message = GetEnumDescription((Errors)ErrorCode);
17 | }
18 |
19 | private static string GetEnumDescription(Errors value)
20 | {
21 | string val = value.ToString();
22 | FieldInfo fi = value.GetType().GetField(val);
23 | val = fi.GetCustomAttribute()?.Description;
24 | if (string.IsNullOrEmpty(val))
25 | val = value.ToString();
26 | return val;
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK/HikvisionExtensions.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using static QuickNV.HikvisionNetSDK.Defines;
3 |
4 | namespace QuickNV.HikvisionNetSDK
5 | {
6 | public static class HikvisionExtensions
7 | {
8 | public static DateTime ToDateTime(this NET_DVR_TIME time)
9 | {
10 | return new DateTime(time.dwYear, time.dwMonth, time.dwDay, time.dwHour, time.dwMinute, time.dwSecond, DateTimeKind.Local);
11 | }
12 |
13 | public static NET_DVR_TIME ToNET_DVR_TIME(this DateTime time)
14 | {
15 | return new NET_DVR_TIME()
16 | {
17 | dwYear = time.Year,
18 | dwMonth = time.Month,
19 | dwDay = time.Day,
20 | dwHour = time.Hour,
21 | dwMinute = time.Minute,
22 | dwSecond = time.Second
23 | };
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK/Methods_Win.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Runtime.InteropServices;
3 | using static QuickNV.HikvisionNetSDK.Defines;
4 |
5 | namespace QuickNV.HikvisionNetSDK
6 | {
7 | internal class Methods_Win
8 | {
9 | public const string DllPath = "HCNetSDK.dll";
10 |
11 | [DllImport(DllPath)]
12 | public static extern int NET_DVR_SendWithRecvRemoteConfig(int lHandle, IntPtr lpInBuff, uint dwInBuffSize, IntPtr lpOutBuff, uint dwOutBuffSize, ref uint dwOutDataLen);
13 | [DllImport(DllPath)]
14 | public static extern int NET_DVR_SendWithRecvRemoteConfig(int lHandle, ref NET_DVR_FACE_RECORD lpInBuff, int dwInBuffSize, ref NET_DVR_FACE_STATUS lpOutBuff, int dwOutBuffSize, IntPtr dwOutDataLen);
15 | [DllImport(DllPath)]
16 | public static extern int NET_DVR_SendWithRecvRemoteConfig(int lHandle, ref NET_DVR_FINGERPRINT_RECORD lpInBuff, int dwInBuffSize, ref NET_DVR_FINGERPRINT_STATUS lpOutBuff, int dwOutBuffSize, IntPtr dwOutDataLen);
17 | [DllImport(DllPath)]
18 | public static extern bool NET_DVR_STDXMLConfig(int lUserID, IntPtr lpInputParam, IntPtr lpOutputParam);
19 | [DllImport(DllPath)]
20 | public static extern bool NET_DVR_ControlGateway(int lUserID, int lGatewayIndex, uint dwStaic);
21 | [DllImport(DllPath)]
22 | public static extern bool NET_DVR_SetDVRMessageCallBack_V50(int iIndex, MSGCallBack fMessageCallBack, IntPtr pUser);
23 | [DllImport(DllPath)]
24 | public static extern int NET_DVR_GetNextRemoteConfig(int lHandle, ref NET_DVR_CAPTURE_FACE_CFG lpOutBuff, int dwOutBuffSize);
25 | [DllImport(DllPath)]
26 | public static extern int NET_DVR_GetNextRemoteConfig(int lHandle, ref NET_DVR_FINGER_PRINT_INFO_STATUS_V50 lpOutBuff, int dwOutBuffSize);
27 | [DllImport(DllPath)]
28 | public static extern int NET_DVR_GetNextRemoteConfig(int lHandle, ref NET_DVR_ACS_EVENT_CFG lpOutBuff, int dwOutBuffSize);
29 | [DllImport(DllPath)]
30 | public static extern int NET_DVR_GetNextRemoteConfig(int lHandle, ref NET_DVR_FINGERPRINT_RECORD lpOutBuff, int dwOutBuffSize);
31 | [DllImport(DllPath)]
32 | public static extern int NET_DVR_GetNextRemoteConfig(int lHandle, ref NET_DVR_CAPTURE_FINGERPRINT_CFG lpOutBuff, int dwOutBuffSize);
33 | [DllImport(DllPath)]
34 | public static extern int NET_DVR_GetNextRemoteConfig(int lHandle, ref NET_DVR_FACE_RECORD lpOutBuff, int dwOutBuffSize);
35 | [DllImport(DllPath)]
36 | public static extern bool NET_DVR_Init();
37 | [DllImport(DllPath)]
38 | public static extern bool NET_DVR_Cleanup();
39 | [DllImport(DllPath)]
40 | public static extern bool NET_DVR_SetDVRMessage(uint nMessage, IntPtr hWnd);
41 | [DllImport(DllPath)]
42 | public static extern bool NET_DVR_SetExceptionCallBack_V30(uint nMessage, IntPtr hWnd, EXCEPYIONCALLBACK fExceptionCallBack, IntPtr pUser);
43 | [DllImport(DllPath)]
44 | public static extern bool NET_DVR_SetDVRMessCallBack(MESSCALLBACK fMessCallBack);
45 | [DllImport(DllPath)]
46 | public static extern bool NET_DVR_SetDVRMessCallBack_EX(MESSCALLBACKEX fMessCallBack_EX);
47 | [DllImport(DllPath)]
48 | public static extern bool NET_DVR_SetDVRMessCallBack_NEW(MESSCALLBACKNEW fMessCallBack_NEW);
49 | [DllImport(DllPath)]
50 | public static extern bool NET_DVR_SetDVRMessageCallBack(MESSAGECALLBACK fMessageCallBack, uint dwUser);
51 | [DllImport(DllPath)]
52 | public static extern bool NET_DVR_SetDVRMessageCallBack_V30(MSGCallBack fMessageCallBack, IntPtr pUser);
53 | [DllImport(DllPath)]
54 | public static extern bool NET_DVR_SetDVRMessageCallBack_V31(MSGCallBack_V31 fMessageCallBack, IntPtr pUser);
55 | [DllImport(DllPath)]
56 | public static extern bool NET_DVR_SetSDKLocalCfg(int enumType, IntPtr lpInBuff);
57 | [DllImport(DllPath)]
58 | public static extern bool NET_DVR_GetSDKLocalCfg(int enumType, IntPtr lpOutBuff);
59 | [DllImport(DllPath)]
60 | public static extern bool NET_DVR_SetConnectTime(uint dwWaitTime, uint dwTryTimes);
61 | [DllImport(DllPath)]
62 | public static extern bool NET_DVR_SetReconnect(uint dwInterval, int bEnableRecon);
63 | [DllImport(DllPath)]
64 | public static extern bool NET_DVR_GetLocalIP(byte[] strIP, ref uint pValidNum, ref Boolean pEnableBind);
65 | [DllImport(DllPath)]
66 | public static extern bool NET_DVR_SetValidIP(uint dwIPIndex, Boolean bEnableBind);
67 | [DllImport(DllPath)]
68 | public static extern uint NET_DVR_GetSDKVersion();
69 | [DllImport(DllPath)]
70 | public static extern uint NET_DVR_GetSDKBuildVersion();
71 | [DllImport(DllPath)]
72 | public static extern Int32 NET_DVR_IsSupport();
73 | [DllImport(DllPath)]
74 | public static extern bool NET_DVR_StartListen(string sLocalIP, ushort wLocalPort);
75 | [DllImport(DllPath)]
76 | public static extern bool NET_DVR_StopListen();
77 | [DllImport(DllPath)]
78 | public static extern int NET_DVR_StartListen_V30(String sLocalIP, ushort wLocalPort, MSGCallBack DataCallback, IntPtr pUserData);
79 | [DllImport(DllPath)]
80 | public static extern bool NET_DVR_StopListen_V30(Int32 lListenHandle);
81 | [DllImport(DllPath)]
82 | public static extern Int32 NET_DVR_Login(string sDVRIP, ushort wDVRPort, string sUserName, string sPassword, ref NET_DVR_DEVICEINFO lpDeviceInfo);
83 | [DllImport(DllPath)]
84 | public static extern bool NET_DVR_Logout(int iUserID);
85 | [DllImport(DllPath)]
86 | public static extern uint NET_DVR_GetLastError();
87 | [DllImport(DllPath)]
88 | public static extern IntPtr NET_DVR_GetErrorMsg(ref int pErrorNo);
89 | [DllImport(DllPath)]
90 | public static extern bool NET_DVR_SetShowMode(uint dwShowType, uint colorKey);
91 | [DllImport(DllPath)]
92 | public static extern bool NET_DVR_GetDVRIPByResolveSvr(string sServerIP, ushort wServerPort, string sDVRName, ushort wDVRNameLen, string sDVRSerialNumber, ushort wDVRSerialLen, IntPtr pGetIP);
93 | [DllImport(DllPath)]
94 | public static extern bool NET_DVR_GetDVRIPByResolveSvr_EX(string sServerIP, ushort wServerPort, byte[] sDVRName, ushort wDVRNameLen, byte[] sDVRSerialNumber, ushort wDVRSerialLen, byte[] sGetIP, ref uint dwPort);
95 | [DllImport(DllPath)]
96 | public static extern Int32 NET_DVR_RealPlay(int iUserID, ref NET_DVR_CLIENTINFO lpClientInfo);
97 | [DllImport(DllPath)]
98 | public static extern Int32 NET_SDK_RealPlay(int iUserLogID, ref NET_DVR_CLIENTINFO lpDVRClientInfo);
99 | [DllImport(DllPath)]
100 |
101 | /*********************************************************
102 | Function: NET_DVR_RealPlay_V30
103 | Desc: 实时预览。
104 | Input: lUserID [in] NET_DVR_Login()或NET_DVR_Login_V30()的返回值
105 | lpClientInfo [in] 预览参数
106 | cbRealDataCallBack [in] 码流数据回调函数
107 | pUser [in] 用户数据
108 | bBlocked [in] 请求码流过程是否阻塞:0-否;1-是
109 | Output:
110 | Return: 1表示失败,其他值作为NET_DVR_StopRealPlay等函数的句柄参数
111 | **********************************************************/
112 | public static extern int NET_DVR_RealPlay_V30(int iUserID, ref NET_DVR_CLIENTINFO lpClientInfo, REALDATACALLBACK fRealDataCallBack_V30, IntPtr pUser, UInt32 bBlocked);
113 | [DllImport(DllPath)]
114 | public static extern int NET_DVR_RealPlay_V40(int iUserID, ref NET_DVR_PREVIEWINFO lpPreviewInfo, REALDATACALLBACK fRealDataCallBack_V30, IntPtr pUser);
115 | [DllImport(DllPath)]
116 | public static extern bool NET_DVR_StopRealPlay(int iRealHandle);
117 | [DllImport(DllPath)]
118 | public static extern bool NET_DVR_RigisterDrawFun(int lRealHandle, DRAWFUN fDrawFun, uint dwUser);
119 | [DllImport(DllPath)]
120 | public static extern bool NET_DVR_SetPlayerBufNumber(Int32 lRealHandle, uint dwBufNum);
121 | [DllImport(DllPath)]
122 | public static extern bool NET_DVR_ThrowBFrame(Int32 lRealHandle, uint dwNum);
123 | [DllImport(DllPath)]
124 | public static extern bool NET_DVR_SetAudioMode(uint dwMode);
125 | [DllImport(DllPath)]
126 | public static extern bool NET_DVR_OpenSound(Int32 lRealHandle);
127 | [DllImport(DllPath)]
128 | public static extern bool NET_DVR_CloseSound();
129 | [DllImport(DllPath)]
130 | public static extern bool NET_DVR_OpenSoundShare(Int32 lRealHandle);
131 | [DllImport(DllPath)]
132 | public static extern bool NET_DVR_CloseSoundShare(Int32 lRealHandle);
133 | [DllImport(DllPath)]
134 | public static extern bool NET_DVR_Volume(Int32 lRealHandle, ushort wVolume);
135 | [DllImport(DllPath)]
136 | public static extern bool NET_DVR_SaveRealData(Int32 lRealHandle, string sFileName);
137 | [DllImport(DllPath)]
138 | public static extern bool NET_DVR_StopSaveRealData(Int32 lRealHandle);
139 | [DllImport(DllPath)]
140 | public static extern bool NET_DVR_SetRealDataCallBack(int lRealHandle, SETREALDATACALLBACK fRealDataCallBack, uint dwUser);
141 | [DllImport(DllPath)]
142 | public static extern bool NET_DVR_SetStandardDataCallBack(int lRealHandle, STDDATACALLBACK fStdDataCallBack, uint dwUser);
143 | [DllImport(DllPath)]
144 | public static extern bool NET_DVR_CapturePicture(Int32 lRealHandle, string sPicFileName);
145 | [DllImport(DllPath)]
146 | public static extern bool NET_DVR_CapturePictureBlock(Int32 lRealHandle, string sPicFileName, int dwTimeOut);
147 | [DllImport(DllPath)]
148 | public static extern bool NET_DVR_MakeKeyFrame(Int32 lUserID, Int32 lChannel);//主码流
149 | [DllImport(DllPath)]
150 | public static extern bool NET_DVR_MakeKeyFrameSub(Int32 lUserID, Int32 lChannel);//子码流
151 | [DllImport(DllPath)]
152 | public static extern bool NET_DVR_GetPTZCtrl(Int32 lRealHandle);
153 | [DllImport(DllPath)]
154 | public static extern bool NET_DVR_GetPTZCtrl_Other(Int32 lUserID, int lChannel);
155 | [DllImport(DllPath)]
156 | public static extern bool NET_DVR_PTZControl(Int32 lRealHandle, uint dwPTZCommand, uint dwStop);
157 | [DllImport(DllPath)]
158 | public static extern bool NET_DVR_PTZControl_Other(Int32 lUserID, Int32 lChannel, uint dwPTZCommand, uint dwStop);
159 | [DllImport(DllPath)]
160 | public static extern bool NET_DVR_TransPTZ(Int32 lRealHandle, string pPTZCodeBuf, uint dwBufSize);
161 | [DllImport(DllPath)]
162 | public static extern bool NET_DVR_TransPTZ_Other(int lUserID, int lChannel, string pPTZCodeBuf, uint dwBufSize);
163 | [DllImport(DllPath)]
164 | public static extern bool NET_DVR_PTZPreset(int lRealHandle, uint dwPTZPresetCmd, uint dwPresetIndex);
165 | [DllImport(DllPath)]
166 | public static extern bool NET_DVR_PTZPreset_Other(int lUserID, int lChannel, uint dwPTZPresetCmd, uint dwPresetIndex);
167 | [DllImport(DllPath)]
168 | public static extern bool NET_DVR_TransPTZ_EX(int lRealHandle, string pPTZCodeBuf, uint dwBufSize);
169 | [DllImport(DllPath)]
170 | public static extern bool NET_DVR_PTZControl_EX(int lRealHandle, uint dwPTZCommand, uint dwStop);
171 | [DllImport(DllPath)]
172 | public static extern bool NET_DVR_PTZPreset_EX(int lRealHandle, uint dwPTZPresetCmd, uint dwPresetIndex);
173 | [DllImport(DllPath)]
174 | public static extern bool NET_DVR_PTZCruise(int lRealHandle, uint dwPTZCruiseCmd, byte byCruiseRoute, byte byCruisePoint, ushort wInput);
175 | [DllImport(DllPath)]
176 | public static extern bool NET_DVR_PTZCruise_Other(int lUserID, int lChannel, uint dwPTZCruiseCmd, byte byCruiseRoute, byte byCruisePoint, ushort wInput);
177 | [DllImport(DllPath)]
178 | public static extern bool NET_DVR_PTZCruise_EX(int lRealHandle, uint dwPTZCruiseCmd, byte byCruiseRoute, byte byCruisePoint, ushort wInput);
179 | [DllImport(DllPath)]
180 | public static extern bool NET_DVR_PTZTrack(int lRealHandle, uint dwPTZTrackCmd);
181 | [DllImport(DllPath)]
182 | public static extern bool NET_DVR_PTZTrack_Other(int lUserID, int lChannel, uint dwPTZTrackCmd);
183 | [DllImport(DllPath)]
184 | public static extern bool NET_DVR_PTZTrack_EX(int lRealHandle, uint dwPTZTrackCmd);
185 | [DllImport(DllPath)]
186 | public static extern bool NET_DVR_PTZControlWithSpeed(int lRealHandle, uint dwPTZCommand, uint dwStop, uint dwSpeed);
187 | [DllImport(DllPath)]
188 | public static extern bool NET_DVR_PTZControlWithSpeed_Other(int lUserID, int lChannel, uint dwPTZCommand, uint dwStop, uint dwSpeed);
189 | [DllImport(DllPath)]
190 | public static extern bool NET_DVR_PTZControlWithSpeed_EX(int lRealHandle, uint dwPTZCommand, uint dwStop, uint dwSpeed);
191 | [DllImport(DllPath)]
192 | public static extern bool NET_DVR_GetPTZCruise(int lUserID, int lChannel, int lCruiseRoute, ref NET_DVR_CRUISE_RET lpCruiseRet);
193 | [DllImport(DllPath)]
194 | public static extern bool NET_DVR_PTZMltTrack(int lRealHandle, uint dwPTZTrackCmd, uint dwTrackIndex);
195 | [DllImport(DllPath)]
196 | public static extern bool NET_DVR_PTZMltTrack_Other(int lUserID, int lChannel, uint dwPTZTrackCmd, uint dwTrackIndex);
197 | [DllImport(DllPath)]
198 | public static extern bool NET_DVR_PTZMltTrack_EX(int lRealHandle, uint dwPTZTrackCmd, uint dwTrackIndex);
199 | [DllImport(DllPath)]
200 | public static extern int NET_DVR_FindFile(int lUserID, int lChannel, uint dwFileType, ref NET_DVR_TIME lpStartTime, ref NET_DVR_TIME lpStopTime);
201 | [DllImport(DllPath)]
202 | public static extern int NET_DVR_FindNextFile(int lFindHandle, ref NET_DVR_FIND_DATA lpFindData);
203 | [DllImport(DllPath)]
204 | public static extern bool NET_DVR_FindClose(int lFindHandle);
205 | [DllImport(DllPath)]
206 | public static extern int NET_DVR_FindNextFile_V30(int lFindHandle, ref NET_DVR_FINDDATA_V30 lpFindData);
207 | [DllImport(DllPath)]
208 | public static extern int NET_DVR_FindNextFile_V40(int lFindHandle, ref NET_DVR_FINDDATA_V40 lpFindData);
209 | [DllImport(DllPath)]
210 | public static extern int NET_DVR_FindFile_V30(int lUserID, ref NET_DVR_FILECOND pFindCond);
211 | [DllImport(DllPath)]
212 | public static extern int NET_DVR_FindFile_V40(int lUserID, ref NET_DVR_FILECOND_V40 pFindCond);
213 | [DllImport(DllPath)]
214 | public static extern int NET_DVR_FindFileByEvent_V40(int lUserID, ref NET_DVR_SEARCH_EVENT_PARAM_V40 lpSearchEventParam);
215 | [DllImport(DllPath)]
216 | public static extern int NET_DVR_FindNextEvent_V40(int lSearchHandle, ref NET_DVR_SEARCH_EVENT_RET_V40 lpSearchEventRet);
217 | [DllImport(DllPath)]
218 | public static extern bool NET_DVR_FindClose_V30(int lFindHandle);
219 | [DllImport(DllPath)]
220 | public static extern int NET_DVR_FindNextFile_Card(int lFindHandle, ref NET_DVR_FINDDATA_CARD lpFindData);
221 | [DllImport(DllPath)]
222 | public static extern int NET_DVR_FindFile_Card(int lUserID, int lChannel, uint dwFileType, ref NET_DVR_TIME lpStartTime, ref NET_DVR_TIME lpStopTime);
223 | [DllImport(DllPath)]
224 | public static extern bool NET_DVR_LockFileByName(int lUserID, string sLockFileName);
225 | [DllImport(DllPath)]
226 | public static extern bool NET_DVR_UnlockFileByName(int lUserID, string sUnlockFileName);
227 | [DllImport(DllPath)]
228 | public static extern int NET_DVR_PlayBackByName(int lUserID, string sPlayBackFileName, IntPtr hWnd);
229 | [DllImport(DllPath)]
230 | public static extern int NET_DVR_PlayBackByTime(int lUserID, int lChannel, ref NET_DVR_TIME lpStartTime, ref NET_DVR_TIME lpStopTime, System.IntPtr hWnd);
231 | [DllImport(DllPath)]
232 | public static extern int NET_DVR_PlayBackByTime_V40(int lUserID, ref NET_DVR_VOD_PARA pVodPara);
233 | [DllImport(DllPath)]
234 | public static extern int NET_DVR_PlayBackReverseByName(int lUserID, string sPlayBackFileName, IntPtr hWnd);
235 | [DllImport(DllPath)]
236 | public static extern int NET_DVR_PlayBackReverseByTime_V40(int lUserID, IntPtr hWnd, ref NET_DVR_PLAYCOND pPlayCond);
237 | [DllImport(DllPath)]
238 | public static extern bool NET_DVR_PlayBackControl(int lPlayHandle, uint dwControlCode, uint dwInValue, ref uint LPOutValue);
239 | [DllImport(DllPath)]
240 | public static extern bool NET_DVR_PlayBackControl_V40(int lPlayHandle, uint dwControlCode, IntPtr lpInBuffer, uint dwInValue, IntPtr lpOutBuffer, ref uint LPOutValue);
241 | [DllImport(DllPath)]
242 | public static extern bool NET_DVR_StopPlayBack(int lPlayHandle);
243 | [DllImport(DllPath)]
244 | public static extern bool NET_DVR_SetPlayDataCallBack(int lPlayHandle, PLAYDATACALLBACK fPlayDataCallBack, uint dwUser);
245 | [DllImport(DllPath)]
246 | public static extern bool NET_DVR_PlayBackSaveData(int lPlayHandle, string sFileName);
247 | [DllImport(DllPath)]
248 | public static extern bool NET_DVR_StopPlayBackSave(int lPlayHandle);
249 | [DllImport(DllPath)]
250 | public static extern bool NET_DVR_GetPlayBackOsdTime(int lPlayHandle, ref NET_DVR_TIME lpOsdTime);
251 | [DllImport(DllPath)]
252 | public static extern bool NET_DVR_PlayBackCaptureFile(int lPlayHandle, string sFileName);
253 | [DllImport(DllPath)]
254 | public static extern int NET_DVR_GetFileByName(int lUserID, string sDVRFileName, string sSavedFileName);
255 | [DllImport(DllPath)]
256 | public static extern int NET_DVR_GetFileByTime(int lUserID, int lChannel, ref NET_DVR_TIME lpStartTime, ref NET_DVR_TIME lpStopTime, string sSavedFileName);
257 | [DllImport(DllPath)]
258 | public static extern int NET_DVR_GetFileByTime_V40(int lUserID, string sSavedFileName, ref NET_DVR_PLAYCOND pDownloadCond);
259 | [DllImport(DllPath)]
260 | public static extern bool NET_DVR_StopGetFile(int lFileHandle);
261 | [DllImport(DllPath)]
262 | public static extern int NET_DVR_GetDownloadPos(int lFileHandle);
263 | [DllImport(DllPath)]
264 | public static extern int NET_DVR_GetPlayBackPos(int lPlayHandle);
265 | [DllImport(DllPath)]
266 | public static extern int NET_DVR_FindPicture(int lUserID, ref NET_DVR_FIND_PICTURE_PARAM pFindParam);
267 | [DllImport(DllPath)]
268 | public static extern int NET_DVR_FindNextPicture_V50(int lFindHandle, ref NET_DVR_FIND_PICTURE_V50 lpFindData);
269 | [DllImport(DllPath)]
270 | public static extern bool NET_DVR_CloseFindPicture(int lFindHandle);
271 | [DllImport(DllPath)]
272 | public static extern bool NET_DVR_GetPicture(int lUserID, String sDVRFileName, String sSavedFileName);
273 | [DllImport(DllPath)]
274 | public static extern int NET_DVR_Upgrade(int lUserID, string sFileName);
275 | [DllImport(DllPath)]
276 | public static extern int NET_DVR_GetUpgradeState(int lUpgradeHandle);
277 | [DllImport(DllPath)]
278 | public static extern int NET_DVR_GetUpgradeProgress(int lUpgradeHandle);
279 | [DllImport(DllPath)]
280 | public static extern bool NET_DVR_CloseUpgradeHandle(int lUpgradeHandle);
281 | [DllImport(DllPath)]
282 | public static extern bool NET_DVR_SetNetworkEnvironment(uint dwEnvironmentLevel);
283 | [DllImport(DllPath)]
284 | public static extern int NET_DVR_FormatDisk(int lUserID, int lDiskNumber);
285 | [DllImport(DllPath)]
286 | public static extern bool NET_DVR_GetFormatProgress(int lFormatHandle, ref int pCurrentFormatDisk, ref int pCurrentDiskPos, ref int pFormatStatic);
287 | [DllImport(DllPath)]
288 | public static extern bool NET_DVR_CloseFormatHandle(int lFormatHandle);
289 | [DllImport(DllPath)]
290 | public static extern bool NET_DVR_GetIPCProtoList(int lUserID, ref NET_DVR_IPC_PROTO_LIST lpProtoList);
291 | [DllImport(DllPath)]
292 | public static extern bool NET_DVR_GetIPCProtoList_V41(int lUserID, ref NET_DVR_IPC_PROTO_LIST_V41 lpProtoList);
293 | [DllImport(DllPath)]
294 | public static extern int NET_DVR_SetupAlarmChan(int lUserID);
295 | [DllImport(DllPath)]
296 | public static extern bool NET_DVR_CloseAlarmChan(int lAlarmHandle);
297 | [DllImport(DllPath)]
298 | public static extern int NET_DVR_SetupAlarmChan_V30(int lUserID);
299 | [DllImport(DllPath)]
300 | public static extern int NET_DVR_SetupAlarmChan_V41(int lUserID, ref NET_DVR_SETUPALARM_PARAM lpSetupParam);
301 | [DllImport(DllPath)]
302 | public static extern bool NET_DVR_CloseAlarmChan_V30(int lAlarmHandle);
303 | [DllImport(DllPath)]
304 | public static extern int NET_DVR_StartVoiceCom(int lUserID, VOICEDATACALLBACK fVoiceDataCallBack, uint dwUser);
305 | [DllImport(DllPath)]
306 | public static extern int NET_DVR_StartVoiceCom_V30(int lUserID, uint dwVoiceChan, bool bNeedCBNoEncData, VOICEDATACALLBACKV30 fVoiceDataCallBack, IntPtr pUser);
307 | [DllImport(DllPath)]
308 | public static extern bool NET_DVR_SetVoiceComClientVolume(int lVoiceComHandle, ushort wVolume);
309 | [DllImport(DllPath)]
310 | public static extern bool NET_DVR_StopVoiceCom(int lVoiceComHandle);
311 | [DllImport(DllPath)]
312 | public static extern int NET_DVR_StartVoiceCom_MR(int lUserID, VOICEDATACALLBACK fVoiceDataCallBack, uint dwUser);
313 | [DllImport(DllPath)]
314 | public static extern int NET_DVR_StartVoiceCom_MR_V30(int lUserID, uint dwVoiceChan, VOICEDATACALLBACKV30 fVoiceDataCallBack, IntPtr pUser);
315 | [DllImport(DllPath)]
316 | public static extern bool NET_DVR_VoiceComSendData(int lVoiceComHandle, string pSendBuf, uint dwBufSize);
317 | [DllImport(DllPath)]
318 | public static extern bool NET_DVR_ClientAudioStart();
319 | [DllImport(DllPath)]
320 | public static extern bool NET_DVR_ClientAudioStart_V30(VOICEAUDIOSTART fVoiceAudioStart, IntPtr pUser);
321 | [DllImport(DllPath)]
322 | public static extern bool NET_DVR_ClientAudioStop();
323 | [DllImport(DllPath)]
324 | public static extern bool NET_DVR_AddDVR(int lUserID);
325 | [DllImport(DllPath)]
326 | public static extern int NET_DVR_AddDVR_V30(int lUserID, uint dwVoiceChan);
327 | [DllImport(DllPath)]
328 | public static extern bool NET_DVR_DelDVR(int lUserID);
329 | [DllImport(DllPath)]
330 | public static extern bool NET_DVR_DelDVR_V30(int lVoiceHandle);
331 | [DllImport(DllPath)]
332 | public static extern bool NET_DVR_SerialStart(int lUserID, int lSerialPort, SERIALDATACALLBACK fSerialDataCallBack, uint dwUser);
333 | [DllImport(DllPath)]
334 | public static extern bool NET_DVR_SerialSend(int lSerialHandle, int lChannel, string pSendBuf, uint dwBufSize);
335 | [DllImport(DllPath)]
336 | public static extern bool NET_DVR_SerialStop(int lSerialHandle);
337 | [DllImport(DllPath)]
338 | public static extern bool NET_DVR_SendTo232Port(int lUserID, string pSendBuf, uint dwBufSize);
339 | [DllImport(DllPath)]
340 | public static extern bool NET_DVR_SendToSerialPort(int lUserID, uint dwSerialPort, uint dwSerialIndex, string pSendBuf, uint dwBufSize);
341 | [DllImport(DllPath)]
342 | public static extern System.IntPtr NET_DVR_InitG722Decoder(int nBitrate);
343 | [DllImport(DllPath)]
344 | public static extern void NET_DVR_ReleaseG722Decoder(IntPtr pDecHandle);
345 | [DllImport(DllPath)]
346 | public static extern bool NET_DVR_DecodeG722Frame(IntPtr pDecHandle, ref byte pInBuffer, ref byte pOutBuffer);
347 | [DllImport(DllPath)]
348 | public static extern IntPtr NET_DVR_InitG722Encoder();
349 | [DllImport(DllPath)]
350 | public static extern bool NET_DVR_EncodeG722Frame(IntPtr pEncodeHandle, ref byte pInBuffer, ref byte pOutBuffer);
351 | [DllImport(DllPath)]
352 | public static extern void NET_DVR_ReleaseG722Encoder(IntPtr pEncodeHandle);
353 | [DllImport(DllPath)]
354 | public static extern bool NET_DVR_ClickKey(int lUserID, int lKeyIndex);
355 | [DllImport(DllPath)]
356 | public static extern bool NET_DVR_StartDVRRecord(int lUserID, int lChannel, int lRecordType);
357 | [DllImport(DllPath)]
358 | public static extern bool NET_DVR_StopDVRRecord(int lUserID, int lChannel);
359 | [DllImport(DllPath)]
360 | public static extern bool NET_DVR_InitDevice_Card(ref int pDeviceTotalChan);
361 | [DllImport(DllPath)]
362 | public static extern bool NET_DVR_ReleaseDevice_Card();
363 | [DllImport(DllPath)]
364 | public static extern bool NET_DVR_InitDDraw_Card(IntPtr hParent, uint colorKey);
365 | [DllImport(DllPath)]
366 | public static extern bool NET_DVR_ReleaseDDraw_Card();
367 | [DllImport(DllPath)]
368 | public static extern int NET_DVR_RealPlay_Card(int lUserID, ref NET_DVR_CARDINFO lpCardInfo, int lChannelNum);
369 | [DllImport(DllPath)]
370 | public static extern bool NET_DVR_ResetPara_Card(int lRealHandle, ref NET_DVR_DISPLAY_PARA lpDisplayPara);
371 | [DllImport(DllPath)]
372 | public static extern bool NET_DVR_RefreshSurface_Card();
373 | [DllImport(DllPath)]
374 | public static extern bool NET_DVR_ClearSurface_Card();
375 | [DllImport(DllPath)]
376 | public static extern bool NET_DVR_RestoreSurface_Card();
377 | [DllImport(DllPath)]
378 | public static extern bool NET_DVR_OpenSound_Card(int lRealHandle);
379 | [DllImport(DllPath)]
380 | public static extern bool NET_DVR_CloseSound_Card(int lRealHandle);
381 | [DllImport(DllPath)]
382 | public static extern bool NET_DVR_SetVolume_Card(int lRealHandle, ushort wVolume);
383 | [DllImport(DllPath)]
384 | public static extern bool NET_DVR_AudioPreview_Card(int lRealHandle, int bEnable);
385 | [DllImport(DllPath)]
386 | public static extern int NET_DVR_GetCardLastError_Card();
387 | [DllImport(DllPath)]
388 | public static extern System.IntPtr NET_DVR_GetChanHandle_Card(int lRealHandle);
389 | [DllImport(DllPath)]
390 | public static extern bool NET_DVR_CapturePicture_Card(int lRealHandle, string sPicFileName);
391 | [DllImport(DllPath)]
392 | public static extern bool NET_DVR_GetSerialNum_Card(int lChannelNum, ref uint pDeviceSerialNo);
393 | [DllImport(DllPath)]
394 | public static extern int NET_DVR_FindDVRLog(int lUserID, int lSelectMode, uint dwMajorType, uint dwMinorType, ref NET_DVR_TIME lpStartTime, ref NET_DVR_TIME lpStopTime);
395 | [DllImport(DllPath)]
396 | public static extern int NET_DVR_FindNextLog(int lLogHandle, ref NET_DVR_LOG lpLogData);
397 | [DllImport(DllPath)]
398 | public static extern bool NET_DVR_FindLogClose(int lLogHandle);
399 | [DllImport(DllPath)]
400 | public static extern int NET_DVR_FindDVRLog_V30(int lUserID, int lSelectMode, uint dwMajorType, uint dwMinorType, ref NET_DVR_TIME lpStartTime, ref NET_DVR_TIME lpStopTime, bool bOnlySmart);
401 | [DllImport(DllPath)]
402 | public static extern int NET_DVR_FindNextLog_V30(int lLogHandle, ref NET_DVR_LOG_V30 lpLogData);
403 | [DllImport(DllPath)]
404 | public static extern bool NET_DVR_FindLogClose_V30(int lLogHandle);
405 | [DllImport(DllPath)]
406 | public static extern int NET_DVR_FindFileByCard(int lUserID, int lChannel, uint dwFileType, int nFindType, ref byte sCardNumber, ref NET_DVR_TIME lpStartTime, ref NET_DVR_TIME lpStopTime);
407 | [DllImport(DllPath)]
408 | public static extern bool NET_DVR_CaptureJPEGPicture(int lUserID, int lChannel, ref NET_DVR_JPEGPARA lpJpegPara, string sPicFileName);
409 | [DllImport(DllPath)]
410 | public static extern bool NET_DVR_CaptureJPEGPicture_NEW(int lUserID, int lChannel, ref NET_DVR_JPEGPARA lpJpegPara, byte[] sJpegPicBuffer, uint dwPicSize, ref uint lpSizeReturned);
411 | [DllImport(DllPath)]
412 | public static extern int NET_DVR_GetRealPlayerIndex(int lRealHandle);
413 | [DllImport(DllPath)]
414 | public static extern int NET_DVR_GetPlayBackPlayerIndex(int lPlayHandle);
415 | [DllImport(DllPath)]
416 | //人脸识别上传文件发送数据
417 | public static extern Int32 NET_DVR_UploadSend(int lUploadHandle, ref NET_DVR_SEND_PARAM_IN pstruSendParamIN, IntPtr lpOutBuffer);
418 | [DllImport(DllPath)]
419 | //人脸识别上传文件
420 | public static extern Int32 NET_DVR_UploadFile_V40(int lUserID, uint dwUploadType, IntPtr lpInBuffer, uint dwInBufferSize, string sFileName, IntPtr lpOutBuffer, uint dwOutBufferSize);
421 | [DllImport(DllPath)]
422 | public static extern Int32 NET_DVR_GetUploadState(int lUploadHandle, ref uint pProgress);
423 | [DllImport(DllPath)]
424 | public static extern bool NET_DVR_GetUploadResult(int lUploadHandle, IntPtr lpOutBuffer, uint dwOutBufferSize);
425 | [DllImport(DllPath)]
426 | public static extern bool NET_DVR_UploadClose(int lUploadHandle);
427 | [DllImport(DllPath)]
428 | public static extern bool NET_DVR_SetScaleCFG(int lUserID, uint dwScale);
429 | [DllImport(DllPath)]
430 | public static extern bool NET_DVR_GetScaleCFG(int lUserID, ref uint lpOutScale);
431 | [DllImport(DllPath)]
432 | public static extern bool NET_DVR_SetScaleCFG_V30(int lUserID, ref NET_DVR_SCALECFG pScalecfg);
433 | [DllImport(DllPath)]
434 | public static extern bool NET_DVR_GetScaleCFG_V30(int lUserID, ref NET_DVR_SCALECFG pScalecfg);
435 | [DllImport(DllPath)]
436 | public static extern bool NET_DVR_SetATMPortCFG(int lUserID, ushort wATMPort);
437 | [DllImport(DllPath)]
438 | public static extern bool NET_DVR_GetATMPortCFG(int lUserID, ref ushort LPOutATMPort);
439 | [DllImport(DllPath)]
440 | public static extern bool NET_DVR_InitDDrawDevice();
441 | [DllImport(DllPath)]
442 | public static extern bool NET_DVR_ReleaseDDrawDevice();
443 | [DllImport(DllPath)]
444 | public static extern int NET_DVR_GetDDrawDeviceTotalNums();
445 | [DllImport(DllPath)]
446 | public static extern bool NET_DVR_SetDDrawDevice(int lPlayPort, uint nDeviceNum);
447 | [DllImport(DllPath)]
448 | public static extern bool NET_DVR_PTZSelZoomIn(int lRealHandle, ref NET_DVR_POINT_FRAME pStruPointFrame);
449 | [DllImport(DllPath)]
450 | public static extern bool NET_DVR_PTZSelZoomIn_EX(int lUserID, int lChannel, ref NET_DVR_POINT_FRAME pStruPointFrame);
451 | [DllImport(DllPath)]
452 | public static extern bool NET_DVR_StartDecode(int lUserID, int lChannel, ref NET_DVR_DECODERINFO lpDecoderinfo);
453 | [DllImport(DllPath)]
454 | public static extern bool NET_DVR_StopDecode(int lUserID, int lChannel);
455 | [DllImport(DllPath)]
456 | public static extern bool NET_DVR_GetDecoderState(int lUserID, int lChannel, ref NET_DVR_DECODERSTATE lpDecoderState);
457 | [DllImport(DllPath)]
458 | public static extern bool NET_DVR_SetDecInfo(int lUserID, int lChannel, ref NET_DVR_DECCFG lpDecoderinfo);
459 | [DllImport(DllPath)]
460 | public static extern bool NET_DVR_GetDecInfo(int lUserID, int lChannel, ref NET_DVR_DECCFG lpDecoderinfo);
461 | [DllImport(DllPath)]
462 | public static extern bool NET_DVR_SetDecTransPort(int lUserID, ref NET_DVR_PORTCFG lpTransPort);
463 | [DllImport(DllPath)]
464 | public static extern bool NET_DVR_GetDecTransPort(int lUserID, ref NET_DVR_PORTCFG lpTransPort);
465 | [DllImport(DllPath)]
466 | public static extern bool NET_DVR_DecPlayBackCtrl(int lUserID, int lChannel, uint dwControlCode, uint dwInValue, ref uint LPOutValue, ref NET_DVR_PLAYREMOTEFILE lpRemoteFileInfo);
467 | [DllImport(DllPath)]
468 | public static extern bool NET_DVR_StartDecSpecialCon(int lUserID, int lChannel, ref NET_DVR_DECCHANINFO lpDecChanInfo);
469 | [DllImport(DllPath)]
470 | public static extern bool NET_DVR_StopDecSpecialCon(int lUserID, int lChannel, ref NET_DVR_DECCHANINFO lpDecChanInfo);
471 | [DllImport(DllPath)]
472 | public static extern bool NET_DVR_DecCtrlDec(int lUserID, int lChannel, uint dwControlCode);
473 | [DllImport(DllPath)]
474 | public static extern bool NET_DVR_DecCtrlScreen(int lUserID, int lChannel, uint dwControl);
475 | [DllImport(DllPath)]
476 | public static extern bool NET_DVR_GetDecCurLinkStatus(int lUserID, int lChannel, ref NET_DVR_DECSTATUS lpDecStatus);
477 | [DllImport(DllPath)]
478 | public static extern bool NET_DVR_MatrixStartDynamic(int lUserID, uint dwDecChanNum, ref NET_DVR_MATRIX_DYNAMIC_DEC lpDynamicInfo);
479 | [DllImport(DllPath)]
480 | public static extern bool NET_DVR_MatrixStopDynamic(int lUserID, uint dwDecChanNum);
481 | [DllImport(DllPath)]
482 | public static extern bool NET_DVR_MatrixGetDecChanInfo(int lUserID, uint dwDecChanNum, ref NET_DVR_MATRIX_DEC_CHAN_INFO lpInter);
483 | [DllImport(DllPath)]
484 | public static extern bool NET_DVR_MatrixGetDecChanInfo_V41(int lUserID, uint dwDecChanNum, ref NET_DVR_MATRIX_DEC_CHAN_INFO_V41 lpOuter);
485 | [DllImport(DllPath)]
486 | public static extern bool NET_DVR_MatrixSetLoopDecChanInfo(int lUserID, uint dwDecChanNum, ref NET_DVR_MATRIX_LOOP_DECINFO lpInter);
487 | [DllImport(DllPath)]
488 | public static extern bool NET_DVR_MatrixGetLoopDecChanInfo(int lUserID, uint dwDecChanNum, ref NET_DVR_MATRIX_LOOP_DECINFO lpInter);
489 | [DllImport(DllPath)]
490 | public static extern bool NET_DVR_MatrixSetLoopDecChanEnable(int lUserID, uint dwDecChanNum, uint dwEnable);
491 | [DllImport(DllPath)]
492 | public static extern bool NET_DVR_MatrixGetLoopDecChanEnable(int lUserID, uint dwDecChanNum, ref uint lpdwEnable);
493 | [DllImport(DllPath)]
494 | public static extern bool NET_DVR_MatrixGetLoopDecEnable(int lUserID, ref uint lpdwEnable);
495 | [DllImport(DllPath)]
496 | public static extern bool NET_DVR_MatrixSetDecChanEnable(int lUserID, uint dwDecChanNum, uint dwEnable);
497 | [DllImport(DllPath)]
498 | public static extern bool NET_DVR_MatrixGetDecChanEnable(int lUserID, uint dwDecChanNum, ref uint lpdwEnable);
499 | [DllImport(DllPath)]
500 | public static extern bool NET_DVR_MatrixGetDecChanStatus(int lUserID, uint dwDecChanNum, ref NET_DVR_MATRIX_DEC_CHAN_STATUS lpInter);
501 | [DllImport(DllPath)]
502 | public static extern bool NET_DVR_MatrixSetTranInfo(int lUserID, ref NET_DVR_MATRIX_TRAN_CHAN_CONFIG lpTranInfo);
503 | [DllImport(DllPath)]
504 | public static extern bool NET_DVR_MatrixGetTranInfo(int lUserID, ref NET_DVR_MATRIX_TRAN_CHAN_CONFIG lpTranInfo);
505 | [DllImport(DllPath)]
506 | public static extern bool NET_DVR_MatrixSetRemotePlay(int lUserID, uint dwDecChanNum, ref NET_DVR_MATRIX_DEC_REMOTE_PLAY lpInter);
507 | [DllImport(DllPath)]
508 | public static extern bool NET_DVR_MatrixSetRemotePlayControl(int lUserID, uint dwDecChanNum, uint dwControlCode, uint dwInValue, ref uint LPOutValue);
509 | [DllImport(DllPath)]
510 | public static extern bool NET_DVR_MatrixGetRemotePlayStatus(int lUserID, uint dwDecChanNum, ref NET_DVR_MATRIX_DEC_REMOTE_PLAY_STATUS lpOuter);
511 | [DllImport(DllPath)]
512 | public static extern bool NET_DVR_MatrixStartDynamic_V30(int lUserID, uint dwDecChanNum, ref NET_DVR_PU_STREAM_CFG lpDynamicInfo);
513 | [DllImport(DllPath)]
514 | public static extern bool NET_DVR_MatrixStartDynamic_V41(int lUserID, uint dwDecChanNum, ref NET_DVR_PU_STREAM_CFG_V41 lpDynamicInfo);
515 | [DllImport(DllPath)]
516 | public static extern bool NET_DVR_MatrixSetLoopDecChanInfo_V30(int lUserID, uint dwDecChanNum, ref NET_DVR_MATRIX_LOOP_DECINFO_V30 lpInter);
517 | [DllImport(DllPath)]
518 | public static extern bool NET_DVR_MatrixGetLoopDecChanInfo_V30(int lUserID, uint dwDecChanNum, ref NET_DVR_MATRIX_LOOP_DECINFO_V30 lpInter);
519 | [DllImport(DllPath)]
520 | public static extern bool NET_DVR_MatrixGetDecChanInfo_V30(int lUserID, uint dwDecChanNum, ref NET_DVR_MATRIX_DEC_CHAN_INFO_V30 lpInter);
521 | [DllImport(DllPath)]
522 | public static extern bool NET_DVR_MatrixSetTranInfo_V30(int lUserID, ref NET_DVR_MATRIX_TRAN_CHAN_CONFIG_V30 lpTranInfo);
523 | [DllImport(DllPath)]
524 | public static extern bool NET_DVR_MatrixGetTranInfo_V30(int lUserID, ref NET_DVR_MATRIX_TRAN_CHAN_CONFIG_V30 lpTranInfo);
525 | [DllImport(DllPath)]
526 | public static extern bool NET_DVR_MatrixGetDisplayCfg(int lUserID, uint dwDispChanNum, ref NET_DVR_VGA_DISP_CHAN_CFG lpDisplayCfg);
527 | [DllImport(DllPath)]
528 | public static extern bool NET_DVR_MatrixSetDisplayCfg(int lUserID, uint dwDispChanNum, ref NET_DVR_VGA_DISP_CHAN_CFG lpDisplayCfg);
529 | [DllImport(DllPath)]
530 | public static extern bool NET_DVR_MatrixGetDisplayCfg_V41(int lUserID, uint dwDispChanNum, ref NET_DVR_MATRIX_VOUTCFG lpDisplayCfg);
531 | [DllImport(DllPath)]
532 | public static extern bool NET_DVR_MatrixSetDisplayCfg_V41(int lUserID, uint dwDispChanNum, ref NET_DVR_MATRIX_VOUTCFG lpDisplayCfg);
533 | [DllImport(DllPath)]
534 | public static extern int NET_DVR_MatrixStartPassiveDecode(int lUserID, uint dwDecChanNum, ref NET_DVR_MATRIX_PASSIVEMODE lpPassiveMode);
535 | [DllImport(DllPath)]
536 | public static extern bool NET_DVR_MatrixSendData(int lPassiveHandle, System.IntPtr pSendBuf, uint dwBufSize);
537 | [DllImport(DllPath)]
538 | public static extern bool NET_DVR_MatrixStopPassiveDecode(int lPassiveHandle);
539 | [DllImport(DllPath)]
540 | public static extern bool NET_DVR_UploadLogo(int lUserID, uint dwDispChanNum, ref NET_DVR_DISP_LOGOCFG lpDispLogoCfg, System.IntPtr sLogoBuffer);
541 | [DllImport(DllPath)]
542 | public static extern int NET_DVR_PicUpload(int lUserID, String sFileName, ref NET_DVR_PICTURECFG lpPictureCfg);
543 | [DllImport(DllPath)]
544 | public static extern int NET_DVR_GetPicUploadProgress(int lUploadHandle);
545 | [DllImport(DllPath)]
546 | public static extern bool NET_DVR_CloseUploadHandle(int lUploadHandle);
547 | [DllImport(DllPath)]
548 | public static extern int NET_DVR_GetPicUploadState(int lUploadHandle);
549 | [DllImport(DllPath)]
550 | public static extern bool NET_DVR_LogoSwitch(int lUserID, uint dwDecChan, uint dwLogoSwitch);
551 | [DllImport(DllPath)]
552 | public static extern bool NET_DVR_MatrixGetDeviceStatus(int lUserID, ref NET_DVR_DECODER_WORK_STATUS lpDecoderCfg);
553 | [DllImport(DllPath)]
554 | public static extern bool NET_DVR_GetInputSignalList_V40(int lUserID, uint dwDevNum, ref NET_DVR_INPUT_SIGNAL_LIST lpInputSignalList);
555 | [DllImport(DllPath)]
556 | public static extern bool NET_DVR_MatrixDiaplayControl(int lUserID, uint dwDispChanNum, uint dwDispChanCmd, uint dwCmdParam);
557 | [DllImport(DllPath)]
558 | public static extern bool NET_DVR_RefreshPlay(int lPlayHandle);
559 | [DllImport(DllPath)]
560 | public static extern bool NET_DVR_RestoreConfig(int lUserID);
561 | [DllImport(DllPath)]
562 | public static extern bool NET_DVR_SaveConfig(int lUserID);
563 | [DllImport(DllPath)]
564 | public static extern bool NET_DVR_RebootDVR(int lUserID);
565 | [DllImport(DllPath)]
566 | public static extern bool NET_DVR_ShutDownDVR(int lUserID);
567 | [DllImport(DllPath)]
568 | public static extern bool NET_DVR_GetDVRConfig(int lUserID, uint dwCommand, int lChannel, IntPtr lpOutBuffer, uint dwOutBufferSize, ref uint lpBytesReturned);
569 | [DllImport(DllPath)]
570 | public static extern bool NET_DVR_SetDVRConfig(int lUserID, uint dwCommand, int lChannel, System.IntPtr lpInBuffer, uint dwInBufferSize);
571 | [DllImport(DllPath)]
572 | public static extern bool NET_DVR_GetDVRWorkState_V30(int lUserID, IntPtr pWorkState);
573 | [DllImport(DllPath)]
574 | public static extern bool NET_DVR_GetDVRWorkState(int lUserID, ref NET_DVR_WORKSTATE lpWorkState);
575 | [DllImport(DllPath)]
576 | public static extern bool NET_DVR_SetVideoEffect(int lUserID, int lChannel, uint dwBrightValue, uint dwContrastValue, uint dwSaturationValue, uint dwHueValue);
577 | [DllImport(DllPath)]
578 | public static extern bool NET_DVR_GetVideoEffect(int lUserID, int lChannel, ref uint pBrightValue, ref uint pContrastValue, ref uint pSaturationValue, ref uint pHueValue);
579 | [DllImport(DllPath)]
580 | public static extern bool NET_DVR_ClientGetframeformat(int lUserID, ref NET_DVR_FRAMEFORMAT lpFrameFormat);
581 | [DllImport(DllPath)]
582 | public static extern bool NET_DVR_ClientSetframeformat(int lUserID, ref NET_DVR_FRAMEFORMAT lpFrameFormat);
583 | [DllImport(DllPath)]
584 | public static extern bool NET_DVR_GetAtmProtocol(int lUserID, ref NET_DVR_ATM_PROTOCOL lpAtmProtocol);
585 | [DllImport(DllPath)]
586 | public static extern bool NET_DVR_GetAlarmOut_V30(int lUserID, IntPtr lpAlarmOutState);
587 | [DllImport(DllPath)]
588 | public static extern bool NET_DVR_GetAlarmOut(int lUserID, ref NET_DVR_ALARMOUTSTATUS lpAlarmOutState);
589 | [DllImport(DllPath)]
590 | public static extern bool NET_DVR_SetAlarmOut(int lUserID, int lAlarmOutPort, int lAlarmOutStatic);
591 | [DllImport(DllPath)]
592 | public static extern bool NET_DVR_GetUpnpNatState(int lUserID, ref NET_DVR_UPNP_NAT_STATE lpState);
593 | [DllImport(DllPath)]
594 | public static extern bool NET_DVR_ClientSetVideoEffect(int lRealHandle, uint dwBrightValue, uint dwContrastValue, uint dwSaturationValue, uint dwHueValue);
595 | [DllImport(DllPath)]
596 | public static extern bool NET_DVR_ClientGetVideoEffect(int lRealHandle, ref uint pBrightValue, ref uint pContrastValue, ref uint pSaturationValue, ref uint pHueValue);
597 | [DllImport(DllPath)]
598 | public static extern bool NET_DVR_GetConfigFile(int lUserID, string sFileName);
599 | [DllImport(DllPath)]
600 | public static extern bool NET_DVR_SetConfigFile(int lUserID, string sFileName);
601 | [DllImport(DllPath)]
602 | public static extern bool NET_DVR_GetConfigFile_V30(int lUserID, string sOutBuffer, uint dwOutSize, ref uint pReturnSize);
603 | [DllImport(DllPath)]
604 | public static extern bool NET_DVR_GetConfigFile_EX(int lUserID, string sOutBuffer, uint dwOutSize);
605 | [DllImport(DllPath)]
606 | public static extern bool NET_DVR_SetConfigFile_EX(int lUserID, string sInBuffer, uint dwInSize);
607 | [DllImport(DllPath)]
608 | public static extern bool NET_DVR_SetLogToFile(int bLogEnable, string strLogDir, bool bAutoDel);
609 | [DllImport(DllPath)]
610 | public static extern bool NET_DVR_GetSDKState(ref NET_DVR_SDKSTATE pSDKState);
611 | [DllImport(DllPath)]
612 | public static extern bool NET_DVR_GetSDKAbility(ref NET_DVR_SDKABL pSDKAbl);
613 | [DllImport(DllPath)]
614 | public static extern bool NET_DVR_GetPTZProtocol(int lUserID, ref NET_DVR_PTZCFG pPtzcfg);
615 | [DllImport(DllPath)]
616 | public static extern bool NET_DVR_LockPanel(int lUserID);
617 | [DllImport(DllPath)]
618 | public static extern bool NET_DVR_UnLockPanel(int lUserID);
619 | [DllImport(DllPath)]
620 | public static extern bool NET_DVR_SetRtspConfig(int lUserID, uint dwCommand, ref NET_DVR_RTSPCFG lpInBuffer, uint dwInBufferSize);
621 | [DllImport(DllPath)]
622 | public static extern bool NET_DVR_GetRtspConfig(int lUserID, uint dwCommand, ref NET_DVR_RTSPCFG lpOutBuffer, uint dwOutBufferSize);
623 | [DllImport(DllPath)]
624 | public static extern bool NET_DVR_MatrixGetSceneCfg(int lUserID, uint dwSceneNum, ref NET_DVR_MATRIX_SCENECFG lpSceneCfg);
625 | [DllImport(DllPath)]
626 | public static extern bool NET_DVR_MatrixSetSceneCfg(int lUserID, uint dwSceneNum, ref NET_DVR_MATRIX_SCENECFG lpSceneCfg);
627 | [DllImport(DllPath)]
628 | public static extern bool NET_DVR_GetRealHeight(int lUserID, int lChannel, ref NET_VCA_LINE lpLine, ref Single lpHeight);
629 | [DllImport(DllPath)]
630 | public static extern bool NET_DVR_GetRealLength(int lUserID, int lChannel, ref NET_VCA_LINE lpLine, ref Single lpLength);
631 | [DllImport(DllPath)]
632 | public static extern bool NET_DVR_SaveRealData_V30(int lRealHandle, uint dwTransType, string sFileName);
633 | [DllImport(DllPath)]
634 | public static extern IntPtr NET_DVR_InitG711Encoder(ref NET_DVR_AUDIOENC_INFO enc_info);
635 | [DllImport(DllPath)]
636 | public static extern bool NET_DVR_EncodeG711Frame(IntPtr handle, ref NET_DVR_AUDIOENC_PROCESS_PARAM p_enc_proc_param);
637 | [DllImport(DllPath)]
638 | public static extern bool NET_DVR_ReleaseG711Encoder(IntPtr pEncodeHandle);
639 | [DllImport(DllPath)]
640 | public static extern bool NET_DVR_DecodeG711Frame(uint iType, ref byte pInBuffer, ref byte pOutBuffer);
641 | [DllImport(DllPath)]
642 | public static extern bool NET_DVR_EmailTest(int lUserID);
643 | [DllImport(DllPath)]
644 | public static extern int NET_DVR_FindFileByEvent(int lUserID, ref NET_DVR_SEARCH_EVENT_PARAM lpSearchEventParam);
645 | [DllImport(DllPath)]
646 | public static extern int NET_DVR_FindNextEvent(int lSearchHandle, ref NET_DVR_SEARCH_EVENT_RET lpSearchEventRet);
647 | [DllImport(DllPath)]
648 | public static extern Int32 NET_DVR_Login_V30(string sDVRIP, Int32 wDVRPort, string sUserName, string sPassword, ref NET_DVR_DEVICEINFO_V30 lpDeviceInfo);
649 | [DllImport(DllPath)]
650 | public static extern int NET_DVR_Login_V40(ref NET_DVR_USER_LOGIN_INFO pLoginInfo, ref NET_DVR_DEVICEINFO_V40 lpDeviceInfo);
651 | [DllImport(DllPath)]
652 | public static extern bool NET_DVR_Logout_V30(Int32 lUserID);
653 | [DllImport(DllPath)]
654 | public static extern int NET_DVR_FindNextLog_MATRIX(int iLogHandle, ref NET_DVR_LOG_MATRIX lpLogData);
655 | [DllImport(DllPath)]
656 | public static extern int NET_DVR_FindDVRLog_Matrix(int iUserID, int lSelectMode, uint dwMajorType, uint dwMinorType, ref tagVEDIOPLATLOG lpVedioPlatLog, ref NET_DVR_TIME lpStartTime, ref NET_DVR_TIME lpStopTime);
657 | [DllImport(DllPath)]
658 | public static extern bool NET_DVR_STDXMLConfig(int iUserID, ref NET_DVR_XML_CONFIG_INPUT lpInputParam, ref NET_DVR_XML_CONFIG_OUTPUT lpOutputParam);
659 | [DllImport(DllPath)]
660 | public static extern bool NET_DVR_GetDeviceConfig(int lUserID, uint dwCommand, uint dwCount, IntPtr lpInBuffer, uint dwInBufferSize, IntPtr lpStatusList, IntPtr lpOutBuffer, uint dwOutBufferSize);
661 | [DllImport(DllPath)]
662 | public static extern bool NET_DVR_SetDeviceConfig(int lUserID, uint dwCommand, uint dwCount, IntPtr lpInBuffer, uint dwInBufferSize, IntPtr lpStatusList, IntPtr lpInParamBuffer, uint dwInParamBufferSize);
663 | [DllImport(DllPath)]
664 | public static extern bool NET_DVR_SetDeviceConfigEx(Int32 lUserID, uint dwCommand, uint dwCount, ref NET_DVR_IN_PARAM lpInParam, ref NET_DVR_OUT_PARAM lpOutParam);
665 | [DllImport(DllPath)]
666 | public static extern bool NET_DVR_GetSTDConfig(int iUserID, uint dwCommand, ref NET_DVR_STD_CONFIG lpConfigParam);
667 | [DllImport(DllPath)]
668 | public static extern bool NET_DVR_SetSTDConfig(int iUserID, uint dwCommand, ref NET_DVR_STD_CONFIG lpConfigParam);
669 | [DllImport(DllPath)]
670 | public static extern int NET_DVR_StartRemoteConfig(int lUserID, int dwCommand, IntPtr lpInBuffer, Int32 dwInBufferLen, RemoteConfigCallback cbStateCallback, IntPtr pUserData);
671 | [DllImport(DllPath)]
672 | public static extern int NET_DVR_GetNextRemoteConfig(int lHandle, IntPtr lpOutBuff, int dwOutBuffSize);
673 | [DllImport(DllPath)]
674 | public static extern bool NET_DVR_SendRemoteConfig(int lHandle, int dwDataType, IntPtr pSendBuf, int dwBufSize);
675 | [DllImport(DllPath)]
676 | public static extern bool NET_DVR_StopRemoteConfig(int lHandle);
677 | [DllImport(DllPath)]
678 | public static extern bool NET_DVR_RemoteControl(int lUserID, int dwCommand, IntPtr lpInBuffer, int dwInBufferSize);
679 | [DllImport(DllPath)]
680 | public static extern bool NET_DVR_RemoteControl(int lUserID, int dwCommand, ref NET_DVR_FACE_PARAM_CTRL_CARDNO lpInBuffer, int dwInBufferSize);
681 | [DllImport(DllPath)]
682 | public static extern bool NET_DVR_ContinuousShoot(Int32 lUserID, ref NET_DVR_SNAPCFG lpInter);
683 | [DllImport(DllPath)]
684 | public static extern bool NET_DVR_ManualSnap(Int32 lUserID, ref NET_DVR_MANUALSNAP lpInter, ref NET_DVR_PLATE_RESULT lpOuter);
685 | [DllImport(DllPath)]
686 | public static extern bool NET_DVR_GetDeviceAbility(int lUserID, uint dwAbilityType, IntPtr pInBuf, uint dwInLength, IntPtr pOutBuf, uint dwOutLength);
687 | [DllImport(DllPath)]
688 | public static extern bool NET_DVR_SetBehaviorParamKey(int lUserID, int lChannel, uint dwParameterKey, int nValue);
689 | [DllImport(DllPath)]
690 | public static extern bool NET_DVR_GetBehaviorParamKey(int lUserID, int lChannel, uint dwParameterKey, ref int pValue);
691 | [DllImport(DllPath)]
692 | public static extern bool NET_DVR_GetVCADrawMode(int lUserID, int lChannel, ref NET_VCA_DRAW_MODE lpDrawMode);
693 | [DllImport(DllPath)]
694 | public static extern bool NET_DVR_SetVCADrawMode(int lUserID, int lChannel, ref NET_VCA_DRAW_MODE lpDrawMode);
695 | [DllImport(DllPath)]
696 | public static extern bool NET_DVR_SetLFTrackMode(int lUserID, int lChannel, ref NET_DVR_LF_TRACK_MODE lpTrackMode);
697 | [DllImport(DllPath)]
698 | public static extern bool NET_DVR_GetLFTrackMode(int lUserID, int lChannel, ref NET_DVR_LF_TRACK_MODE lpTrackMode);
699 | [DllImport(DllPath)]
700 | public static extern bool NET_DVR_GetCCDCfg(int lUserID, int lChannel, ref NET_DVR_CCD_CFG lpCCDCfg);
701 | [DllImport(DllPath)]
702 | public static extern bool NET_DVR_SetCCDCfg(int lUserID, int lChannel, ref NET_DVR_CCD_CFG lpCCDCfg);
703 | [DllImport(DllPath)]
704 | public static extern bool NET_DVR_GetParamSetMode(int lUserID, ref uint dwParamSetMode);
705 | [DllImport(DllPath)]
706 | public static extern bool NET_DVR_InquestStartCDW_V30(int lUserID, ref NET_DVR_INQUEST_ROOM lpInquestRoom, bool bNotBurn);
707 | [DllImport(DllPath)]
708 | public static extern int PostMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
709 | [DllImport(DllPath)]
710 | public static extern bool NET_VCA_RestartLib(int lUserID, int lChannel);
711 | }
712 | }
713 |
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK/QuickNV.HikvisionNetSDK.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard2.0
5 | aaasoft
6 | https://github.com/QuickNV/QuickNV.HikvisionNetSDK
7 | Hikvision, SDK
8 | https://github.com/QuickNV/QuickNV.HikvisionNetSDK.git
9 | git
10 | Hikvision NetSDK原始API
11 | 1.0.4
12 | logo.png
13 | README.md
14 |
15 |
16 |
17 |
18 | True
19 | \
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 | True
30 | \
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/src/QuickNV.HikvisionNetSDK/README.md:
--------------------------------------------------------------------------------
1 | # QuickNV.HikvisionNetSDK
2 | * Avaliable as [nuget](https://www.nuget.org/packages/QuickNV.HikvisionNetSDK/)
3 |
4 | * [](https://www.nuget.org/packages/QuickNV.HikvisionNetSDK/)
5 |
6 | * Hikvision NetSDK.
7 |
8 | 说明
9 | ```
10 | SDK定义类:QuickNV.HikvisionNetSDK.Defines
11 | SDK方法类:QuickNV.HikvisionNetSDK.Methods
12 | SDK错误枚举:QuickNV.HikvisionNetSDK.Errors
13 | ```
14 |
15 | 示例
16 | ```
17 | using static QuickNV.HikvisionNetSDK.Defines;
18 | using static QuickNV.HikvisionNetSDK.Methods;
19 |
20 | var host = "127.0.0.1";
21 | var port = 8000;
22 | var user = "admin";
23 | var password = "123456";
24 |
25 | try
26 | {
27 | NET_DVR_Init();
28 | Console.WriteLine("初始化成功!");
29 | //登录
30 | Console.WriteLine("正在登录...");
31 | NET_DVR_DEVICEINFO_V30 deviceInfo = default;
32 | var userId = Invoke(NET_DVR_Login_V30(host, port, user, password, ref deviceInfo));
33 | Console.WriteLine("登录成功!");
34 | //退出登录
35 | NET_DVR_Logout_V30(userId);
36 | Console.WriteLine("退出登录完成");
37 | //清理
38 | NET_DVR_Cleanup();
39 | Console.WriteLine("清理完成");
40 | }
41 | catch (Exception ex)
42 | {
43 | Console.WriteLine(ex.ToString());
44 | }
45 | ```
--------------------------------------------------------------------------------