目录

Docker宝库:go2rtc-视频转发网关

目录

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

普通的 RTSP 摄像头流在网页端直接播放非常麻烦,通常会有几秒甚至十几秒的延迟。go2rtc 就是为了解决以下问题而生的:

  • 协议转换 (Transmuxing):它可以把 RTSP、RTMP、HTTP 等流,瞬间转换成网页原生支持的 WebRTCMSEHLS
  • 超低延迟:通过 WebRTC 技术,它可以实现不到 500 毫秒的实时画面预览(几乎和肉眼同步)。
  • 多路分发 (Restream):如果你的摄像头只允许 2 个人同时看,但你有 5 个设备要接,go2rtc 可以只拉一路流,然后分发给几十个设备。

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

docker-compose文件如下:

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选项卡,进行配置即可。例如:

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

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

#  tplink监控∶
  camera_tmp:
    - rtsp://username:[email protected]:554/stream1
  camera_tmp_sd:
    - rtsp://username:[email protected]:554/stream2