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)