Ghi hình chuyển động #1: motion

  • Với các camera IP hỗ trợ FTP, Samba hay NAS thì việc ghi hình đã trở nên đơn giản hơn rất nhiều.
  • Với các camera IP hỗ trợ ONVIF và đám mây nhưng không cho tùy biến thì hầu như chỉ có thể ghi hình qua đầu ghi của hãng. Tuy nhiên các camera này đều hỗ trợ RTSP nên có thể ghi luồng video này xuống đĩa. Vấn đề đặt ra là làm sao chỉ ghi hình khi phát hiện chuyển động để tiết kiệm đĩa.

Nếu chỉ dùng RTSP thì motion có thể giúp phát hiện chuyển động. motion lưu một ảnh đen trắng gọi là mặt nạ và so với ảnh mới nhận để tính ra sự khác biệt. Điểm hạn chế là motion sử dụng nhiều CPU để xử lý mặc dù không cần nhiều RAM. Có thể giảm việc quá tải bằng cách chỉ cho motion luồng FHD với fps nhỏ hơn 10. Một RPi 4 có thể đảm đương 4-5 camera với motion.

Tuy nhiên việc phát hiện chuyển động là một tính năng cơ bản của camera, nó làm việc này bằng phần cứng hoặc nhờ vào server của hãng. Nếu chúng ta biết được khi nào có chuyển động thì việc ghi hình không cần đến motion, khi đó RPi có thể làm việc với vài chục camera. Có thể nhờ vào ONVIF để biết nhiều điều xảy ra ở camera. Tuy nhiên, nhiều camera tuyên bố hợp chuẩn ONVIF nhưng lại không đúng hoặc chỉ theo kiểu ONVIF để không phải trả tiền cho ONVIF.

MOTION

Motion là một ứng dụng phần mềm miễn phí về surveillance cho CCTV, được phát triển cho Linux. Nó sử dụng video4linux và đầu ra của nó có thể là ảnh hay video. Nó được điều khiển theo dòng lệnh nghiêm ngặt và có thể chạy như một daemon chiếm dụng ít tài nguyên.

# cài đặt
apt install motion

Chỉnh sửa file cấu hình của /etc/motion/motion.conf. Chỉ ghi các tham số chung, phần cấu hình cho từng camera ghi theo file riêng.

# Khi motion chạy ổn đinh thì sửa thành on
daemon off

# Tạo file thư mục mkdir /var/log/motion
# và chown motion:motion /var/log/motion

log_file /var/log/motion/motion.log
log_level 1

# Kích thước khung hình
width 1920
height 1080

framerate 7

# Thêm video trước chuyển động 2s
pre_capture 2

post_capture 0

# Độ dài video (giây)
movie_max_time 60

# Chất lượng mã hóa (0-100)
movie_quality 0

# Tên file
movie_filename %t-%v-%Y%m%d%H%M%S

# Port cho webcontrol.
webcontrol_port 8080

# Chỉ kết nối với localhost.
webcontrol_localhost off

# Port cho live stream.
stream_port 8081

# Chỉ kết nối với localhost
stream_localhost off

############################################
# Camera config files - One for each camera.
############################################
camera /etc/motion/imou.conf
; camera /etc/motion/hik.conf
; camera /usr/etc/motion/camera3.conf
; camera /usr/etc/motion/camera4.conf

Thí dụ về cấu hình camera /etc/motion/hik.conf

camera_name HIK

# Thí dụ về rtsp url của HIK camera
netcam_url rtsp://<IP>:554/Streaming/Channels/101?transportmode=unicast&profile=Profile_1
netcam_userpass admin:<password>

# Text được overlayed ở góc dưới trái khung hình
text_left FLOOR CAM
text_scale 2

movie_output on
movie_filename FLOOR_%v-%Y%m%d%H%M%S

picture_output first
picture_filename FLOOR_%Y%m%d%H%M%S-%q

# Thư mục chứa hình/video. motion tự tạo
target_dir /mnt/floor

Chạy thử motion qua câu lệnh

motion
  • motion chỉ ghi clip và hình snapshot khi có chuyển động trước camera.
  • Việc chiếm dụng CPU của motion tùy thuộc vào độ phân giải của video, fps và quan trọng là giống với độ phân giải hiện có của camera để giúp motion không phải co giản khung hình. Đôi khi độ phân giải thấp hơn lại tiêu tốn CPU nhiều hơn vì lý do này.
resolution=1280 x 720, fps=6
Độ phân giải của camera 1920 x 1080, fps=12
  • Chỉnh độ phân giải của camera phù hợp trước khi chỉnh từ motion.
  • Khi thấy motion làm việc ổn định thì sửa trong file cấu hình để motion tự chạy khi khởi động máy.
daemon on

Comments Off on Ghi hình chuyển động #1: motion

Filed under Software

Comments are closed.