# Docker宝库：go2rtc-视频转发网关

**go2rtc** 是一个超强大的**流媒体转发/转换网关**。它的核心任务只有一件事：**把各种乱七八糟协议的摄像头直播流，用最快、最省资源的方式，转发给你的浏览器、手机 App 或者 NVR 软件。**

普通的 RTSP 摄像头流在网页端直接播放非常麻烦，通常会有几秒甚至十几秒的延迟。go2rtc 就是为了解决以下问题而生的：
- **协议转换 (Transmuxing)**：它可以把 RTSP、RTMP、HTTP 等流，瞬间转换成网页原生支持的 **WebRTC**、**MSE** 或 **HLS**。
- **超低延迟**：通过 WebRTC 技术，它可以实现**不到 500 毫秒**的实时画面预览（几乎和肉眼同步）。
- **多路分发 (Restream)**：如果你的摄像头只允许 2 个人同时看，但你有 5 个设备要接，go2rtc 可以只拉一路流，然后分发给几十个设备。

此外，go2rtc最新版已经支持直接接入小米摄像头。

docker-compose文件如下：
```yaml
services:
  go2rtc:
    container_name: go2rtc
    image: alexxit/go2rtc    #国内可替换成：ghcr.nju.edu.cn/alexxit/go2rtc
    network_mode: host       # 使用HOST网络模式，important for WebRTC, HomeKit, UDP cameras
    privileged: true         # 开启特权模式，用于FFmpeg硬件解码
    restart: unless-stopped  # 自启动模式
    environment:
      TZ: ${TZ:-Asia/Shanghai}
    devices:
      - /dev/dri:/dev/dri         # 核显硬件加速必须
    volumes:
      - /opt/go2rtc:/config     # 持久化放置go2rtc.yaml配置文件的文件夹。
      - /etc/localtime:/etc/localtime:ro   # 同步宿主机时区
    # N100 低功耗优化：限制资源避免过度消耗
    deploy:
      resources:
        limits:
          cpus: '2.0'              # N100 4核，限制2核防止系统卡顿
          memory: 1G
        reservations:
          memory: 256M
```

之后进入网页管理界面，例如192.168.xxx.xxx:1984,点击config选项卡，进行配置即可。例如：

```yaml
# xiaomi：这一行，是在go2rtc管理页面上的add选项中，添加小米设备并登录成功后自动生成的
xiaomi:
  "512...125": V1:pwROAesI.....................jqHphW+Y=

streams:
  # 小米智能摄像机 C700 高清&subtype=hd
  c700_camera:
    - xiaomi://51229125:cn@192.168.1.108?did=1180354292&model=chuangmi.camera.81ac1
      #进行强制音频转码，因为C700摄像头的音频格式不是aac，Frigate中录制视频没有声音
    - "ffmpeg:c700_camera#audio=aac" 
  # 小米智能摄像机 C700 标清&subtype=sd
  c700_camera_sd:
    - xiaomi://51229125:cn@192.168.1.108?did=1180354292&model=chuangmi.camera.81ac1&subtype=sd

#  tplink监控∶
  camera_tmp:
    - rtsp://username:password@192.168.1.127:554/stream1
  camera_tmp_sd:
    - rtsp://username:password@192.168.1.127:554/stream2
```

