跳到主要内容

实况视图

Frigate 有不同的实况视图选项,其中一些需要按照分步骤指南中的说明配置捆绑的 go2rtc

实况视图选项

查看实时流时可以选择实况视图选项。这些选项包括:

SourceLatencyFrame RateResolutionAudioRequires go2rtcOther Limitations
jsmpeglowsame as detect -> fps, capped at 10same as detectnononone
mselownativenativeyes (depends on audio codec)yesiPhone requires iOS 17.1+, Firefox is h.264 only
webrtclowestnativenativeyes (depends on audio codec)yesrequires 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.yaml
    go2rtc:
    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 文档 了解更多相关信息。