frigate/docs/i18n/zh/docusaurus-plugin-content-docs/current/guides/configuring_go2rtc.md

118 lines
5.4 KiB
Markdown
Raw Normal View History

2025-04-29 16:20:14 +03:00
---
id: configuring_go2rtc
title: 配置 go2rtc
---
# 配置 go2rtc
使用内置的 go2rtc 是可选的。你仍然可以配置 FFmpeg 直接连接到你的摄像头。但是,如果需要以下功能,则需要在配置中添加 go2rtc
- WebRTC 或 MSE 实时查看,支持音频、更高的分辨率和帧率,比仅限于检测流且不支持音频的 jsmpeg 流更好
- Home Assistant 集成中摄像头的实时流支持
- RTSP 中继,用于其他消费者,以减少与摄像头流的连接数
# 设置 go2rtc 流
首先,你需要在 Frigate 配置文件中添加想用于实时查看的流,配置 go2rtc 连接到你的摄像头流。在这一步中避免更改配置的其他部分。注意go2rtc 支持[多种不同的流类型](https://github.com/AlexxIT/go2rtc/tree/v1.9.9#module-streams),不仅仅是 rtsp。
:::tip
为获得最佳体验,你应该将 `go2rtc` 下的流名称设置为与摄像头名称相匹配,这样 Frigate 就可以自动映射并为摄像头使用更好的实时查看选项。
2025-04-29 16:58:32 +03:00
更多信息请参见[实时查看文档](../configuration/live.md#为实时页面设置视频流)。
2025-04-29 16:20:14 +03:00
:::
```yaml
go2rtc:
streams:
back:
- rtsp://user:password@10.0.10.10:554/cam/realmonitor?channel=1&subtype=2
```
将此配置添加后,重启 Frigate 并尝试从仪表板点击单个摄像头来观看实时流。它应该比原始的 jsmpeg 流看起来更清晰流畅。
### 如果视频无法播放怎么办?
- 检查日志:
- 在 Frigate UI 侧边栏的日志部分访问 go2rtc 日志。
- 如果 go2rtc 连接摄像头有困难,你应该能在日志中看到一些错误消息。
- 检查 go2rtc Web 界面:如果你在日志中没有看到任何错误,尝试通过 go2rtc 的 web 界面查看摄像头。
- 在浏览器中访问 1984 端口来访问 go2rtc 的 web 界面。
- 如果通过 Home Assistant 使用 Frigate需要启用 1984 端口的 web 界面。
- 如果使用 Docker需要在访问 web 界面前转发 1984 端口。
- 点击特定摄像头的 `stream` 查看是否正在接收摄像头流。
- 检查视频编解码器:
- 如果摄像头流在 go2rtc 中工作但在浏览器中不工作,可能是视频编解码器不受支持。
- 如果使用 H265切换到 H264。参考 go2rtc 文档中的[视频编解码器兼容性](https://github.com/AlexxIT/go2rtc/tree/v1.9.9#codecs-madness)。
- 如果无法从 H265 切换到 H264或者流格式不同如 MJPEG使用 [FFmpeg 参数](https://github.com/AlexxIT/go2rtc/tree/v1.9.9#source-ffmpeg)重新编码视频。它支持旋转和调整视频源大小以及硬件加速。请记住,将视频从一种格式转换为另一种格式是一项资源密集型任务,使用内置的 jsmpeg 查看可能更好。
```yaml
go2rtc:
streams:
back:
- rtsp://user:password@10.0.10.10:554/cam/realmonitor?channel=1&subtype=2
- "ffmpeg:back#video=h264#hardware"
```
- 如果需要,切换到 FFmpeg
- 某些摄像头流可能需要使用 go2rtc 中的 ffmpeg 模块。这会导致启动时间较慢,但与更多流类型兼容。
```yaml
go2rtc:
streams:
back:
- ffmpeg:rtsp://user:password@10.0.10.10:554/cam/realmonitor?channel=1&subtype=2
```
- 如果你能看到视频但没有音频,这很可能是因为你的摄像头的音频流编解码器不是 AAC。
- 如果可能,在摄像头固件中将摄像头的音频设置更新为 AAC。
- 如果你的摄像头不支持 AAC 音频,且你想要音频,则需要告诉 go2rtc 按需将音频重新编码为 AAC。这将使用额外的 CPU 并增加一些延迟。要按需添加 AAC 音频,你可以按如下方式更新 go2rtc 配置:
```yaml
go2rtc:
streams:
back:
- rtsp://user:password@10.0.10.10:554/cam/realmonitor?channel=1&subtype=2
- "ffmpeg:back#audio=aac"
```
如果你需要同时转换音频和视频流,可以使用以下配置:
```yaml
go2rtc:
streams:
back:
- rtsp://user:password@10.0.10.10:554/cam/realmonitor?channel=1&subtype=2
- "ffmpeg:back#video=h264#audio=aac#hardware"
```
当使用 ffmpeg 模块时,你可以这样添加 AAC 音频:
```yaml
go2rtc:
streams:
back:
- "ffmpeg:rtsp://user:password@10.0.10.10:554/cam/realmonitor?channel=1&subtype=2#video=copy#audio=copy#audio=aac#hardware"
```
:::warning
当使用 Frigate 插件时,如果要从外部访问 go2rtc 流(例如通过 VLC你必须首先启用 RTSP Restream 端口。
你可以在 Home Assistant 中访问 Frigate 插件配置页面,在"显示禁用端口"部分下显示隐藏选项来完成此操作。
:::
## 后续步骤
1. 如果你添加到 go2rtc 的流也被 Frigate 用于 `record``detect` 角色,你可以将配置迁移到从 RTSP 重流中获取,以减少与摄像头的连接数,如[这里](/configuration/restream#减少摄像头连接数)所示。
2. 你可能还想[设置 WebRTC](/configuration/live#webrtc额外配置)以获得比 MSE 略低的延迟。注意WebRTC 仅支持 h264 和特定的音频格式,可能需要在路由器上开放端口。
## 重要注意事项
如果你配置 go2rtc 发布 HomeKit 摄像头流,在配对时配置会写入容器内的 `/dev/shm/go2rtc.yaml` 文件。这些更改必须手动复制到 Frigate 配置的 `go2rtc` 部分,以便在重启后保持不变。