实况视图
Frigate 有不同的实况视图选项,其中一些需要按照分步骤指南中的说明配置捆绑的 go2rtc
。
实况视图选项
查看实时流时可以选择实况视图选项。这些选项包括:
Source | Latency | Frame Rate | Resolution | Audio | Requires go2rtc | Other Limitations |
---|---|---|---|---|---|---|
jsmpeg | low | same as detect -> fps , capped at 10 | same as detect | no | no | none |
mse | low | native | native | yes (depends on audio codec) | yes | iPhone requires iOS 17.1+, Firefox is h.264 only |
webrtc | lowest | native | native | yes (depends on audio codec) | yes | requires extra config, doesn't support h.265 |
音频支持
MSE 需要 AAC 音频,WebRTC 需要 PCMU/PCMA 或 opus 音频。如果您想同时支持 MSE 和 WebRTC,那么您的 restream 配置需要确保两者都启用。
go2rtc:
streams:
rtsp_cam: # <- 用于 RTSP 流
- rtsp://192.168.1.5:554/live0 # <- 支持视频和 AAC 音频的数据流
- "ffmpeg:rtsp_cam#audio=opus" # <- 将音频转码为缺失编解码器(通常为 opus)的流副本
http_cam: # <- 用于 http 流
- http://192.168.50.155/flv?port=1935&app=bcs&stream=channel0_main.bcs&user=user&password=password # <- 支持视频和 AAC 音频的数据流
- "ffmpeg:http_cam#audio=opus" # <- 将音频转码为缺失编解码器(通常为 opus)的数据流副本
为实况用户界面设置流
有些摄像机可能希望使用子码流进行实况浏览,而使用主码流进行录制。这可以通过 live -> stream_name
来实现。
go2rtc:
streams:
test_cam:
- rtsp://192.168.1.5:554/live0 # <- 支持视频和 AAC 音频的数据流
- "ffmpeg:test_cam#audio=opus" # <- 为 webrtc 将音频转码为 opus 的流副本
test_cam_sub:
- rtsp://192.168.1.5:554/substream # <- 支持视频和 AAC 音频的数据流
- "ffmpeg:test_cam_sub#audio=opus" # <- 为 webrtc 将音频转码为 opus 的流副本
cameras:
test_cam:
ffmpeg:
output_args:
record: preset-record-generic-audio-copy
inputs:
- path: rtsp://127.0.0.1:8554/test_cam # <--- 此处的名称必须与 restream 中的摄像机名称一致
input_args: preset-rtsp-restream
roles:
- record
- path: rtsp://127.0.0.1:8554/test_cam_sub # <--- 此处的名称必须与 restream 中的camera_sub名称一致
input_args: preset-rtsp-restream
roles:
- detect
live:
stream_name: test_cam_sub
WebRTC 额外配置:
WebRTC 通过在端口 8555
上创建 TCP 或 UDP 连接来工作。不过,它需要额外的配置:
-
要通过互联网进行外部访问,请设置路由器将 TCP 和 UDP 端口
8555
转发到 Frigate 设备上的端口8555
。 -
对于内部/本地访问,除非通过附加程序运行,否则还需要在 go2rtc 配置中设置 WebRTC 候选列表。例如,如果
192.168.1.10
是运行 Frigate 的设备的本地 IP:/config/frigate.yamlgo2rtc:
streams:
test_cam: ...
webrtc:
candidates:
- 192.168.1.10:8555
- stun:8555 -
要通过 Tailscale 进行访问,必须将 Vison 系统的 Tailscale IP 添加为 WebRTC 候选 IP。Tailscale IP 全部以
100.
开头,并在100.0.0.0/8
CIDR 块内保留。
如果 Frigate 已作为 Home Assistant 插件安装,则可能不需要进行此额外配置,因为 Vison 会使用Supervisor的 API 生成 WebRTC 候选程序。
不过,如果出现问题,建议手动定义候选程序。如果 Frigate 插件无法生成有效的候选文件,则应手动定义候选文件。如果发生错误,在初始化过程中,您会在插件日志页面看到如下警告:
[WARN] Failed to get IP address from supervisor
[WARN] Failed to get WebRTC port from supervisor
如果你在使用 docker 运行 Frigate 时遇到 WebRTC 运行困难,不妨尝试更改容器网络模式:
network: host
, 在这种模式下,你不需要转发任何端口。Frigate 容器内的服务可以完全访问主机的网络接口,就像它们是在本地而不是在容器中运行一样。任何端口冲突都需要解决。go2rtc 推荐使用这种网络模式,但我们建议您仅在必要时使用。network: bridge
是默认的网络驱动程序,桥接网络是一种在网段之间转发流量的链接层设备。您需要转发任何您希望从主机 IP 访问的端口。
如果不是在 host
模式下运行,则需要为容器映射 8555
端口:
docker-compose.yml
services:
frigate:
...
ports:
- "8555:8555/tcp" # WebRTC over tcp
- "8555:8555/udp" # WebRTC over udp
见 go2rtc WebRTC 文档 了解更多相关信息。