
go2rtc 实战指南5 分钟接入多品牌摄像头浏览器里用 WebRTC 播放 RTSP【免费下载链接】go2rtcUltimate camera streaming application项目地址: https://gitcode.com/GitHub_Trending/go/go2rtc假设你家里有海康的阳台摄像头、Reolink 的门口摄像头和 TP-Link 的客厅摄像头取流地址和协议各不相同但你希望在一个浏览器里同时看这三路。go2rtc 是一个零依赖的摄像头流媒体应用它把 RTSP摄像头常用的取流协议等格式收进来再以 WebRTC、MP4、HLS 等形式同时输出给客户端需要换编码时还能顺手完成转码。适合谁用一句话定位go2rtc 是一个单二进制应用启动后同时是 RTSP 服务器、WebRTC 信令服务、RTMP/HLS 输出服务和 Web 管理页面。它适合三类人混合品牌摄像头的用户不用为每个品牌装专用客户端统一收流、统一输出。跑 Frigate 或 Home Assistant 的人两者都需要稳定的 RTSP 源而 go2rtc 可以在树莓派这类低配机器上运行。开发者通过 HTTP API 把摄像头流集成进自己的平台不用自己写协议层。与基于 FFmpeg 的转发脚本相比它的多数协议转换不经过转码延迟保持在亚秒级。用 Docker 5 分钟配通第一路摄像头Docker 镜像已预装 FFmpeg一条命令即可启动docker run -d --name go2rtc \ --network host --privileged \ --restart unless-stopped \ -e TZAsia/Shanghai \ -v ~/go2rtc:/config \ alexxit/go2rtc--network hostWebRTC、HomeKit 和 UDP 摄像头都需要宿主机网络。--privileged仅在 FFmpeg 硬件转码时需要。-v ~/go2rtc:/config挂载存放 go2rtc.yaml 的目录文件可在 WebUI 在线编辑。启动后 go2rtc 默认监听三个端口1984Web 界面与 API、8554RTSP 服务器、8555WebRTCTCP/UDP。打开http://localhost:1984在配置页添加第一路流streams: living-room: rtsp://admin:password192.168.1.100:554/stream1保存并重启后访问http://localhost:1984/stream.html?srcliving-room画面就会出现。页面会自动选择当前浏览器支持的播放方式和编码。一源多出同一路摄像头在浏览器里的四种播法同一个源可以用不同格式同时观看不需要额外配置把流名拼进对应路径即可WebRTC延迟最低支持双向音频/api/webrtc?srcliving-roomMP4 渐进流/api/stream.mp4?srcliving-roomHLSiPhone Safari 的必选项/api/stream.m3u8?srcliving-roomRTSPrtsp://127.0.0.1:8554/living-room截图/api/frame.jpeg?srcliving-roomWebRTC 和 MP4 路径会自动协商客户端支持的编码。RTSP 和 HLS 输出如果想限定编码可以加过滤器例如rtsp://127.0.0.1:8554/living-room?mp4只输出 H264/H265/AAC适合录制场景。加一路 FFmpeg 转码源解决编码不匹配一个常见场景摄像头只输出 H265 视频音频是 PCMU低质量的 G.711 编码不少浏览器直接播不了。做法是保留原生 RTSP 源再挂一路 FFmpeg 转码源streams: doorbell: - rtsp://admin:password192.168.1.200:554/stream1 - ffmpeg:rtsp://admin:password192.168.1.200:554/stream1#audioopusgo2rtc 会拿客户端支持的编码逐个源比对自动挑出可播的那一路FFmpeg 只在有人观看时才启动。这种多源双工编码协商是项目的核心能力之一浏览器麦克风送来的声音也能转给摄像头喇叭播放。WebUI 的 Net 页会画出所有活跃连接的拓扑图标注每条链路用到的编码和流量排查问题时一眼能看出每路连接走的是哪条链路。生态组合把 go2rtc 接进 Home Assistant 和 FrigateHome Assistant2024.11 之后的版本内置 go2rtc 集成配置里的摄像头会直接以 WebRTC 播放延迟比传统 HLS 低得多。也可以装官方 add-on自带 WebUI 和持久化配置。Frigate0.12 之后以 go2rtc 作为流源把rtsp://127.0.0.1:8554/流名?mp4作为 detect 输入录制文件就是 MP4 兼容编码AI 检测与回放各取所需。OpenIPC这个开源摄像头固件直接内置了 go2rtc摄像头本机就能对外暴露多种协议省去中间一台服务器。踩坑与调优延迟、H265 兼容和端口安全浏览器里画面延迟明显多半是客户端或播放器缓冲。用ffplay -fflags nobuffer -flags low_delay测试真实延迟VLC 把缓存调到最低日常观看优先选 WebRTC 播放路径。H265 流在手机和部分浏览器播不了客户端不支持 H265iPhone 要到 Safari 17.1 才支持。给 RTSP 链接加?mp4过滤器或增加一路#videoh264的 FFmpeg 源。开启转码后 CPU 升高软件转码占用算力。换用alexxit/go2rtc:latest-hardware镜像启用硬件加速WebUI 的添加页可以查看当前设备可用的加速能力。局域网任何人都能看画面默认 1984、8554、8555 三个端口无鉴权。把api.listen和rtsp.listen绑到127.0.0.1只保留 8555 用于 WebRTC 媒体传输该通道本身加密。RTSP 录制的文件没有音频PCMA/PCMU 放不进 RTSP 容器。go2rtc 会自动把它们打包成 FLAC 输出到 MP4/HLS如果走 RTSP 录制转码成 AAC 即可。下一步先加第二路不同品牌的摄像头对比 WebRTC 与 MSE 两种播放方式的延迟需要录像或 AI 检测时接入 Frigate 并使用?mp4过滤器。各协议模块的细节可以看仓库内的 internal/README.md。【免费下载链接】go2rtcUltimate camera streaming application项目地址: https://gitcode.com/GitHub_Trending/go/go2rtc创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考