go2rtc 快速指南:把混牌子的 RTSP 摄像头统一推到 WebRTC 与多协议出口
【免费下载链接】go2rtcUltimate camera streaming application项目地址: https://gitcode.com/GitHub_Trending/go/go2rtc
家里几台摄像头,协议五花八门:大华走 RTSP,Tapo 只能走私有协议,苹果 HomeKit 又自成一套,回放还得翻各家云 APP。go2rtc 是一个纯 Go 编写、零依赖的摄像机流媒体应用:所有源统一拉进来,再按客户端能力推成 WebRTC、RTSP、RTMP、HLS、MP4、MJPEG 等格式,浏览器播放走 WebRTC 路径,延迟可做到亚秒级。
30 秒跑起来
Docker 方式最快:
docker run -p 1984:1984 -p 8554:8554 -p 8555:8555/udp -p 8555:8555 alexxit/go2rtc打开浏览器访问http://localhost:1984,在 WebUI 里添加第一路流(比如rtsp://admin:密码@192.168.1.123/stream1),保存后点击流名就能看到画面。不想装 Docker 也行,从 release 下载对应平台的二进制,Linux/macOS 上先chmod +x再直接运行。
它能帮你做什么
接入摄像头:RTSP/RTSPS、RTMP、HTTP-FLV、MPEG-TS、MJPEG、HLS 快照等公开协议直接填 URL;ONVIF 源(onvif://)能自动帮你查出摄像头真正的 RTSP 地址;HomeKit、Tapo、Wyze、Ring、Xiaomi、Tuya、Nest 等品牌私有协议也有专门模块;Linux 上还能接 USB 摄像头(v4l2)和麦克风(alsa)。
转发给不同客户端:同一路流同时以 WebRTC、RTSP、RTMP、HLS、MPEG-TS、MP4/MSE、MJPEG 等格式对外输出;支持 ingest 模式,外部程序可以往同一路流推多条输入;还能把任意流通过 RTMP/RTMPS 发布到 YouTube、Telegram 这类直播平台。
双向对讲:RTSP、Doorbird、Tapo、Ring、Wyze、Xiaomi、Tuya 等源支持双向音频,浏览器里可以直接对着摄像头喊话;反过来,把音乐或 TTS 语音推到带扬声器的摄像头上也行,相当于一个免费的门口广播。
最常用的配置
go2rtc 默认读当前目录的go2rtc.yaml,三个默认端口:API/WebUI 是 1984,RTSP 服务器 8554,WebRTC 用 8555(TCP+UDP)。最小配置就一行:
streams: hall: rtsp://admin:password@192.168.1.123/cam/realmonitor?channel=1&subtype=0streams里左边是你自己起的流名,右边是源地址;密码这类敏感信息支持写成环境变量,如${CAMERA_PASSWORD},避免明文落盘。
一个流可以写多路源,#后面是参数,用来锁定这路源输出哪些编解码器:
streams: cam1: - rtsp://admin:pass@192.168.1.123/stream1 # 视频 H265 - rtsp://admin:pass@192.168.1.123/stream2 # 视频 H264 - ffmpeg:cam1#video=copy#audio=aac # 音频转成 AACgo2rtc 会为每个客户端从所有源里挑它能播的那条轨道,这是它的核心玩法之一(进阶玩法一节细讲)。
进阶玩法
双源协商 + 硬件加速:你的浏览器只认 H264+OPUS,摄像头只吐 H265+AAC,直接播不了。把转码挂成第二路源,浏览器端会自动拿到转出来的那路:
streams: dahua: - rtsp://admin:pass@192.168.1.123/stream1 # 主源:原画质 - ffmpeg:dahua#video=h264#audio=opus#hardware # 备源:转码,硬件加速#hardware让 FFmpeg 走 GPU 编码,参数模板可在ffmpeg:配置段里覆盖。Docker 镜像和 Home Assistant 插件都预装了 FFmpeg,裸二进制自己装。
开机预热:有些摄像头冷启动很慢,第一次点开要等很久。用preload列表让 go2rtc 启动时就把流拉起来,点开即有画面。
常见坑
Q:浏览器里延迟 2~3 秒,正常吗?正常,那是 HLS/HTTP 渐进式路径。要低延迟请走 WebRTC 播放页,它才是亚秒级的通道;HLS 主要是给 iPhone 和老设备兜底的。
Q:外网 WebRTC 连不上?路由器上把 8555 端口的 TCP 和 UDP 都放通。UDP 走不通时 go2rtc 会退回 TCP 传输加密媒体,但稳定性以 UDP 为准。
Q:某台设备视频黑屏?多半是编码不匹配,典型是 H265 配老 Safari。先加过滤参数?video=h264看有没有现成的 H264 轨道,没有就按进阶玩法加一路 FFmpeg 转码源。
Q:浏览器能看,但音频推不出去?浏览器只给 HTTPS 站点麦克风权限。自托管场景把 WebUI 放到 Caddy/Nginx 等反向代理后面,配上 TLS 即可。
适合谁用
适合用 Home Assistant、Frigate 或自托管 NVR 组监控的人,适合想把不同品牌摄像头统一进一个低延迟入口、顺便实现门口对讲的玩家,也适合需要把摄像头直播推到 RTMP 平台的场景。不适合只想看云端回放、完全不想运维任何服务的用户,也替代不了需要专业安防合规的商用部署。项目地址:https://link.gitcode.com/i/e5495505eff19fc3ac559c9e11a1e368。
【免费下载链接】go2rtcUltimate camera streaming application项目地址: https://gitcode.com/GitHub_Trending/go/go2rtc
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考