終極相機串流應用程序,支援 RTSP、WebRTC、HomeKit、FFmpeg、RTMP 等。
適用於所有作業系統(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 對不支援的編解碼器進行動態轉碼
在某些有揚聲器的攝影機上播放音訊檔案和直播
多源2路編解碼器協商
將不同來源的曲目混合到單一串流中
自動匹配客戶端支援的編解碼器
某些攝影機的 2 路音頻
透過 ngrok 從專用網路串流傳輸
可以整合到任何智慧家庭平台或用作獨立應用程序
靈感來自:
來自 @deepch 的一系列串流媒體項目
webrtc go 庫和整個 @pion 團隊
來自 @aler9 的 rtsp-simple-server 想法
GStreamer框架管道思想
MediaSoup框架路由思想
來自 @brutella 的 HomeKit 配件協議
該專案徽標的創建者@v_novoseltsev
快速啟動
go2rtc:二進位
go2rtc:Docker
go2rtc:家庭助理插件
go2rtc:家庭助理集成
go2rtc:開發版本
配置
兩路音訊
來源:RTSP
來源:RTMP
來源:HTTP
來源:ONVIF
來源:FFmpeg
來源:FFmpeg 設備
資料來源:執行官
來源:迴聲
來源:Expr
來源:HomeKit
來源:泡泡
來源:DVRIP
來源:塔波
來源:卡薩
來源:GoPro
資料來源:艾視頻
資料來源:哈斯
資料來源:ISAPI
來源:Nest
來源:石頭科技
來源:WebRTC
來源:WebTorrent
傳入來源
串流至相機
發佈串流
模組:流
模組:API
模組:RTSP
模組:RTMP
模組:WebRTC
模組:HomeKit
模組:WebTorrent
模組:ngrok
模組:哈斯
模組:MP4
模組:HLS
模組:MJPEG
模組:日誌
安全
編解碼器過濾器
編解碼器的瘋狂
編解碼器協商
使用 go2rtc 的項目
拍照體驗
尖端
常問問題
下載二進位檔案或使用 Docker 或 Home Assistant 插件或集成
開啟網頁介面: http://localhost:1984/
可選:
將您的流新增至設定檔中
設定對 webrtc 的外部訪問
開發商:
編寫您自己的網頁介面
將 Web API 整合到您的智慧家庭平台中
從最新版本下載適用於您的作業系統的二進位檔案:
go2rtc_win64.zip
- Windows 10+ 64 位
go2rtc_win32.zip
- Windows 7+ 32 位
go2rtc_win_arm64.zip
- Windows ARM 64 位
go2rtc_linux_amd64
- Linux 64 位
go2rtc_linux_i386
- Linux 32 位
go2rtc_linux_arm64
- Linux ARM 64 位元(例如 Raspberry 64 位元作業系統)
go2rtc_linux_arm
- Linux ARM 32 位元(例如 Raspberry 32 位元作業系統)
go2rtc_linux_armv6
- Linux ARMv6(適用於舊版 Raspberry 1 和 Zero)
go2rtc_linux_mipsel
- Linux MIPS(例如小米閘道 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
。容器提供與 Home Assistant 附加元件相同的功能,但設計為獨立於 Home Assistant 運作。它預先安裝了 FFmpeg、ngrok 和 Python。
安裝附加元件:
設定 > 附加元件 > 加上 > 儲存庫 > 新增https://github.com/AlexxIT/hassio-addons
go2rtc > 安裝 > 啟動
設定集成
WebRTC 相機自訂元件可用於任何 Home Assistant 安裝,包括 Windows 上的 HassWP。它可以自動下載並使用最新版本的go2rtc。或者它可以連接到現有版本的 go2rtc。在這種情況下,插件安裝是可選的。
最新但可能不穩定的版本:
二進位:最新的夜間版本
Docker: 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
將使用預設的轉碼選項
配置選項和完整的設定清單可以在 wiki 中找到。
可用模組:
溪流
api - HTTP API(對於 WebRTC 支援很重要)
rtsp - RTSP 伺服器(對於 FFmpeg 支援很重要)
webrtc - WebRTC 伺服器
mp4 - MSE、MP4 串流和 MP4 快照伺服器
hls - HLS TS 或 fMP4 流伺服器
mjpeg - MJPEG 伺服器
ffmpeg - FFmpeg 集成
ngrok - ngrok 整合(專用網路的外部存取)
hass - 家庭助理集成
log - 日誌配置
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 相機串流
bubble - 從 ESeeCloud/dvr163 NVR 串流
dvrip - 從 DVR-IP NVR 進行串流傳輸
Tapo - 支援雙向音訊的 TP-Link Tapo 相機
kasa - TP-Link Kasa 相機
gopro - GoPro 相機
ivideon - 來自 Ivideon 服務的公共攝影機
hass - 家庭助理集成
isapi - 海康威視 (ISAPI) 攝影機的兩路音頻
roborock - 帶攝影機的 Roborock 吸塵器
webrtc - WebRTC/WHEP 來源
webtorrent - 來自另一個 go2rtc 的 WebTorrent 來源
了解有關傳入來源的更多信息
支持的來源:
具有 ONVIF Profile T 的 RTSP 攝影機(反向通道連接)
DVRIP攝影機
TP-Link Tapo 相機
海康威視 ISAPI 攝影機
帶相機的 Roborock 吸塵器模型
在伺服器上執行音頻
任何瀏覽器作為 IP 攝影機
透過WebRTC技術,可以在瀏覽器中使用兩路音訊。瀏覽器將僅允許 HTTPS 網站存取麥克風(了解更多)。
go2rtc 也支援在此攝影機上播放音訊檔案和直播串流。
流:sonoff_camera:rtsp://rtsp:[email protected]/av_stream/ch0 大華相機: - rtsp://admin:[email protected]/cam/realmonitor?channel=1&subtype=0&unicast=true&proto=Onvif- rtsp://admin:[email protected]/cam/realmonitors? amcrest_門鈴: - rtsp://使用者名稱:密碼@192.168.1.123:554/cam/realmonitor?channel=1&subtype=0#backchannel=0 unifi_camera: rtspx://192.168.1.123:7441/fD6ouM72bWoFijxK glichy_camera: ffmpeg:rtsp://使用者名稱:密碼@192.168.1.123/live/ch00_1
建議
Amcrest Doorbell用戶可能想要停用雙向音頻,因為使用活動串流時,呼叫按鈕將無法運作。您需要將#backchannel=0
新增至 YAML 設定檔中 RTSP 連結的末尾
大華門鈴用戶可能想要更改反向通道音訊編解碼器
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
Streams: # WebSocket 帶授權,RTSP - 不含 axis-rtsp-ws:rtsp://192.168.1.123:4567/axis-media/media.amp?overview=0&camera=1&解析度=1280x720&videoframeskipmode=空&Axis-Orig-Sw=true#transport=ws://user#transport :pass@ 192.168.1.123: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
您可以從 RTMP 伺服器取得串流,例如帶有 nginx-rtmp-module 的 Nginx。
串流: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
)- 傳統串流格式
來源也支援 HTTP 和 TCP 流,並自動偵測不同格式: MJPEG 、 H.264/H.265 位元流、 MPEG-TS 。
Streams: # [HTTP-FLV] video/x-flv 格式的串流 http_flv:http://192.168.1.123:20880/api/camera/stream/780900131155/657617 # 大華相機的[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=授權:承載 XXX"
附言。大華相機有錯誤:如果您為 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。
FFmpeg 已為Docker和Hass Add-on用戶預先安裝
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:“-編解碼器:v libx264 -g:v 30 -預設:v超快-tune:v零延遲-設定檔:v主-等級:v 4.1” mycodec:“-ffmpeg 支援的任何參數...” myinput:“-fflags nobuffer -flags low_delay -timeout 5000000 -i {輸入}” 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,即使有硬體加速
您可以將raw
參數用於任何其他 FFmpeg 參數(例如#raw=-vf transpose=1
)
您可以使用input
參數覆寫預設輸入範本(例如#input=rtsp/udp
會將 RTSP 傳輸從 TCP 變更為 UDP+TCP)
您可以使用原始輸入值(例如#input=-timeout 5000000 -i {input}
)
您可以新增自己的輸入模板
了解有關硬體加速的更多資訊。
附言。建議在WebUI新增頁面檢查可用的硬體。
您可以從任何 USB 攝影機或網路攝影機取得 RTSP 或 WebRTC 串流的影片。這是 FFmpeg 整合的一部分。
檢查 Web 介面中的可用設備
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:裝置? macos_facetime:ffmpeg:設備?
附言。建議在WebUI新增頁面查看可用設備。
Exec source 可以執行任何外部應用程式並從中取得資料。支援兩種傳輸方式:管道(從 v1.5.0 開始)和RTSP 。
如果您想使用RTSP傳輸 - 該命令必須在任何位置包含{output}
參數。啟動時,它將被 RTSP 伺服器的本機位址取代。
管道以不同格式從應用程式標準輸出讀取資料: MJPEG 、 H.264/H.265 位元流、 MPEG-TS 。 Pipe 還可以以兩種格式將資料寫入應用程式標準輸入: PCMA和PCM/48000 。
此源可用於:
FFmpeg - go2rtc ffmpeg 來源只是執行來源的捷徑
FFplay - 在您的伺服器上播放音頻
GStreamer
樹莓派相機
任何您自己的軟體
管道指令支援參數(格式: exec:{command}#{param1}#{param2}
):
killsignal
- 將發送以停止進程的訊號(數位形式)
killtimeout
- 使用 sigkill 強制終止的時間(以秒為單位)
backchannel
- 啟用雙向音訊的反向通道
流:流:exec:ffmpeg -re -i /media/BigBuckBunny.mp4 -c copy -rtsp_transport tcp -f rtsp {輸出} picam_h264:執行: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: 執行:ffplay -fflags nobuffer -f s16be -ar 48000 -i -#backchannel=1
有些來源可能有動態連結。您需要使用 bash 或 python 腳本來取得它。您的腳本應該回顯來源連結。 RTSP、FFmpeg 或任何支援的來源。
Docker和Hass Add-on用戶已預先安裝python3
、 curl
、 jq
。
檢查 wiki 中的範例。
串流:apple_hls:echo:python3 hls.py https://developer.apple.com/streaming/examples/basic-stream-osx-ios5.html
v1.8.2 中的新功能
與echo
source 類似,但使用內建的 expr 表達式語言(了解更多)。
重要的:
您可以在沒有 Apple 裝置(iPhone、iPad 等)的情況下使用 HomeKit 相機,這只是另一種協議
HomeKit 設備只能與一個生態系統配對。因此,如果您已將其與 iPhone (Apple Home) 配對 - 您無法將其與 Home Assistant 或 go2rtc 配對。或者,如果您已將其與 go2rtc 配對 - 您無法將其與 iPhone 配對
HomeKit 設備應與設備和 go2rtc 之間的工作 mDNS 位於同一網路中
go2rtc 支援從 Home Assistant 匯入配對的 HomeKit 裝置。因此您可以同時使用 HomeKit 相機與 Hass 和 go2rtc。如果你使用Hass,我建議你將設備與它配對,它會給你更多的選擇。
您可以在 HomeKit 頁面上將裝置與 go2rtc 配對。如果您看不到您的裝置 - 重新載入頁面。也請嘗試重新啟動您的 HomeKit 裝置(關閉電源)。如果您仍然看不到它 - mDNS 出現問題。
如果您看到一個設備,但它沒有配對按鈕 - 它已與某個生態系統(Apple Home、Home Assistant、HomeBridge 等)配對。您需要從該生態系統中刪除設備,它將可用於配對。如果您無法取消裝置配對,則必須將其重設。
重要的:
HomeKit 音訊使用非常不標準的AAC-ELD編解碼器,具有非常不標準的參數和規範違規
音訊無法在VLC
和其他播放器中播放
應對音訊進行轉碼以便與 MSE、WebRTC 等一起使用。
將 HomeKit 相機與 WebRTC、MSE、MP4、RTSP 結合使用的建議設定:
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(歐盟和中國版本)進行測試。
v1.6.1 中的新功能
其他名稱:ESeeCloud、dvr163。
您可以跳過username
、 password
、 port
、 ch
和stream
(如果它們是預設值)
為不同的頻道和串流設定單獨的串流
串流:camera1:bubble://使用者名稱:[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
是預設的,則可以跳過它們
為不同頻道設定單獨的串流
主流使用subtype=0
,Extra1 流使用subtype=1
僅支援 TCP 協定
流: only_stream: dvrip://用戶名:密碼@192.168.1.123:34567?channel=0&subtype=0 only_tts: dvrip://用戶名:密碼@192.168.1.123:34567?backchannel=1 雙路音訊: - dvrip://使用者名稱:密碼@192.168.1.123:34567?channel=0&subtype=0- dvrip://使用者名稱:密碼@192.168.1.123:34567?backchannel=1
v1.2.0 中的新功能
TP-Link Tapo 專有相機協議,支援雙向音訊。
碼流質量與RTSP協定相同
使用雲端密碼,這不是RTSP密碼!您不需要新增登入名稱!
您還可以使用雲端密碼中的大寫 MD5 雜湊值和admin
用戶名
一些新的相機韌體需要 SHA256 而不是 MD5
Streams: # 沒有使用者名稱的雲端密碼 相機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 "雲端密碼" |沙蘇姆-a 256 | awk '{print toupper($0)}'
v1.7.0 中的新功能
TP-Link Kasa 非標準協定更多資訊。
username
- urlsafe 電子郵件, [email protected]
-> alex%40gmail.com
password
- base64password, secret1
-> c2VjcmV0MQ==
串流:kc401:kasa://使用者名稱:密碼@192.168.1.123:19443/https/stream/mixed
已測試:KD110、KC200、KC401、KC420WS、EC71。
v1.8.3 中的新功能
支援從透過 USB 或 Wi-Fi 連接到 Linux、Mac、Windows 的 GoPro 相機進行串流傳輸。閱讀更多。
支援 Ivideon 服務的公共攝影機。
串流:鵪鶉攝影機:ivideon:100-tu5dkUPct39cTp9oNEN2B6/0
支援從 Home Assistant 設定檔匯入相機連結:
通用相機,透過 GUI 設定
HomeKit相機
ONVIF
Roborock 帶攝影機的吸塵器
hass: config: "/config" # 如果您使用 Hass Add-on,請跳過此設定 userstreams: generic_camera: hass:Camera1 # 設定 > 整合 > 整合名稱 aqara_g3: hass:相機集線器-G3-AB12
WebRTC 相機(從 v1.6.0 開始)
支援任何 WebRTC 格式的相機。但目前 Home Assistant 僅支援這種格式的部分 Nest 相機。
重要的。 Nest API 只允許您取得 5 分鐘的串流連結。不要與護衛艦一起使用!如果串流過期,Frigate 將在幾秒鐘內耗盡您機器上的所有可用記憶體。推薦使用 Nest 來源 - 它支援擴充流。
Streams: # 連結到 Home Assistant Supervised 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 連結。所以更多的相機,像是塗鴉,可能還有其他相機也可以透過這種方法匯入。
v1.3.0 中的新功能
此來源類型僅支援 Hikvision ISAPI 協定的反向通道音訊。因此它應該被用作 RTSP 協定之外的第二來源。
流:海康威視1: - rtsp://admin:[email protected]:554/Streaming/Channels/101- isapi://admin:[email protected]:80/
v1.6.0 中的新功能
目前僅支援 WebRTC 相機。
為簡單起見,建議將 Nest/WebRTC 攝影機連接到 Home Assistant。但如果你能以某種方式獲得以下參數 - Nest/WebRTC 來源將在沒有 Hass 的情況下運作。
串流:nest-doorbell:nest:?
v1.3.0 中的新功能
此來源類型支援帶有攝影機的 Roborock 吸塵器。已知的工作模式:
Roborock S6 MaxV - 僅視訊(真空沒有麥克風)
Roborock S7 MaxV - 視訊和兩路音頻
Roborock Qrevo MaxV - 視訊和兩路音頻
來源支援從 Home Assistant 自訂整合或核心整合載入 Roborock 憑證。否則,您需要登入石頭掃地機器人帳號(不支援MiHome帳號)。前往:go2rtc WebUI > 新增網頁。複製roborock://...
吸塵器的來源並將其貼上到go2rtc.yaml
配置中。
如果您的吸塵器有圖形引腳 - 將其作為數位引腳(行:123、456、789)添加到 roborock-link 的末尾。
v1.3.0 中的新功能
此來源類型支援四種連接格式。
嗚嗚嗚
WebRTC/WHEP - 被 WebRTC/WISH 標準取代,用於 WebRTC 視訊/音訊檢視器。但某些第三方軟體可能已經支援它。 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。您需要使用 JSON 格式的查詢參數、 client_id
和ice_servers
清單中的所有憑證來指定訊號 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攝影機。或甚至廣播你的電腦螢幕:
在go2rtc.yaml
中創建空流
前往 go2rtc WebUI
開啟您串流的links
頁面
選擇camera+microphone
或display+speaker
選項
打開webrtc
本地頁面(您的 go2rtc應該透過 HTTPS 工作! )或透過 WebTorrent 技術share link
(預設情況下透過 HTTPS 工作)
v1.3.0 中的新功能
您可以使用OBS Studio或任何其他支援 WHIP 協定的廣播軟體。該標準尚未獲得批准。但您可以下載 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
您可以串流:本機檔案、Web 檔案、即時串流或 FFmpeg 支援的任何格式
您應該使用 ffmpeg 來源將音訊轉碼為您的相機支援的編解碼器
當串流處於活動狀態時,您可以在 go2rtc WebUI 資訊頁面上檢查相機編解碼器
某些相機僅支援低品質PCMA/8000
編解碼器(例如 Tapo)
如果您的相機支持,建議選擇更高品質的格式(例如某些大華相機的PCMA/48000
)
如果透過http-link播放文件,需要加入#input=file
參數來轉碼,這樣文件就會即時轉碼播放
如果你播放直播,你應該跳過#input
參數,因為它已經是即時的
您可以透過使用空src
參數呼叫 API 來停止活動播放
在串流傳輸期間,您將在 go2rtc WebUI 資訊頁面中看到一名活躍生產者和一名活躍消費者
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」發佈到 Telegram 視訊_音訊_轉碼: - rtmps://xxx-x.rtmp.t.me/s/xxxxxxxxx:xxxxxxxxxxxxxxxxxxxxx # 將串流「audio_transcode」發佈到 Telegram 和 YouTube 音訊轉碼: - rtmps://xxx-x.rtmp.t.me/s/xxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxxxx- rtmp://xxx.rtmp.youtube.com/live2/xxxx-xxxx-xxxx-xxxx-xxxxstreams: video_audio_transcode: - ffmpeg:rtsp://用戶:[email protected]/stream1#video=h264#hardware#audio=aac 音訊轉碼: - ffmpeg:rtsp://用戶:[email protected]/stream1#video=copy#audio=aac
Telegram 桌面應用程式> 任何公開或私人頻道或群組(您管理的地方) > 直播 > 開始於... > 開始直播。
YouTube > 建立 > 上線 > 串流延遲:超低延遲 > 複製:流 URL + 串流金鑰。
HTTP API 是與應用程式互動的主要部分。預設位址: http://localhost:1984/
。
重要的! go2rtc 在沒有 HTTP 授權的情況下傳遞來自本機主機和 unix 套接字的請求,即使您已經配置了它!您有責任設定對 API 的安全外部存取。如果配置不正確,攻擊者可以存取您的攝影機甚至伺服器。
API 說明。
模組配置
您可以使用listen: ""
停用 HTTP API,並僅使用 RTSP 用戶端/伺服器協定
您可以僅在本機上啟用 HTTP API 並listen: "127.0.0.1:1984"
設置
您可以更改 API base_path
並在主應用程式網路伺服器子網址上託管 go2rtc
根路徑上託管的static_dir
中的所有檔案: /
您可以使用原始 TLS 憑證/金鑰內容或檔案路徑
api: Listen: ":1984" # 預設 ":1984",HTTP API 連接埠("" - 停用) username: "admin" # 預設 "", WebUI 的基本驗證 密碼: "pass" # 預設 "", WebUI 的基本驗證 base_path: "/rtc" # 預設 "", 在子 URL 上提供服務的 API 前綴 (/api => /rtc/api) static_dir: "www" # 預設 "",靜態檔案資料夾(自訂 Web 介面) 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 的unix 套接字監聽器
附:
由於 Chrome 錯誤,WebSocket 上的 MJPEG 比原生 MJPEG 播放效果更好
MP4 over WebSocket 僅為 Apple iOS 創建,因為它不支援 MSE 和本機 MP4
您可以取得任何串流作為 RTSP 串流: rtsp://192.168.1.123:8554/{stream_name}
您可以為 RTSP 串流啟用外部密碼保護。對於本機主機呼叫(例如同一台伺服器上的 FFmpeg 或 Hass),密碼保護始終停用。
rtsp: Listen: ":8554" # RTSP 伺服器 TCP 端口,預設 - 8554 username: "admin" # 可選,預設 - 停用 密碼: "pass" # 可選,預設 - 停用 default_query: "視訊&音訊" <sp