luo b7fb551b44 上传代码 7 months ago
..
Service b7fb551b44 上传代码 7 months ago
Utils b7fb551b44 上传代码 7 months ago
HvChannel.cs b7fb551b44 上传代码 7 months ago
HvDeviceConfig.cs b7fb551b44 上传代码 7 months ago
HvHdConfig.cs b7fb551b44 上传代码 7 months ago
HvIpChannel.cs b7fb551b44 上传代码 7 months ago
HvLogLevel.cs b7fb551b44 上传代码 7 months ago
HvNetworkConfig.cs b7fb551b44 上传代码 7 months ago
HvPTZCommand.cs b7fb551b44 上传代码 7 months ago
HvPreset.cs b7fb551b44 上传代码 7 months ago
HvRemoteFile.cs b7fb551b44 上传代码 7 months ago
HvSession.cs b7fb551b44 上传代码 7 months ago
HvStreamType.cs b7fb551b44 上传代码 7 months ago
QuickNV.HikvisionNetSDK.Api.csproj b7fb551b44 上传代码 7 months ago
README.md b7fb551b44 上传代码 7 months ago

README.md

QuickNV.HikvisionNetSDK.Api

  • Avaliable as nuget

  • NuGet Downloads

  • Api for Hikvision NetSDK.

示例

using QuickNV.HikvisionNetSDK.Api;
using Newtonsoft.Json;
using System.Text;

var host = "127.0.0.1";
var port = 8000;
var user = "admin";
var password = "123456";
var encoding = CodePagesEncodingProvider.Instance.GetEncoding("gb2312");

try
{
    HvSession.Init();
    Console.WriteLine("初始化成功!");
    //登录
    Console.WriteLine("正在登录...");
    var session = HvSession.Login(host, port, user, password, encoding);
    Console.WriteLine("登录成功!");
    Console.WriteLine("设备时间: " + session.ConfigService.GetTime());
    Console.WriteLine("设备配置: " + JsonConvert.SerializeObject(session.ConfigService.GetDeviceConfig(), Formatting.Indented));
    Console.WriteLine("网络配置: " + JsonConvert.SerializeObject(session.ConfigService.GetNetworkConfig(), Formatting.Indented));
    Console.WriteLine("硬盘配置: " + JsonConvert.SerializeObject(session.ConfigService.GetHdConfig(), Formatting.Indented));
    Console.WriteLine("正在读取通道名称...");
    session.ChannelService.RefreshChannelsName();
    Console.WriteLine("模拟通道:" + string.Join(",", session.ChannelService.AnalogChannels.Select(t => $"通道{t.Id}_{t.Name}")));
    Console.WriteLine("IP通道:" + string.Join(",", session.ChannelService.IpChannels.Select(t => $"通道{t.Id}_{t.Name}")));
    //如果存在IP通道
    if (session.ChannelService.IpChannels.Count > 0)
    {
        Console.WriteLine("开始下载...");
        var channel = session.ChannelService.IpChannels.First();
        var stopTime = DateTime.Now;
        var startTime = stopTime.AddMinutes(-1);
        var localFileName = $"{channel.Name}_{startTime.ToString("yyyyMMddHHmmss")}_{stopTime.ToString("yyyyMMddHHmmss")}.mp4";
        var fileHandle = session.VideoFileService.StartDownloadFile(channel.Id, startTime, stopTime, localFileName);
        while (true)
        {
            Thread.Sleep(1000);
            var progress = session.VideoFileService.GetDownloadPosition(fileHandle);
            if (progress < 0 || progress > 100)
                throw new Exception("Download error.Progress: " + progress);
            Console.CursorLeft = 0;
            Console.Write($"进度:{progress}%");
            if (progress == 100)
                break;
        }
        Console.WriteLine();
        session.VideoFileService.StopDownloadFile(fileHandle);
        Console.WriteLine("下载完成。文件:" + localFileName);
    }
    //退出登录
    session.Logout();
    Console.WriteLine("退出登录完成");

    //清理
    HvSession.Cleanup();
    Console.WriteLine("清理完成");
}
catch (Exception ex)
{
    Console.WriteLine(ex.ToString());
}