1 पॉइंट द्वारा GN⁺ 2024-09-17 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • 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 अडैप्टर

पर्यावरण सेटअप

  1. Raspberry Pi Imager का उपयोग करके Lite OS (Bookworm 64-bit) को micro SD कार्ड पर लिखें
  2. आवश्यक लाइब्रेरी इंस्टॉल करें
    sudo apt install libmosquitto1 pulseaudio libavformat59 libswscale6
    
  3. Raspberry Pi हार्डवेयर को सक्रिय करने के लिए /boot/firmware/config.txt में नीचे की सामग्री जोड़ें
    camera_auto_detect=0
    start_x=1
    gpu_mem=16
    
    v4l2 से कैमरा पढ़ने के लिए camera_auto_detect=0 सेट करें
  4. 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 फ़्लैग के साथ चलाकर सभी विकल्प देखे जा सकते हैं
  • कॉन्फ़िगरेशन लागू करके एप्लिकेशन शुरू करें
    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/
    
    संकेत 1: Pi 5 हार्डवेयर एन्कोडिंग को सपोर्ट नहीं करता, इसलिए --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 टिप्पणियां

 
GN⁺ 2024-09-17
Hacker News राय
  • एक उपयोगकर्ता ने घर की मरम्मत के दौरान remote monitoring के लिए security system लगाने की कोशिश की, लेकिन पता चला कि ज़्यादातर फीचर्स के लिए broadband internet की ज़रूरत होती है

    • इसके बजाय, उसने Raspberry Pi camera, RPi Zero 2W, LTE hotspot, और T-Mobile के $5/माह prepaid SIM का इस्तेमाल करके अपना सिस्टम बनाया
    • सॉफ़्टवेयर के तौर पर उसने imgcomp का उपयोग किया, जो हर सेकंड फ़ोटो लेता था, बदली हुई तस्वीरों को VPS पर अपलोड करता था, और Gotify के ज़रिए मोबाइल फ़ोन पर सूचना भेजता था
  • एक अन्य उपयोगकर्ता घर बनवाने के दौरान apartment में रह रहा था और timelapse video बनाकर internet के ज़रिए काम की प्रगति देखना चाहता था

    • उसे AliExpress पर बेहतर quality वाला camera मिला
  • एक और उपयोगकर्ता ने Raspberry Pi Zero WH के साथ mediamtx project पर विचार किया

    • यह WebRTC का एक अच्छा example है, हालांकि DDNS और port forwarding setup की ज़रूरत पड़ सकती है
    • open source solution का उपयोग करके Pi और server के बीच private connection बनाया जा सकता है
  • एक उपयोगकर्ता ने सवाल उठाया कि Raspberry Pi 5 में v4l2 hardware encoding का support क्यों नहीं है

  • एक अन्य उपयोगकर्ता yolov3-tiny model का उपयोग करके real-time human detection की कोशिश कर रहा था

    • वह C++ में performance को अधिकतम करने की कोशिश कर रहा है
  • एक और उपयोगकर्ता ने Sentry-Picam का उपयोग करके इसी तरह का उद्देश्य हासिल किया, Syncthing के ज़रिए 3 अलग-अलग devices के साथ sync किया, और sendxmpp आधारित push notification script को जोड़ा

  • एक उपयोगकर्ता ने Nvidia Jetson के साथ इसी तरह का project किया था और अब reCamera में रुचि रखता है

  • एक अन्य उपयोगकर्ता open source firmware इस्तेमाल करने वाले board की तलाश में था

  • अंत में, एक उपयोगकर्ता ने पूछा कि अगर सिर्फ़ audio record करना हो, तो क्या WebRTC एक अच्छा solution होगा