go2rtc:3 分钟跑起来你的第一路摄像头流,零依赖零延迟
【免费下载链接】go2rtcUltimate camera streaming application项目地址: https://gitcode.com/GitHub_Trending/go/go2rtc
go2rtc 是一个零依赖的摄像头流媒体应用:把家里各种协议的摄像头(RTSP、MJPEG、ONVIF、HomeKit、小米、Wyze 等)接进来,再统一转成 WebRTC、RTSP、HLS、MJPEG 这类你能直接播放的格式,全程低延迟。这篇带你从安装、部署到配出第一路流,把新手最容易卡住的坑也标了出来。
30 秒先跑起来
别急,先让它转起来再说,细节等下回头看。有 Docker 的话一条命令就够,配置会自动落到~/go2rtc:
docker run -d --name go2rtc --network host --privileged --restart unless-stopped -v ~/go2rtc:/config alexxit/go2rtc容器跑起来后,浏览器打开http://localhost:1984/,看到 Web 界面就说明服务已经在转了。
它到底能干什么
一句话概括:它是个协议转换器加流媒体服务器。
- 拉流:吃 RTSP/RTSPS、MJPEG、ONVIF、RTMP,还能直接接 HomeKit、小米、Wyze、Ring、TP-Link Tapo 这些私有协议的摄像头,省得你自己折腾。
- 推流:同一路流可以同时输出 WebRTC、RTSP、HLS、MJPEG、MP4(MSE)、HomeKit,客户端要什么格式给什么格式,还能往 YouTube、Telegram 推。
- 双向音频:支持带麦克风的摄像头对讲,浏览器里用 WebRTC 就能喊话。
- 自动转码:只在必要时才调 FFmpeg,平时零转码、零延迟,需要时也能一键上硬件加速。
部署方式怎么选
选型很简单:有 Docker 就 Docker,没有就跑二进制,真要改代码才碰源码,新手别折腾编译。
Docker 一键部署
多架构镜像(amd64/arm64/arm 等)都支持,镜像里已经装好 FFmpeg,开箱即用:
docker run -d --name go2rtc --network host --privileged --restart unless-stopped -v ~/go2rtc:/config alexxit/go2rtc直接跑二进制
拉对应系统的压缩包,解压后把二进制丢进 PATH 就行。Linux/macOS 记得补个执行权限:
chmod +x go2rtc_linux_amd64 && ./go2rtc_linux_amd64Windows 就是解压 zip 后直接跑go2rtc.exe。
从源码起(进阶)
git clone https://gitcode.com/GitHub_Trending/go/go2rtc cd go2rtc && go run .第一个配置文件长什么样
文件不用手写半天,三行就能跑。默认它在当前目录找go2rtc.yaml:
streams: # 流名字: 摄像头地址 hall-camera: rtsp://admin:password@192.168.1.123/cam/realmonitor?channel=1&subtype=0streams:一个字典,左边起个流名,右边填地址,支持 RTSP、MJPEG、ONVIF 等。- 地址里直接带
用户:密码@IP,就不用另外配认证了。
端口这块默认就够用:Web/API 走1984,RTSP 服务器8554,WebRTC8555,要自定义再改api/rtsp/webrtc的listen,更多字段看 配置文档。
进阶:让它更快 / 更省电 / 更香
想榨干性能就看这两处。
硬件加速:纯#video=copy用不到,要做#video=h264这类视频转码才需要。在流地址末尾加#hardware,go2rtc 会自动挑编码器(vaapi/cuda/videotoolbox 等):
streams: cam-hw: ffmpeg:rtsp://admin:pass@192.168.1.123/stream1#video=h264#hardwareDocker 想跑 NVIDIA/AMD 加速,换带hardware标签的镜像(如:latest-hardware)并加--gpus all --privileged。转完之后在 Web 界面的 net 页还能看每条连接实际吃了多少码率。
装不上 / 连不上的时候查这里
卡住别慌,按这个顺序查。
- 先确认网络通不通、摄像头能不能直连:
ping 192.168.1.123 - 再确认端口没被占着:
netstat -tlnp | grep -E "1984|8554|8555" - 地址和凭据对一遍,RTSP 账号密码写错是最常见的原因
- 浏览器打不开就翻日志:容器看
docker logs go2rtc,二进制直接看终端输出 - 跨网段或外网访问时,记得在路由器开
8555的 TCP/UDP
跑起来之后,去 Web 界面把第二路流加上,或者接进 Home Assistant / Frigate 试试低延迟回放。
【免费下载链接】go2rtcUltimate camera streaming application项目地址: https://gitcode.com/GitHub_Trending/go/go2rtc
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考