10 分钟把 RTSP 摄像头接进低延迟流媒体:go2rtc 新手完整教程
【免费下载链接】go2rtcUltimate camera streaming application项目地址: https://gitcode.com/GitHub_Trending/go/go2rtc
go2rtc 是一个 Go 写的摄像头流媒体程序,一路 RTSP 进来,一个进程同时输出 RTSP、RTMP、WebRTC、HLS、MP4、HomeKit。零依赖、免费。RTSP 转 WebRTC 后浏览器直接播,实测延迟一般小于 500ms。
三种部署路径:Docker、二进制、Home Assistant 怎么选 🐳
Docker适合有服务器、要 7×24 跑的场景。镜像支持 amd64、arm64 等 5 种架构,内置 FFmpeg。一条命令启动,--network host对 WebRTC 很重要:
docker run -d --network host --restart unless-stopped -v ~/go2rtc:/config alexxit/go2rtc配置文件在~/go2rtc/go2rtc.yaml,也可以直接在 WebUI 里改。
二进制适合 PC 或迷你主机上自己玩。不用服务器,下载对应平台的可执行文件即可,Linux 和 Mac 先执行chmod +x再运行。
Home Assistant适合已经在用 HA 的朋友。在"设置 > 附加组件"里添加 go2rtc 插件仓库并安装;也可以装 WebRTC Camera 组件,它会自行下载并使用 go2rtc。
一句话建议:没服务器就选二进制,已有 HA 就选插件,要 GPU 转码就选 Docker 的alexxit/go2rtc:latest-hardware镜像。
让画面跑起来:浏览器低延迟播放与 RTSP 转 HLS 接盒子 📺
浏览器打开http://<YOUR_IP>:1984/,在编辑器里加一路摄像头,最小配置只有一行:
streams: backyard: rtsp://admin:<PASSWORD>@192.168.1.123/stream1保存后打开http://<YOUR_IP>:1984/webrtc.html?src=backyard,画面就在浏览器里播放了,这就是 RTSP 转 WebRTC。旧浏览器可以换mp4.html页面,用 MSE 播 MP4 格式。
手机或电视盒子,走内置 RTSP 服务器(8554 端口):rtsp://<YOUR_IP>:8554/backyard,多数盒子能直接播。iPhone 和智能电视走 HLS:http://<YOUR_IP>:1984/api/stream.m3u8?src=backyard。
录像存档,在 RTSP 地址后加?mp4:rtsp://<YOUR_IP>:8554/backyard?mp4,Frigate、Home Assistant 只会拿到 H264 和 AAC,适合入库。也可以直接用 ffmpeg 录http://<YOUR_IP>:1984/api/stream.mp4?src=backyard。
进阶能力速览:双向音频、FFmpeg 转码、HomeKit 接入 ⚡
- 双向音频:在 WebRTC 页面可以对摄像头那边说话。摄像头端要支持,ONVIF Profile T 的 RTSP、Tapo、海康 ISAPI、Roborock 等都可以。浏览器端需要 HTTPS 或 localhost 才会开放麦克风。
- FFmpeg 转码:H265 转 H264、旋转画面、改分辨率,给流加一路
ffmpeg:源即可。go2rtc 会在两路源里自动匹配浏览器支持的编码,原流能播就不浪费:
streams: backyard: - rtsp://admin:<PASSWORD>@192.168.1.123/stream1 - ffmpeg:rtsp://admin:<PASSWORD>@192.168.1.123/stream1#video=h264#audio=opus- HomeKit 接入:用
homekit:源把 Apple 家庭里的 HomeKit 摄像头读进来,也能把流反向写回家庭 App。 - 低延迟调优:内置自动重封装(G.711 音频转 FLAC)和重采样,不用配置。ffplay 这类 RTSP 客户端加
-fflags nobuffer -flags low_delay还能再降。
安全与调优:认证、公网 STUN、硬件加速 🔒
1984 端口对局域网开放时,谁都能看你的画面。打开 Basic 认证,并建议同时开启本地认证,防止 API 被本机请求绕过:
api: username: admin password: <PASSWORD> local_auth: true要在公网看画面,WebRTC 得知道往哪连回来。填上公网 IP,路由器同时放行 8555 的 TCP/UDP;动态 IP 就改成stun:8555:
webrtc: public: <YOUR_IP>:8555 ice_servers: - urls: [stun:stun.l.google.com:19302]转码吃满 CPU?换 Docker 的:latest-hardware镜像,支持 Intel、AMD、Nvidia 硬件加速,启动时加--privileged。标准:latest镜像则内置 Intel iGPU 和树莓派加速。
一个 Go 单文件程序,1984、8554、8555 三个端口撑起整套服务。配置字段逐条说明见 www/schema.json,协议模块总览见 internal/README.md。现在就打开 WebUI,把一路真实 RTSP 地址填进 streams,到 webrtc.html 页面看画面吧。
【免费下载链接】go2rtcUltimate camera streaming application项目地址: https://gitcode.com/GitHub_Trending/go/go2rtc
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考