2 min read

วิธีใช้งาน 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)