ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

go2rtc 完整指南:多协议摄像头流统一输出 WebRTC,一条 Docker 命令跑起来

go2rtc 完整指南:多协议摄像头流统一输出 WebRTC,一条 Docker 命令跑起来 go2rtc 完整指南多协议摄像头流统一输出 WebRTC一条 Docker 命令跑起来【免费下载链接】go2rtcUltimate camera streaming application项目地址: https://gitcode.com/GitHub_Trending/go/go2rtc门口铃是 Tapo 私有协议客厅摄像头走 RTSP家里还有台 HomeKit 摄像头——三部手机要开三个 App 才能看全。go2rtc 把这些来源统一收进一个流媒体服务器再以 WebRTC、RTSP、HLS 等形式分发给浏览器、Home Assistant 或 NVR。一句话定位零依赖的单一流媒体服务器一个用 Go 写成的单文件应用无任何运行时依赖Windows、macOS、Linux、FreeBSD 都能跑树莓派级别的设备也带得动。适合需要把多品牌摄像头统一接进浏览器、Home Assistant、Frigate 的人。与大多数协议网关的本质区别它不是简单转发。go2rtc 会把客户端能解的编解码器和源里携带的编解码器自动匹配只有匹配不上时才拉起 FFmpeg 转码且只转码需要的轨道。工作原理一句话在配置里给每路流定义一个或多个来源有人播放时它拉流再从 RTSP 服务器、WebRTC 服务器、HTTP 端点等出口按需分发。最快部署一条 Docker 命令官方推荐 Docker 部署镜像预装 FFmpeg覆盖 amd64、386、arm/v6 到 arm64 各架构docker run -d \ --name go2rtc \ --network host \ --privileged \ --restart unless-stopped \ -v ~/go2rtc:/config \ alexxit/go2rtc--network host对 WebRTC 和 UDP 摄像头是必需的--privileged只在需要 FFmpeg 硬件转码时才用。启动后打开http://localhost:1984就是 Web 管理界面。其他途径一句话带过也可从 release 下载对应平台的二进制直接运行Linux/macOS 记得chmod xHome Assistant 有官方 add-on想改源码就git clone https://gitcode.com/GitHub_Trending/go/go2rtc后go build。最小可运行配置一行 streams 就够streams: front_door: rtsp://admin:password192.168.1.123/cam/realmonitor?channel1subtype0streams:下面每一项就是流名: 来源流名会出现在 WebUI 和所有输出 URL 里值就是视频源这里是海康/大华风格的 RTSP 地址不写其他任何配置时默认 api 监听1984WebUI 和 HTTP API、RTSP 服务器监听8554、WebRTC 使用8555TCP/UDP。也就是说这一行写完VLC 或 FFmpeg 就能拉rtsp://localhost:8554/front_door浏览器能打开 WebUI 播放。密码不想明文写可用环境变量替换如${CAMERA_PASSWORD}。配置随时能在 WebUI 里直接编辑自带语法高亮和 schema 校验从输入到输出流怎么进、又怎么出结论先行所有流都是来源进、协议出输入和输出互相独立。数据源怎么接进来写在 streams 的值里来源类型写法示例说明RTSP / RTSPSrtsp://、rtsps://绝大多数摄像头的主协议RTMPrtmp://192.168.1.10/live/cam部分摄像头如 ReolinkONVIFonvif://user:passip自动查询出 RTSP 地址MJPEG / HTTPhttp://ip/snapshot传统快照流WebRTCwebrtc:ws://…、WHEP3D 打印机、Kinesis 等私有协议tapo:、wyze:、xiaomi:、homekit:等Tapo/Kasa、Wyze、小米、Tuya、Ring、Roborock、Doorbird、Nest 等直接可写本地设备v4l2:、alsa:USB 摄像头、Linux 音频采集FFmpeg / execffmpeg:任意地址#参数文件、动态 URL、USB 设备兜底方案能以什么形式输出到哪里WebRTC 服务器 :8555—— 浏览器延迟最低支持双向音频RTSP 服务器 :8554—— 供 NVR、Frigate、Home Assistant 拉取HTTP 端点 :1984——stream.mp4MSE/渐进式、stream.m3u8HLSiPhone 唯一选择、stream.flv、stream.mjpg、frame.jpeg抓拍ONVIF 服务器、HomeKit接入苹果家庭、WebTorrent、JPEG 快照Ingest 反向推流—— 外部程序可把 rtmp/rtsp/webrtc/mjpeg 等流推进 go2rtc。一个细节值得知道WebRTC 和 MSE 会自动探测浏览器支持的编码RTSP、HLS 做不到需要在 URL 上加过滤参数如rtsp://localhost:8554/front_door?videoh264audioaac或加?mp4输出 H264/H265AAC 的 MP4 兼容流适合录像。每条连接的 IP、协议、字节数都能在 WebUI 的实时连接图上看到三个最实用的配置组合1. 摄像头音频编码和浏览器不匹配加一路 FFmpeg 源比如摄像头音频是 AAC浏览器 WebRTC 只收 OPUS/PCMU/PCMA加上转码源后 go2rtc 会为每个客户端在多路来源里自动挑兼容轨道streams: doorbell: - rtsp://admin:password192.168.1.123/cam/realmonitor?channel1subtype0 - ffmpeg:rtsp://admin:password192.168.1.123/cam/realmonitor?channel1subtype0#audioopus这种多来源多编码协商是它区别于转发器的核心能力。2. NAS 上做硬件加速转码给 ffmpeg 源追加#videoh264#hardware即可走 GPUIntel iGPU、树莓派用标准镜像NVIDIA/AMD 换latest-hardware镜像Docker 需--privileged。硬件加速默认关闭不显式写#hardware不会生效。效果CPU 占用明显下降输出统一为到处可播的 H264。3. 推流到 Telegram / YouTube在配置里声明 publish 目标要求流为 H264AAC通常先经ffmpeg:…#videoh264#audioaac转码publish: mystream: rtmps://xxx-x.rtmp.t.me/s/你的推流密钥顺带一提支持双向音频的摄像头还能通过 API 反向播放本地音频文件或电台流详见 internal/streams/README.md。实用要点调优、安全与弱设备延迟RTSP 播放卡顿大半是播放器缓冲造成的用ffplay -fflags nobuffer -flags low_delay rtsp://localhost:8554/front_door验证服务器端延迟适用于支持该参数的客户端。安全默认 1984、8554 端口对局域网无鉴权开放内网有不可信设备时把api和rtsp的listen改成127.0.0.1:端口WebUI 交给 Nginx 等反向代理加认证WebRTC 的 8555 保持外可达但媒体是加密的。硬件加速只在视频转码时才有意义只转发无 ffmpeg 源或#videocopy时开启反而徒增风险按需加#hardware。弱设备树莓派、低端 NAS预览和 AI 检测源用子码流subtype1录像用主码流同时处理的流数量保持克制。排障log:下可按模块设级别如rtsp: trace单独追踪一个模块而不刷屏。出问题时的速查表现象可能原因处理方法浏览器播放提示编码不兼容源是 H265客户端不支持换 H264 子码流或加#videoh264转码源局域网正常、外网 WebRTC 连不上路由器没放行 8555开放 8555 的 TCP 和 UDP双向音频打不开麦克风浏览器仅允许 HTTPS 站点取麦克风给 WebUI/播放页加 TLS 反向代理画面偶发丢包、卡顿摄像头 RTSP 实现质量差改用ffmpeg:源接入或换子码流启动后摄像头迟迟出不了流冷启动连接慢被超时踢掉用preload:让 go2rtc 启动时预拉流适合谁以及第一步家里有多品牌摄像头、又不想为每装一台就多开一个 App 的人它都值得装一个。建议按顺序做三件事用上面的 Docker 命令部署把一台 RTSP 摄像头写进go2rtc.yaml打开http://localhost:1984确认 WebRTC 播放正常遇到播不出来的摄像头先查 WebUI 信息页的编码列表再对照速查表处理。【免费下载链接】go2rtcUltimate camera streaming application项目地址: https://gitcode.com/GitHub_Trending/go/go2rtc创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进