วิธีใช้งาน go2rtc สำหรับ Home Assistant

วิธีใช้งาน go2rtc สำหรับ Home Assistant

go2rtc คือ application ที่มีความสามารถในการ streaming กล้องเกือบทุกประเภท เช่น RTSP, RTMP, WebRTC, MJPEG,  FFmpeg อื่นๆ อีกมากมาย โดยความสามารถของเขา จะสามารถ restream จาก protocol: A ไปเป็น protocol: B (อ่านเพิ่มเติม)

ตัวอย่าง RTSP -> RTSP, RTSP -> MJPEG, RTSP -> WebRTC, ONVIF -> MJPEG

กล้องที่ทำการ restream ผ่านทาง go2rtc จะมีการเพิ่ม codecs เพื่อให้ support WebRTC และ MSE โดยอัตโนมัติ  (อ่านเพิ่มเติม)

สำหรับวิธีติดตั้งมีหลายวิธี แต่ในบทความนี้ขอแนะนำเป็น 2 แบบ ที่ผมลองใช้งานจริง และตัวบทความเขียนตอน go2rtc version: 1.5.0

วิธีติดตั้งแบบ Home Assistant Add-on

 1. Settings -> Add-ons -> Add-on Store -> repositories > Add

https://github.com/AlexxIT/hassio-addons

 2.  go2rtc > Install > Start
 3. เข้าใช้งาน OPEN WEB UI

วิธีติดตั้งแบบ Docker

 1. สร้าง docker-compose หรือ stack portainer

services:
  go2rtc:
    image: alexxit/go2rtc:latest
    container_name: go2rtc
    network_mode: host
    privileged: true
    environment:
      - TZ=Asia/Bangkok
    volumes:
      - /root/go2rtc:/config	# folder for go2rtc.yaml file (edit from WebUI)
    restart: unless-stopped

 2. เข้าใช้งาน http://{{IP_HOST}}:1984

วิธีใช้งาน go2rtc

เมื่อเราเข้าไปที่ WebUI จะมีเมนูให้เราใช้งานหลักคือ Streams กับ Config

  • Streams สำหรับทดสอบ stream
  • Config สำหรับแก้ไข configuration

วิธีแก้ไข Configuration

สำหรับวิธีแก้ไขตัว Configuration ให้เข้าไปที่เมนู Config จะเป็นการเขียนรูปแบบ yaml เมื่อเขียนเสร็จสามารถกดปุ่ม Save & Restart และกลับมาทดสอบที่เมนู Streams (อ่านเพิ่มเติม)

ตัวอย่าง Source: RTSP -> To: RTSP
streams:
  camera_a: rtsp://admin:[email protected]:554/stream1
แบบที่ 1
streams:
  camera_a: 
    - rtsp://admin:[email protected]:554/stream1
แบบที่ 2
rtsp://127.0.0.1:8554/camera_a
เรียกใช้งาน RTSP (Home Assistant Add-on)
rtsp://192.168.1.100:8554/camera_a
เรียกใช้งาน RTSP (Docker ตัวอย่าง HOST_IP=192.168.1.100)
ตัวอย่าง Source: RTSP -> To: MJPEG
streams:
  camera_a: ffmpeg:rtsp://admin:[email protected]:554/stream1#video=mjpeg
แบบที่ 1
streams:
  camera_a: 
    - rtsp://admin:[email protected]:554/stream1
    - ffmpeg:camera_a#video=mjpeg
แบบที่ 2 (แบบนี้ใช้ CPU เยอะกว่าแบบที่ 1)
http://127.0.0.1:1984/api/stream.mjpeg?src=camera_a
เรียกใช้งาน MJPEG (Home Assistant Add-on)
http://192.168.1.100:1984/api/stream.mjpeg?src=camera_a
เรียกใช้งาน MJPEG (Docker ตัวอย่าง HOST_IP=192.168.1.100)
ตัวอย่าง Source: ONVIF -> To: RTSP, To: MJPEG
streams:
  camera_a: onvif://admin:[email protected]:8000
  camera_b: onvif://admin:[email protected]:6688
กล้อง 2 ตัว Source: ONVIF -> To: RTSP
streams:
  camera_a: 
    - onvif://admin:[email protected]:8000
    - ffmpeg:camera_a#video=mjpeg
  camera_b: 
    - onvif://admin:[email protected]:6688
    - ffmpeg:camera_b#video=mjpeg
กล้อง 2 ตัว Source: ONVIF -> To: MJPEG
ตัวอย่าง Source: RTSP ไม่มีเสียง OPUS, AAC
streams:
  camera_a: 
    - rtsp://admin:[email protected]:554/stream1
    - ffmpeg:camera_a#audio=opus#audio=aac
เพิ่มเสียง opus และ aac ให้กับกล้อง
ตัวอย่าง JPEG snapshots (สามารถใช้งานได้เป็นค่าเริ่มต้น)
http://127.0.0.1:1984/api/frame.jpeg?src=camera_a
เรียกใช้งาน MJPEG (Home Assistant Add-on)
http://192.168.1.100:1984/api/frame.jpeg?src=camera_a
เรียกใช้งาน MJPEG (Docker ตัวอย่าง HOST_IP=192.168.1.100)

วิธีติดตั้ง WebRTC Camera

ติดตั้ง WebRTC ใช้งานบน Home Assistant
สำหรับคนที่ใช้งาน Home Assistant คงจะเจอกับปัญหาดูกล้อง Realtimeแล้วมีอาการทำไมภาพมันช้ากว่าความเป็นจริงประมาณ 10 วินาที ซึ่งผมก็เจอปัญหาเหมือนกัน ช่วงหลังก็เลยเลี่ยงไปใช้งานแบบ MJPEGซึ่งสามารถดูได้แบบ Realtime กว่าแบบ RTSP แต่ปัญหาคือกล้อง IP

ผมเคยเขียนไว้ในบทความเก่าไว้แระ เป็นการติดตั้งผ่านทาง HACS ค้นหา "WebRTC Camera" แต่ขั้นตอนการ Add Integrations เข้าไปที่ Home Assistant จะเปลี่ยนแปลงไปนิดนึง ให้ทำการกรอก URL ของ go2rtc เข้าไปครับ

http://localhost:1984/
ติดตั้งผ่าน Home Assistant Add-on
http://192.168.1.100:1984/
ติดตั้งด้วย Docker (ตัวอย่าง HOST_IP=192.168.1.100)