Raspberry Pi आधारित ओपन सोर्स सुरक्षा कैमरा
(github.com/TzuHuanTai)- Raspberry Pi को कम-विलंबता वाले होम सुरक्षा कैमरा में बदलने वाला प्रोजेक्ट
- v4l2DMA हार्डवेयर एन्कोडर और WebRTC का उपयोग
- मीडिया सर्वर के बिना शुद्ध P2P आधारित कैमरा के रूप में वीडियो प्लेबैक और डाउनलोड संभव
- कई उपयोगकर्ता एक साथ लाइव स्ट्रीम देख सकते हैं
- Raspberry Pi 5 या अन्य SBC v4l2 हार्डवेयर एन्कोडिंग को सपोर्ट नहीं करते, इसलिए सॉफ़्टवेयर एन्कोडिंग मोड में चलाना होगा
उपयोग का तरीका
- Releases से नवीनतम बाइनरी फ़ाइल डाउनलोड करें
- Pi Camera ऐप इंस्टॉल करें और निर्देशों का पालन करें
हार्डवेयर आवश्यकताएँ
- Raspberry Pi (Zero 2W या उससे ऊपर)
- CSI कैमरा मॉड्यूल
- कम से कम 4GB का micro SD कार्ड
- USB डिस्क और Micro-USB Male to USB-A Female अडैप्टर
पर्यावरण सेटअप
- Raspberry Pi Imager का उपयोग करके Lite OS (Bookworm 64-bit) को micro SD कार्ड पर लिखें
- आवश्यक लाइब्रेरी इंस्टॉल करें
sudo apt install libmosquitto1 pulseaudio libavformat59 libswscale6 - Raspberry Pi हार्डवेयर को सक्रिय करने के लिए
/boot/firmware/config.txtमें नीचे की सामग्री जोड़ें
v4l2 से कैमरा पढ़ने के लिएcamera_auto_detect=0 start_x=1 gpu_mem=16camera_auto_detect=0सेट करें - USB डिस्क माउंट करें [संदर्भ]
- यदि वीडियो रिकॉर्डिंग नहीं चाहिए, तो इस चरण को छोड़ दें और रन करते समय
record_pathफ़्लैग सेट न करें - डिस्क ड्राइव का पता चलने पर यह अपने-आप
/mnt/ext_diskपर माउंट हो जाएगी
sudo apt-get install autofs echo '/- /etc/auto.usb --timeout=5' | sudo tee -a /etc/auto.master > /dev/null echo '/mnt/ext_disk -fstype=auto,nofail,nodev,nosuid,noatime,umask=000 :/dev/sda1' | sudo tee -a /etc/auto.usb > /dev/null sudo systemctl restart autofs - यदि वीडियो रिकॉर्डिंग नहीं चाहिए, तो इस चरण को छोड़ दें और रन करते समय
एप्लिकेशन चलाना
- वर्तमान में MQTT ही एकमात्र signaling mechanism के रूप में उपयोग होता है, इसलिए एप्लिकेशन शुरू करने से पहले MQTT सर्वर तैयार होना चाहिए
- यदि एप्लिकेशन केवल LAN के भीतर उपयोग होगा, तो उसी Pi पर Mosquitto जैसे MQTT सर्वर को इंस्टॉल किया जा सकता है
- यदि remote access की आवश्यकता हो, तो cloud-आधारित MQTT सर्वर उपयोग करने की सिफारिश है (जैसे: HiveMQ, EXMQ)
- remote signaling server को मोबाइल डेटा से एक्सेस करने के लिए DDNS और port forwarding सेटअप आवश्यक है
चलाना
pi_webrtcबाइनरी फ़ाइल को-hफ़्लैग के साथ चलाकर सभी विकल्प देखे जा सकते हैं- कॉन्फ़िगरेशन लागू करके एप्लिकेशन शुरू करें
संकेत 1: Pi 5 हार्डवेयर एन्कोडिंग को सपोर्ट नहीं करता, इसलिएpulseaudio --start /path/to/pi_webrtc --device=/dev/video0 --fps=30 --width=1280 --height=960 --v4l2_format=h264 --hw_accel --mqtt_host=example.s1.eu.hivemq.cloud --mqtt_port=8883 --mqtt_username=hakunamatata --mqtt_password=Wonderful --uid=home-pi-zero2w --record_path=/mnt/ext_disk/video/--hw_accelफ़्लैग हटा दें और--v4l2_formatकोmjpegपर सेट करें। वीडियो एन्कोडिंग OpenH264 द्वारा संभाली जाएगी संकेत 2:1920x1080सेट करने पर हार्डवेयर डिकोडर फ़र्मवेयर1920x1088में बदल जाता है, लेकिन isp/encoder समायोजित नहीं होते, जिससे memory range से बाहर जाने की समस्या होती है।1920x1088पर सेट करने से समस्या नहीं होती
Linux सेवा के रूप में चलाना
1. pulseaudio को system-wide daemon के रूप में चलाएँ [संदर्भ]
/etc/systemd/system/pulseaudio.serviceफ़ाइल बनाएँ[Unit] Description= Pulseaudio Daemon After=rtkit-daemon.service systemd-udevd.service dbus.service [Service] Type=simple ExecStart=/usr/bin/pulseaudio --system --disallow-exit --disallow-module-loading Restart=always RestartSec=10 [Install] WantedBy=multi-user.target- client settings में
autospawn = noजोड़ेंecho 'autospawn = no' | sudo tee -a /etc/pulse/client.conf > /dev/null - root को pulse समूह में जोड़ें
sudo adduser root pulse-access - सेवा enable और start करें
sudo systemctl daemon-reload sudo systemctl enable pulseaudio.service sudo systemctl start pulseaudio.service
2. pi_webrtc चलाएँ और reboot पर auto-start सेट करें
/etc/systemd/system/pi-webrtc.serviceफ़ाइल बनाएँ[Unit] Description= The p2p camera via webrtc. After=systemd-networkd.service [Service] Type=simple WorkingDirectory=/path/to ExecStart=/path/to/pi_webrtc --device=/dev/video0 --fps=30 --width=1280 --height=960 --v4l2_format=h264 --hw_accel --mqtt_host=example.s1.eu.hivemq.cloud --mqtt_port=8883 --mqtt_username=hakunamatata --mqtt_password=wonderful --record_path=/mnt/ext_disk/video/ Restart=always RestartSec=10 [Install] WantedBy=multi-user.target- सेवा enable और start करें
sudo systemctl daemon-reload sudo systemctl enable pi-webrtc.service sudo systemctl start pi-webrtc.service
उन्नत सेटिंग्स
- दो-तरफ़ा संचार के लिए माइक्रोफ़ोन और स्पीकर जोड़ना आवश्यक है
माइक्रोफ़ोन
- माइक्रोफ़ोन wiring और testing के निर्देशों के लिए लिंक देखें
स्पीकर
- स्पीकर सेटअप के निर्देशों के लिए लिंक देखें
लाइसेंस
- यह प्रोजेक्ट Apache License, Version 2.0 के तहत लाइसेंस प्राप्त है। अधिक जानकारी के लिए LICENSE फ़ाइल देखें
GN⁺ का सारांश
- यह प्रोजेक्ट Raspberry Pi को कम-विलंबता वाले होम सुरक्षा कैमरा में बदलने का तरीका प्रदान करता है
- v4l2DMA हार्डवेयर एन्कोडर और WebRTC का उपयोग करके यह मीडिया सर्वर के बिना शुद्ध P2P आधार पर काम करता है
- कई उपयोगकर्ता एक साथ लाइव स्ट्रीम देख सकते हैं, इसलिए यह घरेलू सुरक्षा कैमरा के रूप में उपयोगी है
- MQTT आधारित signaling mechanism के साथ यह LAN और remote access दोनों को सपोर्ट कर सकता है
- समान सुविधाओं वाले अन्य प्रोजेक्ट्स में MotionEye और ZoneMinder शामिल हैं
1 टिप्पणियां
Hacker News राय
एक उपयोगकर्ता ने घर की मरम्मत के दौरान remote monitoring के लिए security system लगाने की कोशिश की, लेकिन पता चला कि ज़्यादातर फीचर्स के लिए broadband internet की ज़रूरत होती है
एक अन्य उपयोगकर्ता घर बनवाने के दौरान apartment में रह रहा था और timelapse video बनाकर internet के ज़रिए काम की प्रगति देखना चाहता था
एक और उपयोगकर्ता ने Raspberry Pi Zero WH के साथ mediamtx project पर विचार किया
एक उपयोगकर्ता ने सवाल उठाया कि Raspberry Pi 5 में v4l2 hardware encoding का support क्यों नहीं है
एक अन्य उपयोगकर्ता yolov3-tiny model का उपयोग करके real-time human detection की कोशिश कर रहा था
एक और उपयोगकर्ता ने Sentry-Picam का उपयोग करके इसी तरह का उद्देश्य हासिल किया, Syncthing के ज़रिए 3 अलग-अलग devices के साथ sync किया, और sendxmpp आधारित push notification script को जोड़ा
एक उपयोगकर्ता ने Nvidia Jetson के साथ इसी तरह का project किया था और अब reCamera में रुचि रखता है
एक अन्य उपयोगकर्ता open source firmware इस्तेमाल करने वाले board की तलाश में था
अंत में, एक उपयोगकर्ता ने पूछा कि अगर सिर्फ़ audio record करना हो, तो क्या WebRTC एक अच्छा solution होगा