• 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

วิธีส่งสัญญาณและไคลเอนต์

ข้อกำหนด

  • บอร์ดที่รองรับคือ Raspberry Pi Zero/3/4/5 หรือ NVIDIA Jetson Nano/NX/Orin
  • ใช้กล้อง CSI หรือ USB camera ได้
  • อินพุตจากกล้องต้องรองรับ libcamera, libargus หรือ V4L2

เริ่มต้นอย่างรวดเร็วบน Raspberry Pi

  • ติดตั้ง Raspberry Pi OS
  • ติดตั้ง dependencies
    • ติดตั้ง libmosquitto1, pulseaudio, libavformat61, libswscale8, libyaml-cpp0.8
  • ดาวน์โหลดไบนารี
    • ดาวน์โหลด release binary ล่าสุดแล้วแตกไฟล์
  • การประมวลผลสัญญาณ MQTT
    • ใช้ HiveMQ, EMQX หรือ broker ที่โฮสต์เองก็ได้
    • MQTT ทำให้กล้อง Pi และไคลเอนต์สามารถแลกเปลี่ยนข้อมูลการเชื่อมต่อ WebRTC ได้
    • WHEP ไม่ต้องใช้ broker แต่ต้องมีชื่อโฮสต์สาธารณะ

วิธีรันและข้อควรระวัง

  • เปิด 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 ออก

การใช้งานขั้นสูง

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น