5 分钟跑通 go2rtc:摄像头流媒体零配置安装与部署指南
2026/9/12 13:52:14 网站建设 项目流程

5 分钟跑通 go2rtc:摄像头流媒体零配置安装与部署指南

【免费下载链接】go2rtcUltimate camera streaming application项目地址: https://gitcode.com/GitHub_Trending/go/go2rtc

go2rtc 是一个零依赖、零延迟的摄像头流媒体应用,一条命令就能把 RTSP、ONVIF、HomeKit 等几十种输入源转成 RTMP、WebRTC、HLS 等主流输出。它的核心卖点就一个:协议转换能力极强,且默认延迟是同类方案里最低的。

这篇 go2rtc 安装指南的目标,就是让你先跑通服务,再谈深入。

装前 30 秒自检

动手前先确认环境,别装到一半卡壳:

项目要求说明
操作系统Windows / macOS / Linux / FreeBSD / ARM必须
CPU 架构x86、ARM v6 及以上(含树莓派)必须
磁盘空间二进制约 100 MB,Docker 镜像几百 MB必须
网络默认占用 1984、8554、8555 三个端口必须,可配置
FFmpeg仅转码和硬件加速需要可选/推荐

go2rtc 本体是单文件编译,没有任何运行时依赖,上面的条件几乎不构成门槛。

一条命令快速起步

Docker 是阻力最小的起步方式,全程不超过 3 条命令:

docker run -d --name go2rtc --network host --restart unless-stopped \ -e TZ=Asia/Shanghai -v ~/go2rtc:/config alexxit/go2rtc

启动容器:--network host让 1984(Web/API)、8554(RTSP)、8555(WebRTC)直接落在宿主机上,-v ~/go2rtc:/config把配置目录挂出来,以后改配置不用进容器。

docker ps

确认容器状态是Up且端口正常监听。

docker logs go2rtc

看到类似go2rtc v1.9.x的启动日志即代表服务已就绪。

验证是否真的活着:浏览器打开http://localhost:1984/,能看到摄像头列表页就成功;再看一眼http://localhost:1984/net.html,这张实时网络拓扑图能看到所有流的进出方向——没流时是个空图,属于正常现象。

多平台部署手册

跑通 Docker 后,其他方式和平台的路子大同小异:拿到二进制、赋予权限、执行。

Windows 下二进制直跑还是 WSL 跑

适合想把 go2rtc 常驻在本机 Windows 的用户。从 release 下载go2rtc_win64.zip解压后,双击go2rtc.exe或在 PowerShell 里执行即可。如果原生跑得不顺(个别 USB 摄像头驱动场景),直接用 WSL2 走 Linux 流程,体验一致。跑完你应该看到终端持续输出日志,且http://localhost:1984/可打开。

macOS 一键部署:下载、解压、执行

curl -L -o go2rtc_mac_arm64.zip https://github.com/AlexxIT/go2rtc/releases/latest/download/go2rtc_mac_arm64.zip unzip go2rtc_mac_arm64.zip && chmod +x go2rtc_mac_arm64 && ./go2rtc_mac_arm64

Apple Silicon 用mac_arm64,Intel 换mac_amd64。启动后终端打印版本信息即成功。

Linux 二进制部署

curl -L -o go2rtc https://github.com/AlexxIT/go2rtc/releases/latest/download/go2rtc_linux_amd64 chmod +x go2rtc && ./go2rtc

树莓派等 ARM 设备换go2rtc_linux_arm64

Docker Compose 长期运行

适合需要开机自启、方便和别的容器(比如 Home Assistant)放在一起的场景:

services: go2rtc: image: alexxit/go2rtc network_mode: host privileged: true # 需要访问 USB/视频设备时保留 restart: unless-stopped environment: - TZ=Asia/Shanghai volumes: - "~/go2rtc:/config"

docker-compose up -d即可,配置改动都落在宿主机~/go2rtc/go2rtc.yaml

最小配置就长这样,在 WebUI 的 config 页改,或写进 yaml 后重启:

streams: camera1: rtsp://admin:password@192.168.1.100/cam/realmonitor?channel=1&subtype=0

核心能力速查

go2rtc 的本职是协议转换:把各种输入源统一收进来,再转成前端要的任何格式。一张架构图就能看明白:

协议/功能一句话说明典型场景
RTSP/RTSPS、ONVIF、MJPEG最主流的摄像头输入协议海康/大华/TP-Link 等摄像头接入
WebRTC超低延迟双向通信输出网页前端实时预览
RTMP / HLS / HTTP-FLV推流到外部或网页播放推到 NVR、B 站、网页播放器
MP4 / MSE边看边存、无刷新播放录像文件、浏览器 MSE 播放
HomeKitApple 生态直接接入家庭摄像头进 Home 应用
双向音频对摄像头喊话、播放音频门口对讲、远程提醒
云端 API小米、Wyze、Ring、Nest 等云摄像头本地化接入

想深挖某个协议怎么写、怎么连,直接翻 examples/ 目录,每个协议都有独立示例工程。

进阶调优与硬件加速

GPU 硬件转码

场景:树莓派上转码吃满 CPU。给流地址加#hardware参数,go2rtc 会自动探测并选择 CUDA/VAAPI 等对应编码器:

streams: cam: ffmpeg:rtsp://.../stream#video=h264#hardware=cuda

也可以直接用官方latest-hardware镜像(预装 FFmpeg 与 Python)。效果:转码路径下 CPU 占用明显下降。

RTSP 推流

场景:把流推给外部 RTMP 接收端。配置里加一条发布地址即可:

streams: out: rtmp://target/server/app/stream

保存后 go2rtc 开始向该地址持续推流。

WebRTC 低延迟调参

场景:网页预览延迟偏高。确认 ICE 服务器配置正常即可,WebRTC 默认 UDP 传输加 H.264 即可做到几百毫秒级:

webrtc: listen: :8555 ice_servers: - urls: ["stun:stun.l.google.com:19302"]

踩坑速查

  • 端口被占用→ 8554 常和 NVR、其他 RTSP 服务打架 → 在配置里把冲突端口改成别的,如rtsp: {listen: ":9554"}
  • 权限不足→ Linux 下访问 USB 摄像头、声卡报错 → 以 root 运行,或把用户加入dialvideo组;Docker 则保留privileged
  • 流源鉴权失败→ RTSP 地址里用户名密码写错或含@#等特殊字符 → 改用 URL 编码(如user%40name),密码用引号包住。
  • 浏览器能开、摄像头连不上→ 防火墙/路由器 NAT 拦截 → 放行 1984、8554、8555,注意 8555 是UDP,UDP 是最容易被漏掉的。
  • 实在搞不定→ 先看终端日志和net.html拓扑定位断在哪一环,仍无解就到 项目仓库 提 issue,附上你的 go2rtc.yaml 和相关日志。

收尾

到这儿:服务装好了,Web 界面能进,流源加一条streams:就能看画面,硬件加速和双向音频都是可选的下一步。

继续探索:

  • 项目总览与协议列表:README.md
  • 内置 WebUI 使用说明:www/
  • HTTP/WebSocket API 文档:internal/api/
  • 各协议示例代码:examples/

配置改完记得保存重启,流不通时先看net.html——它比日志直观得多。

【免费下载链接】go2rtcUltimate camera streaming application项目地址: https://gitcode.com/GitHub_Trending/go/go2rtc

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询