go2rtc 入门教程:5 分钟搭建低延迟摄像头流媒体服务器
【免费下载链接】go2rtcUltimate camera streaming application项目地址: https://gitcode.com/GitHub_Trending/go/go2rtc
go2rtc 是一个用 Go 编写的零依赖摄像头串流应用,能把 RTSP、RTMP、MJPEG、ONVIF、WebRTC 等几十种输入源,转发成 WebRTC、HLS、RTSP、MP4、HomeKit 等输出。浏览器里看监控的 WebRTC 延迟可低于 100ms。如果你手上有 RTSP 摄像头、想在网页上低延迟看画面,这篇教程带你从启动一路配到推直播。
为什么选 go2rtc
输入输出协议全覆盖
它本质是一台协议转换器:
- 输入:RTSP、RTMP、HTTP-FLV、MJPEG、ONVIF、WebRTC、HLS,以及 Tapo、Wyze、小米、Nest 等几十种私有云摄像头协议
- 输出:WebRTC(MSE)、HLS、RTSP、MP4、HomeKit,浏览器即开即看
- 双向音频:支持对 Tapo、Ring、Wyze、大华、海康等摄像头实时喊话,还能往摄像头里推音乐
跨平台与零依赖
单个二进制文件即可运行,不需要装任何运行时,Docker 和源码编译同样方便:
| 平台 | 二进制 | Docker | 硬件加速 |
|---|---|---|---|
| Windows 10+(x64/ARM) | ✅ | ✅ | 部分支持 |
| macOS(Intel/ARM) | ✅ | ✅ | 部分支持 |
| Linux(amd64/arm64 等) | ✅ | ✅ | 完整支持 |
| 树莓派 / ARM 64 位 | ✅ | ✅ | Rockchip 等优化支持 |
5 分钟启动你的第一个流
方式一:二进制直接运行
目标:最快跑起来。操作(从 release 下载对应系统的二进制后):
chmod +x go2rtc_linux_amd64 # Windows 用户直接双击 go2rtc_win64.exe ./go2rtc_linux_amd64验证:浏览器打开http://localhost:1984看到 Web 界面。
方式二:Docker 一条命令
docker run -d --name go2rtc --network host --restart unless-stopped -v ~/go2rtc:/config alexxit/go2rtc验证:docker ps显示容器 Up,同样访问http://localhost:1984。
方式三:源码编译
目标:自己控制编译参数。操作:
git clone https://gitcode.com/GitHub_Trending/go/go2rtc cd go2rtc && go mod download && go build -o go2rtc main.go && ./go2rtc验证:终端开始打印日志,Web 界面可访问。
💡提示:首次启动会在当前目录生成默认go2rtc.yaml,什么都不改也能看流。
go2rtc.yaml 关键配置项
默认配置只有streams部分,加上三个端口就是一份最小可用配置:
api: listen: :1984 # Web 界面与 API 端口 rtsp: listen: :8554 # 对外提供的 RTSP 端口 webrtc: listen: :8555 # WebRTC 连接端口(TCP/UDP) streams: front: rtsp://admin:123456@192.168.1.200/stream1 backyard: http://192.168.1.201:8080/mjpeg修改后重启生效,端口不想动就删掉对应行。
| 你的场景 | 推荐协议 | 平均延迟 | 原因 |
|---|---|---|---|
| 实时监控(浏览器) | WebRTC | 80-100ms | 延迟最低,还支持双向语音 |
| 老浏览器 / 电视盒子 | HLS | 3-10 秒 | 兼容性最好 |
| NVR、传统播放器对接 | RTSP | 200-300ms | 行业通用协议 |
| 苹果家庭生态 | HomeKit | 约 100ms | 直接进 iPhone 家庭 App |
三个实战:监控、直播与智能联动
多摄像头集中管理
把各路源映射到好记的名字,Web 界面自动列出:
streams: front: rtsp://admin:123456@192.168.1.200/stream1 backyard: http://192.168.1.201:8080/mjpeg garage: webrtc://192.168.1.202:8555/live看效果:打开 Web 界面的net页签,能实时看到每个流的连接和字节数。
把流推到直播平台
支持 H264+AAC 的流可直接经 FFmpeg 引擎转推到 YouTube、Telegram 等 RTMP 地址:
publish: front: - rtmp://a.rtmp.youtube.com/live2/你的直播密钥看效果:YouTube 直播控制台几秒内出现画面。
接入 HomeKit 家庭生态
摄像头接入 iPhone 家庭 App,键名与streams中的流名一致:
homekit: front: name: 前门摄像头 pin: "12345678"看效果:在 iPhone 家庭 App 里点"添加配件",用 PIN 码配对即可看到摄像头。
💡提示:HomeKit 视频在 iPhone 上播放时走设备间直连,不经过 go2rtc 中转。
监控画面看不到?按这张表排查
| 现象 | 先查什么 |
|---|---|
| 连接失败 | 用telnet 摄像头IP 554测端口是否通,再核对用户名密码 |
| 画面卡顿 | 降低源端分辨率/码率,或检查带宽占用 |
| 无声音 | 确认源本身带音频(AAC/OPUS/G711),必要时加 FFmpeg 转码 |
| WebRTC 连不上 | 检查 8555 端口的 UDP/TCP 是否放行;跨网络访问需配置 STUN |
💡提示:WebUI 的net页签会显示每路流的协议、码率和报错,定位问题先看这里。
下一步
到这里你已经有一个可用的流媒体中转服务。想深入协议细节,可以读 streams 模块文档 和 webrtc 模块文档。
【免费下载链接】go2rtcUltimate camera streaming application项目地址: https://gitcode.com/GitHub_Trending/go/go2rtc
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考