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

ผมเคยเขียนไว้ในบทความเก่าไว้แระ เป็นการติดตั้งผ่านทาง 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)