# 摄像头接入

云瞰 原生只接 RTSP 和 ONVIF。私有协议（Tapo / 小米 / Wyze 等）走 go2rtc 桥接成 RTSP 后再加进来。本章覆盖各种接入场景和高级特性。

## ONVIF 自动发现（首选）

如果摄像头和 云瞰 在同一局域网，且摄像头开了 ONVIF（出厂默认开）：

1. **扫描**

   网页后台 → 摄像头 → 添加 → 选 "ONVIF 自动发现"，几秒后列出局域网内所有 ONVIF 设备

2. **选目标**

   看 IP / MAC / 厂商对得上自己的相机，点选

3. **填凭证**

   ONVIF 用户名密码（不一定等于 RTSP 密码！海康/大华出厂常是 admin/12345 之类）

4. **保存**

   云瞰 自动协商主码流 / 子码流地址，并把 PTZ / 对讲端口探测出来一起存好

> **⚠️ ONVIF 返回错 IP**
>
> 某些不规范固件会返回相机内部硬编码的 IP（如 192.168.1.99）而不是局域网真实地址。云瞰 加摄像头时会自动测试主+子码流，任一不通就拒绝保存。这种情况只能改用手动 RTSP。

## 手动 RTSP

ONVIF 不支持或拿到错地址时用手动方式。需要从厂商手册或 IPC App 里找 RTSP URL，常见格式：

| 品牌 | RTSP 主码流地址示例 |
| --- | --- |
| 海康（Hikvision） | `rtsp://用户:密码@IP:554/Streaming/Channels/101` |
| 大华（Dahua） | `rtsp://用户:密码@IP:554/cam/realmonitor?channel=1&subtype=0` |
| TP-Link Vigi（IPC，非 Tapo） | `rtsp://用户:密码@IP:554/stream1` |
| 小米 / Aqara / 乐橙等私协 | **不支持**直连 RTSP，走下面 go2rtc 方案 |

> **💡 用 VLC 验证**
>
> 添加前先用 VLC（媒体 → 打开网络串流）粘贴 URL 验证能播。VLC 能播 云瞰 才能播；VLC 都播不了就不是 云瞰 的问题。

## Tapo / 小米 / Wyze 等私协 → go2rtc 桥接

TP-Link Tapo C100/C200/C220、小米米家、Wyze 这类消费级摄像头**不开标准 RTSP**，但社区项目 [go2rtc](https://github.com/AlexxIT/go2rtc) 能把它们桥接成 RTSP 让 云瞰 接入。

1. **起一个 go2rtc 容器**

   和 云瞰 同一台机器即可，端口 1984 是 go2rtc 的网页界面、8554 是它对外提供的 RTSP。

   ```bash
   docker run -d --name go2rtc \
     --restart=always \
     --network host \
     -v $(pwd)/go2rtc.yaml:/config/go2rtc.yaml \
     alexxit/go2rtc
   ```

2. **在 go2rtc.yaml 里配相机**

   Tapo 例：用 Tapo App 的访客账号即可。

   ```yaml
   streams:
     livingroom: tapo://访客密码@相机IP:554/stream1
     kitchen: tapo://访客密码@另一台IP:554/stream1
   ```

3. **在 云瞰 里加摄像头**

   用 RTSP 手动方式，URL 填 `rtsp://<go2rtc 主机IP>:8554/livingroom`，凭证留空。

> ℹ️ go2rtc 不在 云瞰 维护范围内，遇到问题去看 go2rtc 的 README。云瞰 这边只看到 RTSP 流，对接来源透明。

## 子码流的意义

ONVIF / 主流 IPC 都提供两路：**主码流**（高清，看 Live 用）和**子码流**（低清，AI 检测用）。云瞰 自动用 ONVIF 拿到子码流地址。手动 RTSP 时建议在第二个字段填子码流 URL，可以让检测节省 70%+ 带宽和 CPU。

> **💡 子码流降资源**
>
> AI 检测分辨率 416x416 就够，喂 1080p 主码流是浪费。子码流通常是 640x360 / 480p，正合适。

## 视频编码：尽量选 H.264，不要 H.265

H.265 (HEVC) 同画质下码率比 H.264 低 40~50%，看上去很省，但**浏览器播放支持很差**——大多数用户进 Web 后台看 Live 或回放会黑屏 / 转圈。开摄像头前请把编码格式改成 H.264。

| 客户端 | H.264 | H.265 (HEVC) |
| --- | --- | --- |
| Chrome / Edge (Windows / Linux) | ✅ 完美支持 | ❌ 默认不解码，黑屏 / 转圈 |
| Safari (macOS / iOS) / Chrome (macOS) | ✅ 完美支持 | ✅ 支持，但部分老机型卡顿 |
| 云瞰 Android / iOS App | ✅ 完美支持 | ✅ 原生播放器，完美支持 |

> **⚠️ 怎么改**
>
> 登录摄像头自带的网页后台 → **视频 / 编码设置** → 视频编码改成 `H.264`。**主码流和子码流都要改**。海康部分机型有 `H.264+` 这种魔改格式，选**标准 H.264** 最稳。改完用 VLC 验证一次能正常播。

> **ℹ️ 录像空间多一倍可以接受**
>
> H.264 比 H.265 占用约多一倍磁盘（1080p 约 21 GB / 路 / 天 vs H.265 约 10 GB），但换回所有浏览器后台都能直接看 Live + 回放，体验差距远大于磁盘成本。10 路保 30 天约 6.3 TB，按现在 HDD 价位完全划算。如果**只用云瞰 App、从不开网页后台**，那 H.265 也能省一半空间。

## PTZ 控制（云台）

ONVIF 接入的相机如果支持 PTZ，Live 页面右下角自动出方向 / 缩放按钮。手动 RTSP 接入的不会自动启用，需要在摄像头详情里手动填 ONVIF 端口（通常 80 / 8000）和 PTZ 凭证。

## 对讲（Talkback）

支持 ONVIF 对讲通道的相机可以双向对讲（按住 App 上的麦克风按钮讲话，对方听得到）。网页后台暂不支持发起对讲，移动端（iOS / Android）才有按住 talk 按钮。

> **⚠️ 切相机要先松手**
>
> 对讲是一个长连接喂音频。切相机时务必先松手再切，App 会自动结束旧会话再开新的——同时按住切相机会出现声音错位。

## 改 / 删摄像头注意事项

- 改 RTSP URL 后，**检测可能不会自动重启**：因为针对该相机有 "检测失败" 状态记录，需要在摄像头详情里点 "清除检测错误" 才能重新跑
- 删摄像头会同步删数据库记录和流媒体路径，但**录像文件不删**——避免误删丢证据。手动到 `data/recordings/<id>/` 删
- 改名 / 改分组都不影响录像和事件历史

## 海康 / 大华 / TP-Link Vigi（专业 IPC）

这三家是国内主流商用 IPC，全系标准 ONVIF + RTSP，云瞰 兼容性最好。出厂默认凭证：

| 品牌 | 默认账号 | 首次接入要点 |
| --- | --- | --- |
| 海康 | admin / 自定义（首启时强制改） | 如果 ONVIF 拿不到流，登录相机网页启用 ONVIF 协议 |
| 大华 | admin / admin | 默认 ONVIF 端口 80 与 HTTP 共用 |
| TP-Link Vigi | admin / 自定义 | 出厂 ONVIF 关闭，要先用 Vigi App 启用 |

---

来源:https://yun-kan.com/en/docs/cameras
