CHCNetSDK – source code thư viện điều khiển Camera IP bằng C#

CHCNetSDK là thư viện điều khiển camera mã nguồn mở của hãng Hikvision (Hikvision Network SDK). Bài viết này giới thiệu tính năng kèm source code viết bằng C# để các bạn có thể tích hợp vào chương trình của mình.

Mục lục

  1. Các nhóm chức năng chính của CHCNetSDK
  2. Các chức năng của CHCNetSDK-Example

Các nhóm chức năng chính của CHCNetSDK

Thư viện gốc cung cấp rất nhiều chức năng để quản lý camera (file wrapper hơn 10.000 dòng), có thể gom theo nghiệp vụ như sau:

1. Khởi tạo, đăng nhập, quản lý phiên

  • Khởi tạo / giải phóng SDK (NET_DVR_Init, NET_DVR_Cleanup)
  • Ghi log SDK ra file (NET_DVR_SetLogToFile)
  • Đăng nhập / đăng xuất (NET_DVR_Login_V30, NET_DVR_Login_V40, NET_DVR_Logout)
  • Lấy mã lỗi cuối (NET_DVR_GetLastError)
  • Kiểm tra trạng thái thiết bị / user

2. Tìm thiết bị trên mạng

  • Quét camera/DVR trong LAN (NET_DVR_SearchDevice, NET_DVR_Discovery / các bản V30)
  • Lấy thông tin thiết bị sau khi login (số kênh, serial, loại máy…)

3. Xem trực tiếp (Live view)

  • Mở luồng xem realtime (NET_DVR_RealPlay_V40)
  • Dừng xem (NET_DVR_StopRealPlay)
  • Callback nhận raw stream (PS/ES) để tự decode hoặc ghi file
  • Chọn kênh, main/sub stream, TCP/UDP, cửa sổ hiển thị (hPlayWnd)

4. Điều khiển PTZ

  • Pan / Tilt / Zoom, focus, iris
  • Điều khiển kèm tốc độ (NET_DVR_PTZControlWithSpeed, _Other)
  • Preset, cruise, track
  • Một số lệnh mở rộng (3D positioning, wiper, light…)

5. Hình ảnh và thông số camera

  • Độ sáng, tương phản, bão hòa, hue (NET_DVR_GetVideoEffect / NET_DVR_SetVideoEffect)
  • Đọc / ghi cấu hình CCD (NET_DVR_GetDVRConfig / NET_DVR_SetDVRConfig, lệnh NET_DVR_GET_CCDPARAMCFG / SET)
  • Lật / gương (mirror / flip)
  • Thông số ngày/đêm, WDR, chống nhiễu… tùy model

6. Chụp ảnh và ghi hình

  • Chụp JPEG từ preview hoặc từ thiết bị (NET_DVR_CaptureJPEGPicture, NET_DVR_CapturePicture)
  • Ghi realtime stream ra file (NET_DVR_SaveRealData / _V30)
  • Tìm file ghi trên DVR/NVR theo thời gian, loại sự kiện
  • Phát lại và tải file về máy (NET_DVR_FindFile, NET_DVR_PlayBackByTime, NET_DVR_GetFileByName…)

7. Báo động và sự kiện

  • Bố phòng / giải phòng (arm / disarm)
  • Callback nhận báo động: chuyển động, xâm nhập, I/O, mất tín hiệu…
  • Cấu hình vùng motion, lịch báo động, output relay

8. Âm thanh

  • Đàm thoại 2 chiều (voice talk)
  • Phát / thu audio kèm video stream

9. Cấu hình thiết bị từ xa

  • Hệ thống: giờ, NTP, mạng, cổng
  • Kênh: mã hóa, độ phân giải, bitrate, OSD
  • Serial (RS-485/232) cho PTZ protocol
  • User / quyền
  • Đọc / ghi file cấu hình
  • Lấy capability set (NET_DVR_GetDeviceAbility)

10. Bảo trì thiết bị

  • Restart / shutdown từ xa
  • Nâng cấp firmware
  • Format ổ cứng đầu ghi
  • Xem log thiết bị

11. Chức năng thông minh (IVS) — tùy model

  • Phân tích hành vi, line crossing, intrusion
  • Nhận diện biển số (ANPR)
  • Một số API cửa / access control trên thiết bị tích hợp

Không phải camera nào cũng hỗ trợ, cần kiểm tra capability và firmware.

Các chức năng của CHCNetSDK-Example

Với số lượng chức năng nhiều như vậy chúng tôi chỉ viết example với các chức năng phổ biến nhất bao gồm:

  • Đăng nhập camera/DVR bằng IP, cổng, user, mật khẩu (NET_DVR_Login_V30)
  • Live view lên PictureBox (NET_DVR_RealPlay_V40)
  • PTZ 4 hướng kèm tốc độ, giữ chuột để xoay / thả để dừng
  • Đọc và chỉnh độ sáng, tương phản, saturation, hue
  • Lật hình (mirror) qua cấu hình CCD
  • Lưu mật khẩu vào INI để lần sau không nhập lại

Hướng dẫn cách build CHCNetSDK-Example

Chuẩn bị công cụ cần thiết

  • Visual Studio 2022 trở lên
  • Chương trình viết bằng .NET framework 4.7.2

Cách build thư viện

Mở file CameraController.sln để build chương trình, source code rất đơn giản như sau:

  • Chỉ có 1 mode x64
  • Output file vào thư mục bin
  • Các controls (button, tabs) sử dụng thư viện TGMTcontrols (Thị Giác Máy Tính)

Giao diện chương trình

Giao diện chương trình đơn giản, phía trên nhập các thông số cần thiết là kết nối được.

Có thể get – set địa chỉ IP

Và set thông số hình ảnh như brightness, saturation và hue.

Link GitHub

https://github.com/thigiacmaytinh/CHCNetSDK-Example

Liên hệ Zalo 0939825125 để được hỗ trợ nếu bạn gặp lỗi khi build chương trình.

Leave a Reply