กล้องวงจรปิดโอเพนซอร์สที่สร้างบน Raspberry Pi
(github.com/TzuHuanTai)- Raspberry Pi WebRTC เป็นโปรเจกต์บนพื้นฐาน C++20 ที่เปลี่ยน Raspberry Pi หรือ NVIDIA Jetson ให้เป็นแพลตฟอร์มสตรีมมิง WebRTC ที่มีความหน่วงราว 200ms
- ใช้ WebRTC แบบเนทีฟ และรองรับ การเข้ารหัสด้วยฮาร์ดแวร์/ซอฟต์แวร์, การถ่ายสแนปช็อต, การบันทึก, การบรอดแคสต์, การควบคุมระยะไกลและการส่งข้อความ IoT ผ่าน WebRTC DataChannel
- รองรับวิธีส่งสัญญาณ MQTT, WHEP, WebSocket โดย MQTT ใช้สำหรับให้กล้อง Pi และไคลเอนต์แลกเปลี่ยนข้อมูลการเชื่อมต่อ WebRTC
- อุปกรณ์ที่รองรับคือ Raspberry Pi Zero/3/4/5 และ NVIDIA Jetson Nano/NX/Orin ส่วนกล้องใช้ได้ทั้ง CSI หรือ USB และต้องรองรับ libcamera, libargus, V4L2
- บนอุปกรณ์อย่าง Pi 5 หรืออุปกรณ์ที่ไม่มีฮาร์ดแวร์เอนโคเดอร์ ต้องลบ
--hw-accelออกจากตัวเลือกตอนรัน ส่วน WHEP ไม่ต้องใช้ broker แต่ต้องมี ชื่อโฮสต์สาธารณะ
ภาพรวมโปรเจกต์
- Raspberry Pi WebRTC เป็นโปรเจกต์ที่เปลี่ยน Raspberry Pi หรือ NVIDIA Jetson ให้เป็นแพลตฟอร์มสตรีมมิง WebRTC แบบหน่วงต่ำ
- ระบุเป้าหมายความหน่วงไว้ที่ประมาณ 200ms
- เทคโนโลยีหลักที่ระบุมีดังนี้
-
libwebrtc m146.7680
-
C++20
- ไลเซนส์ Apache 2.0
-
ฟีเจอร์ที่รองรับ
- ให้บริการสตรีมมิงบนพื้นฐาน WebRTC แบบเนทีฟ
- การเข้ารหัสวิดีโอรองรับทั้ง การเข้ารหัสด้วยฮาร์ดแวร์ และการเข้ารหัสด้วยซอฟต์แวร์
- ฟังก์ชันกล้องครอบคลุมการถ่ายสแนปช็อต, การบันทึก, และการบรอดแคสต์
- รองรับการควบคุมระยะไกลและการส่งข้อความ IoT ผ่าน DataChannel ของ WebRTC
วิธีส่งสัญญาณและไคลเอนต์
- รองรับวิธีส่งสัญญาณ MQTT
- รองรับวิธีส่งสัญญาณ WHEP
- รองรับวิธีส่งสัญญาณ WebSocket
- picamera.js: การประมวลผลสัญญาณแบบ SFU และการบรอดแคสต์
ข้อกำหนด
- บอร์ดที่รองรับคือ Raspberry Pi Zero/3/4/5 หรือ NVIDIA Jetson Nano/NX/Orin
- ใช้กล้อง CSI หรือ USB camera ได้
- อินพุตจากกล้องต้องรองรับ libcamera, libargus หรือ V4L2
เริ่มต้นอย่างรวดเร็วบน Raspberry Pi
- ติดตั้ง Raspberry Pi OS
- แฟลช Lite OS ลง SD card ด้วย Raspberry Pi Imager
- ติดตั้ง dependencies
- ติดตั้ง
libmosquitto1,pulseaudio,libavformat61,libswscale8,libyaml-cpp0.8
- ติดตั้ง
- ดาวน์โหลดไบนารี
- ดาวน์โหลด release binary ล่าสุดแล้วแตกไฟล์
- การประมวลผลสัญญาณ MQTT
วิธีรันและข้อควรระวัง
- เปิด picamera-web แล้วเพิ่มการตั้งค่า MQTT จากนั้นสร้าง
UID - รัน
./pi-webrtcบน Pi โดยระบุตัวเลือกอย่างกล้อง, FPS, ความละเอียด, โฮสต์ MQTT, พอร์ต, ชื่อผู้ใช้, รหัสผ่าน, UID เป็นต้น - ตัวเลือกตัวอย่างได้แก่
--camera=libcamera:0,--fps=30,--width=1280,--height=960,--use-mqtt,--no-audioเป็นต้น --hw-accelเป็นตัวเลือกที่ใช้เมื่อเปิดการเข้ารหัสด้วยฮาร์ดแวร์บน Pi Zero 2W, 3B, 4B- บน Pi 5 หรืออุปกรณ์ที่ไม่มีฮาร์ดแวร์เอนโคเดอร์ ต้องลบ
--hw-accelออก
ยังไม่มีความคิดเห็น