Tải về từ camera HIKVISION


Chúng ta có thể lưu file của camera trong thẻ nhớ hoặc NAS, nhưng snapshot/clip được camera nén trong một file lớn phải dùng phần mềm của hãng để xem.

Python script Hikvision/Hiwatch Video downloading có thể giúp trích xuất các file riêng lẻ dạng .jpg hay .mp4.

Sử dụng rất đơn giản

media_download.py [-u] [-p] CAM_IP START_DATE START_TIME END_DATE END_TIME

  -u: use parameters as UTC time, otherwise use as camera's
      local time
  -p: download photos instead of videos

# Thí dụ
media_download.py 10.10.10.10 2020-04-15 00:30:00 2020-04-15 10:59:59

Trước đó phải mở file media_download.py để điền user_nameuser_password để login vào camera

Giả sử chúng ta cần trích video mỗi ngày một cách tự động, có thể sửa một chút trên media_download.py và đổi tên thành hik_downloader.py:

  • Cú pháp được đơn giản: dùng các option -d -t -D -T thay cho START_DATE START_TIME END_DATE END_TIME. Tất cả đều là tùy chọn và có giá trị mặc định
  • Thêm option -o n_days để xóa thư mục/file cũ hơn n_days ngày
  • Thêm option -f --force ghi đè nếu file đã tải về
  • Thêm option -a --all liệt kê tất cả file bao gồm cả file đã tải về
  • Khai báo cam_name, user_name, user_password theo IP của từng camera
  • Giờ kết thúc của clip cuối đã tải về (last_time) được ghi trong file text .idx
  • Bỏ qua các file đã tải về nếu START_TIME < last_time < END_TIME. Để tải lại file có thể dùng option -a, hay đặt END_TIME < last_time, hay sửa file .idx
  • chown các file tải về nếu có đặt owner = 'user:group' (eg. dành cho samba)

Sau đó, cú pháp của chúng ta là

usage: hik_downloader.py [-h] [-d START_DATE] [-t START_TIME]
           [-D END_DATE] [-T END_TIME] [-u] [-p] [-f] [-a] IP

positional arguments:
  IP                    camera's IP address

optional arguments:
  -h, --help            show this help message and exit
  -d START_DATE, --START_DATE START_DATE
                        start date of interval
  -t START_TIME, --START_TIME START_TIME
                        start time of interval
  -D END_DATE, --END_DATE END_DATE
                        end date of interval
  -T END_TIME, --END_TIME END_TIME
                        end time of interval
  -o OLDER, --OLDER OLDER
                        remove folders older than ? days
  -u, --utc             use parameters as UTC time, ...
                        otherwise use as camera's local time
  -p, --photo           download photos instead of videos
  -f, --force           overwrite if file exists
  -a, --all             list all files ...
                        including all downloaded files

Khi đó chạy crontab để tải về mỗi ngày, đồng thời xóa thư mục/file cũ hơn 7 ngày

59 23 * * * /path/to/hik_downloader.py cam_ip -o 7
  • Hoặc tải về định kỳ mỗi giờ
# mặc định bỏ qua các file đã tải về

0 * * * * /path/to/hik_downloader.py cam_ip
  • Hoặc thêm vào crontab của www-data để tải về với user www-data
# crontab -u www-data -e
0 * * * * /path/to/hik_downloader.py cam_ip
  • Tải file tại một quảng thời gian trong ngày, với user www-data
sudo -u www-data /path/to/hik_downloader.py -t 17:00:00 -T 17:30:00 cam_ip
  • Tải file thuộc nhiều ngày, file được chia vào các thư mục có tên là ngày ghi video/snapshot
hik_downloader.py 10.10.10.10 -d 2023-02-10 -D 2023-02-18

Chú thích

  • Không hỗ trợ đa luồng. Nếu có thêm hik_downloader.py khởi chạy thì nó sẽ tự động reboot camera
  • option -o --OLDER dựa trên ngày ghi video clip hay snapshot, thể hiện qua tên thư mục, không phải ngày tạo file trên local
  • Có thể chạy file build.sh để ghép các file python thành phần vào một file duy nhất, tuy rằng các khai báo import có thể trùng lặp.

Comments Off on Tải về từ camera HIKVISION

Filed under Software

Comments are closed.