RTSP, WebRTC, HomeKit, FFmpeg, RTMP 등을 지원하는 최고의 카메라 스트리밍 애플리케이션입니다.
모든 OS(Windows, macOS, Linux, ARM)에 대한 종속성 및 구성이 없는 소형 앱
지원되는 다양한 프로토콜에 대한 지연 없음(가능한 최저 스트리밍 대기 시간)
RTSP, RTMP, DVRIP, HTTP(FLV/MJPEG/JPEG/TS), USB 카메라 및 기타 소스에서 스트리밍
FFmpeg가 지원하는 모든 소스에서 스트리밍
RTSP, WebRTC, MSE/MP4, HomeKit HLS 또는 MJPEG로 스트리밍
인기 스트리밍 서비스(YouTube, Telegram 등)에 소스 게시
HomeKit 카메라 스트리밍을 지원하는 세계 최초의 프로젝트
브라우저에서 WebRTC용 H265 지원(Safari에만 해당, 자세히 알아보기)
FFmpeg를 통해 지원되지 않는 코덱에 대한 즉석 트랜스코딩
스피커가 있는 일부 카메라에서 오디오 파일 및 라이브 스트리밍 재생
다중 소스 양방향 코덱 협상
다양한 소스의 트랙을 단일 스트림으로 믹싱
자동 일치 클라이언트 지원 코덱
일부 카메라의 양방향 오디오
ngrok을 통해 개인 네트워크에서 스트리밍
모든 스마트 홈 플랫폼에 통합하거나 독립형 앱으로 사용할 수 있습니다.
영감을 받은 것:
@deepch의 스트리밍 프로젝트 시리즈
webrtc go 라이브러리 및 전체 @pion 팀
@aler9의 rtsp-simple-server 아이디어
GStreamer 프레임워크 파이프라인 아이디어
MediaSoup 프레임워크 라우팅 아이디어
@brutella의 HomeKit 액세서리 프로토콜
프로젝트 로고 작성자 @v_novoseltsev
빠른 시작
go2rtc: 바이너리
go2rtc: 도커
go2rtc: 홈어시스턴트 애드온
go2rtc: 홈어시스턴트 통합
go2rtc: 개발 버전
구성
양방향 오디오
출처: RTSP
출처: RTMP
출처: HTTP
출처: ONVIF
출처: FFmpeg
출처: FFmpeg 장치
출처: 이그젝
출처 : 에코
출처: Expr
출처: 홈킷
출처 : 버블
출처: DVRIP
출처 : 타포
출처 : 카사
출처: 고프로
출처: 이비디오엔
출처: 하스
출처: ISAPI
출처 : 둥지
출처: Roborock
출처: WebRTC
출처: 웹토렌트
수신 소스
카메라로 스트리밍
게시 스트림
모듈: 스트림
모듈: API
모듈: RTSP
모듈: RTMP
모듈: WebRTC
모듈: 홈킷
모듈: 웹토렌트
모듈: ngrok
모듈: 하스
모듈: MP4
모듈: HLS
모듈: MJPEG
모듈: 로그
보안
코덱 필터
코덱스 광기
코덱 협상
go2rtc를 사용하는 프로젝트
카메라 체험
팁
FAQ
바이너리를 다운로드하거나 Docker 또는 Home Assistant 추가 기능 또는 통합을 사용하세요.
오픈 웹 인터페이스: http://localhost:1984/
선택적으로:
구성 파일에 스트림을 추가하십시오.
webrtc에 대한 외부 액세스 설정
개발자:
자신만의 웹 인터페이스 작성
웹 API를 스마트 홈 플랫폼에 통합
최신 릴리스에서 해당 OS용 바이너리를 다운로드하세요.
go2rtc_win64.zip
- Windows 10+ 64비트
go2rtc_win32.zip
- Windows 7+ 32비트
go2rtc_win_arm64.zip
- Windows ARM 64비트
go2rtc_linux_amd64
- 리눅스 64비트
go2rtc_linux_i386
- 리눅스 32비트
go2rtc_linux_arm64
- Linux ARM 64비트(예: Raspberry 64비트 OS)
go2rtc_linux_arm
- Linux ARM 32비트(예: Raspberry 32비트 OS)
go2rtc_linux_armv6
- Linux ARMv6(이전 Raspberry 1 및 Zero용)
go2rtc_linux_mipsel
- Linux MIPS(예: Xiaomi Gateway 3, Wyze 카메라)
go2rtc_mac_amd64.zip
- macOS 10.13+ Intel 64비트
go2rtc_mac_arm64.zip
- macOS ARM 64비트
Linux 및 Mac에서 chmod +x go2rtc_xxx_xxx
권한을 수정하는 것을 잊지 마세요.
Docker 컨테이너 alexxit/go2rtc
amd64
, 386
, arm64
및 arm
포함한 여러 아키텍처를 지원합니다. 이 컨테이너는 홈어시스턴트 애드온과 동일한 기능을 제공하지만 홈어시스턴트와 독립적으로 작동하도록 설계되었습니다. FFmpeg, ngrok 및 Python이 사전 설치되어 제공됩니다.
애드온 설치:
설정 > 부가 기능 > 플러스 > 저장소 > https://github.com/AlexxIT/hassio-addons
추가
go2rtc > 설치 > 시작
설정 통합
WebRTC 카메라 사용자 정의 구성 요소는 Windows의 HassWP를 포함하여 모든 Home Assistant 설치에서 사용할 수 있습니다. 최신 버전의 go2rtc를 자동으로 다운로드하여 사용할 수 있습니다. 또는 기존 버전의 go2rtc에 연결할 수도 있습니다. 이 경우 애드온 설치는 선택 사항입니다.
최신이지만 불안정할 수도 있는 버전:
바이너리: 최신 야간 릴리스
도커: alexxit/go2rtc:master
또는 alexxit/go2rtc:master-hardware
버전
Hass 추가 기능: go2rtc master
또는 go2rtc master hardware
버전
기본적으로 go2rtc는 현재 작업 디렉토리에서 go2rtc.yaml
검색합니다.
api
서버는 기본 1984 포트 (TCP)에서 시작됩니다.
rtsp
서버는 기본 8554 포트 (TCP)에서 시작됩니다.
webrtc
연결에 포트 8555 (TCP/UDP)를 사용합니다.
ffmpeg
기본 트랜스코딩 옵션을 사용합니다
구성 옵션과 전체 설정 목록은 위키에서 찾을 수 있습니다.
사용 가능한 모듈:
스트림
api - HTTP API(WebRTC 지원에 중요)
rtsp - RTSP 서버(FFmpeg 지원에 중요)
webrtc - WebRTC 서버
mp4 - MSE, MP4 스트림 및 MP4 스냅샷 서버
hls - HLS TS 또는 fMP4 스트림 서버
mjpeg - MJPEG 서버
ffmpeg - FFmpeg 통합
ngrok - ngrok 통합(사설 네트워크에 대한 외부 액세스)
hass - 홈어시스턴트 통합
로그 - 로그 구성
go2rtc는 다양한 스트림 소스 유형을 지원합니다. 모든 유형의 하나 또는 여러 개의 링크를 스트림 소스로 구성할 수 있습니다.
사용 가능한 소스 유형:
rtsp - 양방향 오디오를 지원하는 RTSP
및 RTSPS
카메라
rtmp - RTMP
스트림
http - HTTP-FLV
, MPEG-TS
, JPEG
(스냅샷), MJPEG
스트림
onvif - ONVIF
프로토콜을 사용하여 카메라 RTSP
링크 및 스냅샷 링크 가져오기
ffmpeg - FFmpeg 통합( HLS
, files
및 기타 여러 가지)
ffmpeg:device - 로컬 USB 카메라 또는 웹캠
exec - 외부 앱 출력에서 미디어 가져오기
echo - Bash 또는 Python에서 스트림 링크 가져오기
expr - 내장된 표현 언어를 통해 스트림 링크를 얻습니다.
homekit - HomeKit 카메라에서 스트리밍
버블 - ESeeCloud/dvr163 NVR에서 스트리밍
dvrip - DVR-IP NVR에서 스트리밍
tapo - 양방향 오디오를 지원하는 TP-Link Tapo 카메라
kasa-TP-Link Kasa 카메라
고프로 - GoPro 카메라
ivideon - Ivideon 서비스의 공용 카메라
hass - 홈어시스턴트 통합
isapi - Hikvision(ISAPI) 카메라용 양방향 오디오
roborock - 카메라가 장착된 Roborock 진공청소기
webrtc - WebRTC/WHEP 소스
webtorrent - 다른 go2rtc의 WebTorrent 소스
수신 소스에 대해 자세히 알아보기
지원되는 소스:
ONVIF Profile T를 갖춘 RTSP 카메라(후면 채널 연결)
DVRIP 카메라
TP-Link Tapo 카메라
하이크비전 ISAPI 카메라
Roborock은 카메라로 모델을 진공청소기로 청소합니다.
서버의 Exec 오디오
모든 브라우저를 IP 카메라로 사용
WebRTC 기술이 적용된 브라우저에서는 양방향 오디오를 사용할 수 있습니다. 브라우저는 HTTPS 사이트에 대해서만 마이크에 대한 액세스 권한을 부여합니다(자세히 알아보기).
go2rtc는 또한 이 카메라에서 오디오 파일 재생 및 라이브 스트림을 지원합니다.
스트림: sonoff_camera: rtsp://rtsp:[email protected]/av_stream/ch0 dahua_카메라: - rtsp://admin:[email protected]/cam/realmonitor?channel=1&subtype=0&unicast=true&proto=Onvif- rtsp://admin:[email protected]/cam/realmonitor?channel=1&subtype=1 amcrest_doorbell: - rtsp://username:[email protected]:554/cam/realmonitor?channel=1&subtype=0#backchannel=0 unifi_camera: rtspx://192.168.1.123:7441/fD6ouM72bWoFijxK glichy_camera: ffmpeg:rtsp://username:[email protected]/live/ch00_1
권장 사항
Amcrest Doorbell 사용자는 양방향 오디오를 비활성화할 수 있습니다. 활성 스트림에서는 통화 버튼이 작동하지 않기 때문입니다. YAML 구성 파일의 RTSP 링크 끝에 #backchannel=0
을 추가해야 합니다.
Dahua Doorbell 사용자는 백채널 오디오 코덱을 변경할 수 있습니다.
Reolink 사용자는 RTSP 프로토콜을 전혀 사용하지 않기를 원할 수 있습니다. 일부 카메라 모델에는 사용할 수 없는 스트림 구현이 매우 끔찍합니다.
Ubiquiti UniFi 사용자는 HTTPS 확인을 비활성화할 수 있습니다. rtspx://
대신 rtsps://
접두사를 사용하세요. 그리고 ?enableSrtp
접미사를 사용하지 마세요.
TP-Link Tapo 사용자는 go2rtc가 로그인과 비밀번호 없이 로그인을 지원하기 때문에 로그인과 비밀번호를 건너뛸 수 있습니다.
카메라에 두 개의 RTSP 링크가 있는 경우 둘 다 소스로 추가할 수 있습니다. 이는 스트림에 서로 다른 코덱이 있을 때 유용합니다(예: 메인 스트림의 AAC 오디오 및 두 번째 스트림의 PCMU/PCMA 오디오).
카메라의 스트림에 결함이 있는 경우 ffmpeg 소스를 사용해 보세요. 트랜스코딩을 사용하지 않으면 CPU 로드가 추가되지 않습니다.
카메라의 스트림에 결함이 있는 경우 ffmpeg 소스로 트랜스코딩을 사용해 보세요.
기타 옵션
형식: rtsp...#{param1}#{param2}#{param3}
사용자 지정 시간 제한 추가 #timeout=30
(초)
오디오 무시 - #media=video
또는 비디오 무시 - #media=audio
양방향 오디오 API #backchannel=0
무시 - 일부 결함이 있는 카메라에 중요
WebSocket 전송 #transport=ws...
사용
WebSocket을 통한 RTSP
스트림: # 인증이 있는 WebSocket, RTSP - 없음 축-rtsp-ws: rtsp://192.168.1.123:4567/axis-media/media.amp?overview=0&camera=1&solution=1280x720&videoframeskipmode=empty&Axis-Orig-Sw=true#transport=ws://user:[email protected]:4567/ rtsp-over-websocket # 승인되지 않은 WebSocket, RTSP - 포함 dahua-rtsp-ws: rtsp://user:[email protected]/cam/realmonitor?channel=1&subtype=1&proto=Private3#transport=ws://192.168.1.123/rtspoverwebsocket
nginx-rtmp-module을 사용하는 Nginx와 같은 RTMP 서버에서 스트림을 가져올 수 있습니다.
스트림: rtmp_stream: rtmp://192.168.1.123/live/camera1
지원 콘텐츠 유형:
HTTP-FLV ( video/x-flv
) - RTMP와 동일하지만 HTTP를 통해
HTTP-JPEG ( image/jpeg
) - 카메라 스냅샷 링크, go2rtc를 통해 MJPEG 스트림으로 변환 가능
HTTP-MJPEG ( multipart/x
) - HTTP를 통한 간단한 MJPEG 스트림
MPEG-TS ( video/mpeg
) - 레거시 스트리밍 형식
소스는 MJPEG , H.264/H.265 비트스트림 , MPEG-TS 등 다양한 형식을 자동 감지하여 HTTP 및 TCP 스트림도 지원합니다.
streams: # 비디오/x-flv 형식의 [HTTP-FLV] 스트림 http_flv: http://192.168.1.123:20880/api/camera/stream/780900131155/657617 # Dahua 카메라의 [JPEG] 스냅샷은 MJPEG 스트림으로 변환됩니다. dahua_snap: http://admin:[email protected]/cgi-bin/snapshot.cgi?channel=1 # [MJPEG] 스트림은 수정 없이 프록시됩니다. http_mjpeg: https://mjpeg.sanford.io/count.mjpeg # [MJPEG 또는 H.264/H.265 비트스트림 또는 MPEG-TS] tcp_magic: tcp://192.168.1.123:12345 # 사용자 정의 헤더 추가 custom_header: "https://mjpeg.sanford.io/count.mjpeg#header=승인: Bearer XXX"
추신. Dahua 카메라에는 버그가 있습니다. RTSP 두 번째 스트림에 MJPEG 코덱을 선택하면 스냅샷이 작동하지 않습니다.
v1.5.0의 새로운 기능
카메라의 RTSP 및 스냅샷 링크를 이미 알고 있는 경우 소스는 그다지 유용하지 않습니다. 하지만 그렇지 않으면 유용할 수 있습니다.
WebUI > 웹페이지 지원 ONVIF 자동 검색을 추가합니다 . 서버는 카메라와 동일한 서브넷에 있어야 합니다. docker를 사용하는 경우 "네트워크 호스트"를 사용해야 합니다.
스트림: dahua1: onvif://admin:[email protected] reolink1: onvif://admin:[email protected]:8000 tapo1: onvif://admin:[email protected]:2020
FFmpeg를 통해 모든 스트림, 파일 또는 장치를 가져와 go2rtc로 푸시할 수 있습니다. 누군가 스트림 시청을 시작하면 앱은 적절한 인수를 사용하여 자동으로 FFmpeg를 시작합니다.
Docker 및 Hass 애드온 사용자를 위해 사전 설치된 FFmpeg
Hass Add-on 사용자는 /media 폴더의 파일을 대상으로 지정할 수 있습니다.
형식 ffmpeg:{input}#{param1}#{param2}#{param3}
. 예:
streams: # [FILE] 모든 트랙은 코덱 트랜스코딩 없이 복사됩니다. 파일1: ffmpeg:/media/BigBuckBunny.mp4 # [FILE] 비디오는 H264로 트랜스코딩되고 오디오는 건너뜁니다. 파일2: ffmpeg:/media/BigBuckBunny.mp4#video=h264 # [FILE] 비디오가 복사되고 오디오는 pcmu로 트랜스코딩됩니다. 파일3: ffmpeg:/media/BigBuckBunny.mp4#video=copy#audio=pcmu # [HLS] 비디오가 복사되고 오디오는 건너뜁니다. hls: ffmpeg:https://devstreaming-cdn.apple.com/videos/streaming/examples/bipbop_16x9/gear5/prog_index.m3u8#video=copy # [MJPEG] 비디오는 H264로 트랜스코딩됩니다. mjpeg: ffmpeg:http://185.97.122.128/cgi-bin/faststream.jpg#video=h264 # 회전이 포함된 [RTSP] 비디오는 트랜스코딩되어야 하므로 H264를 선택합니다. 회전: ffmpeg:rtsp://rtsp:[email protected]/av_stream/ch0#video=h264#rotate=90
모든 트랜스코딩 형식에는 h264
, h265
, opus
, pcmu
, pcmu/16000
, pcmu/48000
, pcma
, pcma/16000
, pcma/48000
, aac
aac/16000
과 같은 템플릿이 내장되어 있습니다.
하지만 YAML 구성을 통해 이를 재정의할 수 있습니다. 구성에 고유한 형식을 추가하고 소스 매개변수와 함께 사용할 수도 있습니다.
ffmpeg: bin: ffmpeg # ffmpeg 바이너리 경로 h264: "-codec:v libx264 -g:v 30 -preset:v 초고속 -tune:v zerolatency -profile:v main -level:v 4.1" mycodec: "-ffmpeg에서 지원하는 모든 인수..." myinput: "-fflags nobuffer -flags low_delay -timeout 5000000 -i {input}" myraw: "-ss 00:00:20"
go2rtc 스트림 이름을 ffmpeg 입력으로 사용할 수 있습니다(예: ffmpeg:camera1#video=h264
).
video
및 audio
매개변수를 여러 번 사용할 수 있습니다(예: #video=copy#audio=copy#audio=pcmu
)
트랜스코딩에 중요한 90
, 180
, 270
또는 -90
값의 rotate
매개변수를 사용할 수 있습니다(예: #video=h264#rotate=90
).
트랜스코딩에 중요한 width
및/또는 height
매개변수를 사용할 수 있습니다(예: #video=h264#width=1280
).
drawtext
사용하여 타임스탬프를 추가할 수 있습니다(예: drawtext=x=2:y=2:fontsize=12:fontcolor=white:box=1:boxcolor=black
).
하드웨어 가속을 사용하더라도 서버의 CPU가 크게 증가합니다.
추가 FFmpeg 인수에 raw
매개변수를 사용할 수 있습니다(예: #raw=-vf transpose=1
).
input
매개변수를 사용하여 기본 입력 템플릿을 재정의할 수 있습니다(예: #input=rtsp/udp
RTSP 전송을 TCP에서 UDP+TCP로 변경합니다).
원시 입력 값을 사용할 수 있습니다(예: #input=-timeout 5000000 -i {input}
).
자신만의 입력 템플릿을 추가할 수 있습니다.
하드웨어 가속에 대해 자세히 알아보세요.
추신. WebUI 추가 페이지에서 사용 가능한 하드웨어를 확인하는 것이 좋습니다.
USB 카메라나 웹캠의 비디오를 RTSP 또는 WebRTC 스트림으로 얻을 수 있습니다. 이는 FFmpeg 통합의 일부입니다.
웹 인터페이스에서 사용 가능한 장치 확인
video_size
및 framerate
카메라에서 지원되어야 합니다!
Linux의 경우 현재 비디오만 지원됩니다.
macOS의 경우 Facetime 카메라 또는 전체 데스크톱을 스트리밍할 수 있습니다!
macOS의 경우 올바른 프레임 속도를 설정하는 것이 중요합니다.
형식: ffmpeg:device?{input-params}#{param1}#{param2}#{param3}
스트림: linux_usbcam: ffmpeg:device?video=0&video_size=1280x720#video=h264 windows_webcam: ffmpeg:device?video=0#video=h264 macos_facetime: ffmpeg:device?video=0&audio=1&video_size=1280x720&framerate=30#video=h264#audio=pcma
추신. WebUI 추가 페이지에서 사용 가능한 디바이스를 확인하는 것을 권장합니다.
Exec 소스는 모든 외부 응용 프로그램을 실행하고 해당 응용 프로그램에서 데이터를 기대할 수 있습니다. 파이프 ( v1.5.0부터 )와 RTSP 의 두 가지 전송이 지원됩니다.
RTSP 전송을 사용하려면 명령의 어느 위치에나 {output}
인수가 포함되어야 합니다. 실행 시에는 RTSP 서버의 로컬 주소로 대체됩니다.
파이프는 앱 표준 출력에서 MJPEG , H.264/H.265 비트스트림 , MPEG-TS 등 다양한 형식의 데이터를 읽습니다. 또한 파이프는 PCMA 및 PCM/48000의 두 가지 형식으로 앱 표준 입력에 데이터를 쓸 수 있습니다.
소스는 다음과 함께 사용할 수 있습니다.
FFmpeg - go2rtc ffmpeg 소스는 exec 소스에 대한 바로가기입니다.
FFplay - 서버에서 오디오 재생
G스트리머
라즈베리 파이 카메라
자신의 소프트웨어
파이프 명령은 매개변수를 지원합니다(형식: exec:{command}#{param1}#{param2}
):
killsignal
- 프로세스를 중지하기 위해 전송되는 신호(숫자 형식)
killtimeout
- sigkill로 강제 종료되는 시간(초)
backchannel
- 양방향 오디오를 위해 백채널을 활성화합니다.
스트림: 스트림: exec:ffmpeg -re -i /media/BigBuckBunny.mp4 -c copy -rtsp_transport tcp -f rtsp {출력} picam_h264: exec:libcamera-vid -t 0 --inline -o - picam_mjpeg: exec:libcamera-vid -t 0 --codec mjpeg -o - pi5cam_h264: exec:libcamera-vid -t 0 --libav-format h264 -o - 캐논: exec:gphoto2 --capture-movie --stdout#killsignal=2#killtimeout=5 play_pcma: exec:ffplay -fflags nobuffer -f alaw -ar 8000 -i -#backchannel=1 play_pcm48k: exec:ffplay -fflags nobuffer -f s16be -ar 48000 -i -#backchannel=1
일부 소스에는 동적 링크가 있을 수 있습니다. 그리고 bash나 Python 스크립트를 사용하여 가져와야 합니다. 스크립트는 소스에 대한 링크를 표시해야 합니다. RTSP, FFmpeg 또는 지원되는 소스.
Docker 및 Hass 추가 기능 사용자는 python3
, curl
, jq
사전 설치했습니다.
위키에서 예제를 확인하세요.
스트림: apple_hls: echo:python3 hls.py https://developer.apple.com/streaming/examples/basic-stream-osx-ios5.html
v1.8.2의 새로운 기능
echo
소스와 비슷하지만 내장된 expr 표현 언어를 사용합니다(자세히 읽어보세요).
중요한:
Apple 장치(iPhone, iPad 등) 없이도 HomeKit 카메라를 사용할 수 있습니다. 이는 또 다른 프로토콜일 뿐입니다.
HomeKit 장치는 하나의 생태계에만 페어링할 수 있습니다. 따라서 iPhone(Apple Home)에 페어링한 경우 Home Assistant 또는 go2rtc와 페어링할 수 없습니다. 또는 go2rtc에 페어링한 경우 - iPhone과 페어링할 수 없습니다.
HomeKit 장치는 장치와 go2rtc 간에 mDNS가 작동하는 동일한 네트워크에 있어야 합니다.
go2rtc는 Home Assistant에서 페어링된 HomeKit 장치를 가져오는 것을 지원합니다. 따라서 Hass 및 go2rtc와 함께 HomeKit 카메라를 동시에 사용할 수 있습니다. Hass를 사용하는 경우 장치를 페어링하는 것이 좋습니다. 그러면 더 많은 옵션이 제공됩니다.
HomeKit 페이지에서 장치를 go2rtc와 페어링할 수 있습니다. 장치가 표시되지 않으면 페이지를 새로고침하세요. 또한 HomeKit 장치를 재부팅해 보십시오(전원 끄기). 그래도 표시되지 않으면 mDNS에 문제가 있는 것입니다.
장치가 보이지만 페어링 버튼이 없다면 해당 장치는 일부 생태계(Apple Home, Home Assistant, HomeBridge 등)에 페어링된 것입니다. 해당 에코시스템에서 장치를 삭제해야 페어링이 가능해집니다. 장치 페어링을 해제할 수 없는 경우 장치를 재설정해야 합니다.
중요한:
HomeKit 오디오는 매우 비표준 매개변수 및 사양 위반이 있는 매우 비표준 AAC-ELD 코덱을 사용합니다.
오디오는 VLC
및 다른 플레이어에서 재생할 수 없습니다.
MSE, WebRTC 등과 함께 사용하려면 오디오를 트랜스코딩해야 합니다.
WebRTC, MSE, MP4, RTSP와 함께 HomeKit 카메라를 사용하기 위한 권장 설정:
streams: aqara_g3: - hass:Camera-Hub-G3-AB12 - ffmpeg:aqara_g3#audio=aac#audio=opus
모든 플레이어에 대한 "일반" 오디오가 포함된 RTSP 링크: rtsp://192.168.1.123:8554/aqara_g3?video&audio=aac
이 소스는 현재 개발 중입니다! Aqara Camera Hub G3(EU 및 CN 버전 모두)에서만 테스트되었습니다.
v1.6.1의 새로운 기능
다른 이름: ESeeCloud, dvr163.
username
, password
, port
, ch
및 stream
이 기본값인 경우 건너뛸 수 있습니다.
다양한 채널 및 스트림에 대해 별도의 스트림 설정
스트림: 카메라1: bubble://username:[email protected]:34567/bubble/live?ch=0&stream=0
v1.2.0의 새로운 기능
다른 이름: DVR-IP, NetSurveillance, Sofia 프로토콜(NETsurveillance ActiveX 플러그인 XMeye SDK).
username
, password
, port
, channel
및 subtype
이 기본값인 경우 건너뛸 수 있습니다.
서로 다른 채널에 대해 별도의 스트림 설정
Main 스트림에는 subtype=0
사용하고 Extra1 스트림에는 subtype=1
사용합니다.
TCP 프로토콜만 지원됩니다.
스트림: only_stream: dvrip://username:[email protected]:34567?channel=0&subtype=0 only_tts: dvrip://username:[email protected]:34567?backchannel=1 양방향 오디오: - dvrip://사용자 이름:[email protected]:34567?channel=0&subtype=0- dvrip://사용자 이름:[email protected]:34567?backchannel=1
v1.2.0의 새로운 기능
양방향 오디오를 지원하는 TP-Link Tapo 독점 카메라 프로토콜입니다.
스트림 품질은 RTSP 프로토콜과 동일합니다.
클라우드 비밀번호를 사용하세요. 이것은 RTSP 비밀번호가 아닙니다! 로그인을 추가할 필요가 없습니다!
admin
사용자 이름으로 클라우드 비밀번호에서 대문자 MD5 해시를 사용할 수도 있습니다.
일부 새로운 카메라 펌웨어에는 MD5 대신 SHA256이 필요합니다.
스트림: # 사용자 이름이 없는 클라우드 비밀번호 카메라1: tapo://[email protected] # 관리자 사용자 이름 및 대문자 MD5 클라우드 비밀번호 해시 카메라2: tapo://admin:[email protected] # 관리자 사용자 이름 및 대문자 SHA256 클라우드 비밀번호 해시 카메라3: tapo://admin:[email protected]
echo -n "클라우드 비밀번호" | MD5 | awk '{print toupper($0)}'echo -n "클라우드 비밀번호" | shasum -a 256 | awk '{인쇄 toupper($0)}'
v1.7.0의 새로운 기능
TP-Link Kasa 비표준 프로토콜 추가 정보.
username
- urlsafe 이메일, [email protected]
-> alex%40gmail.com
password
- base64password, secret1
-> c2VjcmV0MQ==
스트림: kc401: kasa://username:[email protected]:19443/https/stream/mixed
테스트됨: KD110, KC200, KC401, KC420WS, EC71.
v1.8.3의 새로운 기능
USB 또는 Wi-Fi를 통해 Linux, Mac, Windows에 연결된 GoPro 카메라에서 스트리밍을 지원합니다. 자세히 읽어보세요.
Ivideon 서비스에서 공용 카메라를 지원합니다.
스트림: quailcam: ivideon:100-tu5dkUPct39cTp9oNEN2B6/0
Home Assistant 구성 파일에서 카메라 링크 가져오기를 지원합니다.
일반 카메라, GUI를 통한 설정
홈킷 카메라
온비프
카메라가 장착된 Roborock 진공청소기
hass: config: "/config" # Hass 애드온을 사용하는 경우 이 설정을 건너뜁니다. userstreams: generic_camera: hass:Camera1 # 설정 > 통합 > 통합 이름 aqara_g3: hass:카메라-허브-G3-AB12
WebRTC 카메라 ( v1.6.0부터 )
WebRTC 형식의 모든 카메라가 지원됩니다. 하지만 현재 홈어시스턴트는 이 형식의 일부 Nest 카메라만 지원합니다.
중요한. Nest API를 사용하면 5분 동안만 스트림 링크를 얻을 수 있습니다. Frigate와 함께 사용하지 마십시오! 스트림이 만료되면 Frigate는 몇 초 내에 시스템에서 사용 가능한 모든 RAM을 소모합니다. Nest 소스를 사용하는 것이 좋습니다. 스트림 확장을 지원합니다.
스트림: # 홈어시스턴트 감독 링크 hass-webrtc1: hass://supervisor?entity_id=camera.nest_doorbell # 장기 액세스 토큰을 사용하여 외부 Hass에 연결 hass-webrtc2: hass://192.168.1.123:8123?entity_id=camera.nest_doorbell&token=eyXYZ...
RTSP 카메라
기본적으로 Home Assistant API는 카메라 스트림에 대한 동적 RTSP 링크를 얻는 것을 허용하지 않습니다. 따라서 이 방법을 사용하면 Tuya와 같은 더 많은 카메라와 다른 카메라도 가져올 수 있습니다.
v1.3.0의 새로운 기능
이 소스 유형은 Hikvision ISAPI 프로토콜에 대한 백채널 오디오만 지원합니다. 따라서 RTSP 프로토콜 외에 두 번째 소스로 사용해야 합니다.
스트림: hikvision1: -rtsp://admin:[email protected]:554/Streaming/Channels/101-isapi://admin:[email protected]:80/
v1.6.0의 새로운 기능
현재는 WebRTC 카메라만 지원됩니다.
단순화를 위해 Nest/WebRTC 카메라를 홈어시스턴트에 연결하는 것이 좋습니다. 하지만 어떻게든 아래 매개변수를 얻을 수 있다면 Nest/WebRTC 소스는 Hass 없이 작동할 것입니다.
스트림: Nest-doorbell: Nest:?client_id=***&client_secret=***&refresh_token=***&project_id=***&device_id=***
v1.3.0의 새로운 기능
이 소스 유형은 카메라가 포함된 Roborock 진공청소기를 지원합니다. 알려진 작업 모델:
Roborock S6 MaxV - 비디오 전용(진공청소기에는 마이크가 없음)
Roborock S7 MaxV - 비디오 및 양방향 오디오
Roborock Qrevo MaxV - 비디오 및 양방향 오디오
소스 지원은 Home Assistant 사용자 정의 통합 또는 핵심 통합에서 Roborock 자격 증명을 로드합니다. 그렇지 않은 경우 Roborock 계정에 로그인해야 합니다(MiHome 계정은 지원되지 않음). go2rtc WebUI > 웹페이지 추가로 이동하세요. 진공청소기에 대한 roborock://...
소스를 복사하여 go2rtc.yaml
구성에 붙여넣습니다.
진공청소기용 그래픽 핀이 있는 경우 이를 roborock-link 끝에 숫자 핀(라인: 123, 456, 789)으로 추가하세요.
v1.3.0의 새로운 기능
이 소스 유형은 네 가지 연결 형식을 지원합니다.
채찍
WebRTC/WHEP - WebRTC 비디오/오디오 뷰어용 WebRTC/WISH 표준으로 대체되었습니다. 그러나 일부 타사 소프트웨어에서는 이미 지원될 수도 있습니다. go2rtc에서 지원됩니다.
go2rtc
이 형식은 go2rtc에서만 지원됩니다. WHEP와 달리 비동기 WebRTC 연결과 양방향 오디오를 지원합니다.
openipc ( v1.7.0부터 )
OpenIPC 카메라 연결을 지원합니다.
wyze ( v1.6.1부터 )
WebRTC 프로토콜을 사용하여 Wyze 카메라 연결을 지원합니다. docker-wyze-bridge 프로젝트를 사용하여 연결 자격 증명을 얻을 수 있습니다.
키네시스 ( v1.6.1부터 )
WebRTC 프로토콜을 사용하여 Amazon Kinesis Video Streams를 지원합니다. 쿼리 매개변수, client_id
및 ice_servers
목록의 모든 자격 증명을 JSON 형식으로 사용하여 신호 WebSocket URL을 지정해야 합니다.
스트림: webrtc-whep: webrtc:http://192.168.1.123:1984/api/webrtc?src=camera1 webrtc-go2rtc: webrtc:ws://192.168.1.123:1984/api/ws?src=camera1 webrtc-openipc: webrtc:ws://192.168.1.123/webrtc_ws#format=openipc#ice_servers=[{"urls":"stun:stun.kinesisvideo.eu-north-1.amazonaws.com:443"}] webrtc-wyze: webrtc:http://192.168.1.123:5000/signaling/camera1?kvs#format=wyze webrtc-kinesis: webrtc:wss://...amazonaws.com/?...#format=kinesis#client_id=...#ice_servers=[{...},{...}]
추신. kinesis
소스의 경우 echo를 사용하면 bash
/ python
또는 기타 스크립트 언어를 사용하여 연결 매개변수를 가져올 수 있습니다.
v1.3.0의 새로운 기능
이 소스는 WebTorrent 프로토콜을 통해 다른 go2rtc에서 스트림을 가져올 수 있습니다.
스트림: webtorrent1: webtorrent:?share=huofssuxaty00izc&pwd=k3l2j9djeg8v8r7e
기본적으로 go2rtc는 클라이언트가 요청할 때 소스에 대한 연결을 설정합니다. Go2rtc는 클라이언트가 남아 있지 않으면 소스에 대한 연결을 끊습니다.
Go2rtc는 RTSP, RTMP, HTTP 및 WebRTC/WHIP 형식의 수신 소스도 허용합니다.
Go2rtc는 클라이언트가 없는 경우 해당 소스를 중지하지 않습니다.
기존 스트림에만 데이터를 푸시할 수 있습니다(구성에서 빈 소스로 스트림 생성).
여러 수신 소스를 동일한 스트림으로 푸시할 수 있습니다.
비어 있지 않은 스트림에 데이터를 푸시할 수 있으므로 내부에 추가 코덱이 포함됩니다.
예
모든 코덱이 포함된 RTSP
ffmpeg -re -i BigBuckBunny.mp4 -c 복사 -rtsp_transport tcp -f rtsp rtsp://localhost:8554/camera1
MJPEG 코덱이 포함된 HTTP-MJPEG
ffmpeg -re -i BigBuckBunny.mp4 -c mjpeg -f mpjpeg http://localhost:1984/api/stream.mjpeg?dst=camera1
H264, AAC 코덱이 포함된 HTTP-FLV
ffmpeg -re -i BigBuckBunny.mp4 -c 복사 -f flv http://localhost:1984/api/stream.flv?dst=camera1
H264 코덱이 포함된 MPEG-TS
ffmpeg -re -i BigBuckBunny.mp4 -c 복사 -f mpegts http://localhost:1984/api/stream.ts?dst=camera1
v1.3.0의 새로운 기능
모든 PC 또는 모바일의 브라우저를 비디오 및 양방향 오디오를 지원하는 IP 카메라로 전환할 수 있습니다. 또는 PC 화면을 방송할 수도 있습니다.
go2rtc.yaml
에 빈 스트림을 생성합니다.
go2rtc WebUI로 이동
스트리밍할 links
페이지 열기
camera+microphone
또는 display+speaker
옵션을 선택하세요.
webrtc
로컬 페이지를 열거나(go2rtc는 HTTPS를 통해 작동해야 합니다! ) WebTorrent 기술을 통해 share link
(기본적으로 HTTPS를 통해 작동).
v1.3.0의 새로운 기능
WHIP 프로토콜을 지원하는 OBS Studio 또는 기타 방송 소프트웨어를 사용할 수 있습니다. 이 표준은 아직 승인되지 않았습니다. 하지만 OBS Studio 개발 버전을 다운로드할 수 있습니다.
설정 > 스트림 > 서비스: WHIP > http://192.168.1.123:1984/api/webrtc?dst=camera1
v1.3.0의 새로운 기능
go2rtc 지원은 양방향 오디오를 지원하는 카메라(RTSP/ONVIF 카메라, TP-Link Tapo, Hikvision ISAPI, Roborock 진공청소기, 모든 브라우저)에서 오디오 파일(예: 음악 또는 TTS) 및 라이브 스트림(예: 라디오)을 재생합니다.
API 예:
POST http://localhost:1984/api/streams?dst=camera1&src=ffmpeg:http://example.com/song.mp3#audio=pcma#input=file
FFmpeg에서 지원하는 로컬 파일, 웹 파일, 라이브 스트림 또는 모든 형식을 스트리밍할 수 있습니다.
오디오를 카메라가 지원하는 코덱으로 트랜스코딩하려면 ffmpeg 소스를 사용해야 합니다.
스트림이 활성화되면 go2rtc WebUI 정보 페이지에서 카메라 코덱을 확인할 수 있습니다.
일부 카메라는 낮은 품질의 PCMA/8000
코덱(예: Tapo)만 지원합니다.
카메라가 지원하는 경우 더 높은 품질 형식을 선택하는 것이 좋습니다(예: 일부 Dahua 카메라의 경우 PCMA/48000
)
http-link를 통해 파일을 재생하는 경우 트랜스코딩을 위해 #input=file
매개변수를 추가해야 파일이 실시간으로 트랜스코딩되어 재생됩니다.
라이브 스트림을 재생하는 경우 #input
매개변수는 이미 실시간이므로 건너뛰어야 합니다.
빈 src
매개변수로 API를 호출하여 활성 재생을 중지할 수 있습니다.
스트리밍하는 동안 go2rtc WebUI 정보 페이지에 활성 생산자 1명과 활성 소비자 1명이 표시됩니다.
v1.8.0의 새로운 기능
RTMP/RTMPS를 통해 모든 스트림을 스트리밍 서비스(YouTube, Telegram 등)에 게시할 수 있습니다. 중요한:
지원되는 코덱: 비디오용 H264, 오디오용 AAC
YouTube에는 AAC 오디오가 필요합니다. 오디오가 없는 동영상은 작동하지 않습니다.
이 작업을 수신하는 RTMP 모듈을 활성화할 필요는 없습니다.
API를 사용할 수 있습니다.
POST http://localhost:1984/api/streams?src=camera1&dst=rtmps://...
또는 구성 파일:
게시: # "video_audio_transcode" 스트림을 텔레그램에 게시합니다. video_audio_transcode: -rtmps://xxx-x.rtmp.t.me/s/xxxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxx # 텔레그램과 유튜브에 스트림 "audio_transcode" 게시 audio_transcode: - rtmps://xxx-x.rtmp.t.me/s/xxxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxx- rtmp://xxx.rtmp.youtube.com/live2/xxxx-xxxx-xxxx-xxxx-xxxxstreams: video_audio_transcode: - ffmpeg:rtsp://user:[email protected]/stream1#video=h264#hardware#audio=aac audio_transcode: - ffmpeg:rtsp://user:[email protected]/stream1#video=copy#audio=aac
텔레그램 데스크탑 앱 > 공개 또는 비공개 채널이나 그룹(관리자가 있는 곳) > 라이브 스트림 > 시작... > 스트리밍 시작.
YouTube > 만들기 > 라이브 시작 > 스트림 지연 시간: 초저 지연 시간 > 복사: 스트림 URL + 스트림 키.
HTTP API는 애플리케이션과 상호작용하는 주요 부분입니다. 기본 주소: http://localhost:1984/
.
중요한! go2rtc는 HTTP 인증 없이 localhost 및 unix 소켓의 요청을 전달합니다. 구성한 경우에도 마찬가지입니다! API에 대한 보안 외부 액세스를 설정하는 것은 귀하의 책임입니다. 올바르게 구성하지 않으면 공격자가 카메라는 물론 서버에도 액세스할 수 있습니다.
API 설명.
모듈 구성
listen: ""
사용하여 HTTP API를 비활성화하고 예를 들어 RTSP 클라이언트/서버 프로토콜만 사용할 수 있습니다.
listen: "127.0.0.1:1984"
설정을 사용하여 localhost에서만 HTTP API를 활성화할 수 있습니다.
기본 앱 웹 서버 하위 URL에서 API base_path
및 호스트 go2rtc를 변경할 수 있습니다.
루트 경로에 호스팅된 static_dir
의 모든 파일: /
원시 TLS 인증서/키 콘텐츠 또는 파일 경로를 사용할 수 있습니다.
api: Listen: ":1984" # 기본 ":1984", HTTP API 포트("" - 비활성화됨) 사용자 이름: "admin" # 기본값 "", WebUI에 대한 기본 인증 비밀번호: "pass" # 기본값 "", WebUI에 대한 기본 인증 base_path: "/rtc" # 기본 "", 하위 URL 제공을 위한 API 접두사(/api => /rtc/api) static_dir: "www" # 기본 "", 정적 파일용 폴더(사용자 정의 웹 인터페이스) Origin: "*" # 기본 "", CORS 요청 허용(*만 지원됨) tls_listen: ":443" # 기본 "", HTTPS 서버 활성화 tls_cert: | # 기본 "", HTTPS용 PEM 인코딩 풀체인 인증서 -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE------- tls_key: | # 기본 "", HTTPS용 PEM 인코딩 개인 키 -----BEGIN PRIVATE KEY----- ... -----END PRIVATE KEY----- unix_listen: "/tmp/go2rtc.sock " # 기본 "", API용 유닉스 소켓 리스너
추신:
WebSocket을 통한 MJPEG는 Chrome 버그로 인해 기본 MJPEG보다 더 잘 재생됩니다.
WebSocket을 통한 MP4는 MSE 및 기본 MP4를 지원하지 않기 때문에 Apple iOS용으로만 생성되었습니다.
RTSP-stream: rtsp://192.168.1.123:8554/{stream_name}
으로 모든 스트림을 얻을 수 있습니다.
RTSP 스트림에 대해 외부 비밀번호 보호를 활성화할 수 있습니다. localhost 호출에 대해서는 비밀번호 보호가 항상 비활성화되어 있습니다(예: 동일한 서버의 FFmpeg 또는 Hass).
rtsp: 수신: ":8554" # RTSP 서버 TCP 포트, 기본값 - 8554 사용자 이름: "admin" # 선택 사항, 기본값 - 비활성화됨 비밀번호: "pass" # 선택 사항, 기본값 - 비활성화됨 default_query: "비디오 및 오디오" <sp