终极相机流媒体应用程序,支持 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/realmonitor?channel=1&subtype=1 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: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:设备?视频= 0#视频= h264 macos_facetime:ffmpeg:设备?视频=0&音频=1&video_size=1280x720&帧速率=30#视频=h264#音频=pcma
附言。建议在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
是默认的,则可以跳过它们
为不同频道设置单独的流
对于 Main 流使用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 中的新功能
支持从 GoPro 相机进行流式传输,通过 USB 或 Wi-Fi 连接到 Linux、Mac、Windows。阅读更多。
支持 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:?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 凭证。否则,您需要登录石头扫地机器人账号(不支持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