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 วิธีใช้งาน go2rtc สำหรับ Home Assistant

  • 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

ผมเคยเขียนไว้ในบทความเก่าไว้แระ เป็นการติดตั้งผ่านทาง HACS ค้นหา “WebRTC Camera” แต่ขั้นตอนการ Add Integrations เข้าไปที่ Home Assistant จะเปลี่ยนแปลงไปนิดนึง ให้ทำการกรอก URL ของ go2rtc เข้าไปครับ วิธีใช้งาน go2rtc สำหรับ Home Assistant http://localhost:1984/

ติดตั้งผ่าน Home Assistant Add-on http://192.168.1.100:1984/

ติดตั้งด้วย Docker (ตัวอย่าง HOST_IP=192.168.1.100)