
go2rtc 摄像头流统一管理5步把一路摄像头接进浏览器【免费下载链接】go2rtcUltimate camera streaming application项目地址: https://gitcode.com/GitHub_Trending/go/go2rtc家里 NAS 上跑着 RTSP 的海康摄像头走廊的 Tapo 只走私有云协议门口还有一台 HomeKit 摄像头想在手机上全部看一遍原本得装三个 App。go2rtc 做的事情就是摄像头流统一管理把这些不同协议、不同厂商的源按同一套格式拉进来再统一从 RTSP、WebRTC、HLS、MJPEG 等出口播出去。它用 Go 写的核心是一个独立二进制文件。为什么选 go2rtc总述一句话它把接入摄像头和播出视频两端都做成可插拔模块中间不需要常驻的转码服务。零外部依赖Windows、macOS、Linux、FreeBSD 都有对应二进制树莓派这种低功耗设备也能跑协议覆盖面广输入端支持 RTSP、RTMP、MJPEG、ONVIF、HLS 等公开协议以及 HomeKit、Tapo/Kasa、小米、Wyze、Tuya、Ring 等私有协议输出端覆盖 WebRTC、RTSP、RTMP、HLS、MJPEG、MP4/MSE、MPEG-TS、ONVIF 等按需转码只有客户端编解码器不匹配时才调用 FFmpeg 转码其余情况直接转发原始码流所有模块的完整清单可以看 internal/README.md。 一条命令部署Docker 跑起来 go2rtc用 Docker 是多数人的最省事路径镜像里已预装 FFmpeg 和 Python多架构amd64、arm64、arm/v7 等都有docker run -d \ --name go2rtc \ --network host \ --restart unless-stopped \ -v ~/go2rtc:/config \ alexxxit/go2rtc其他路径各一句话直接去 Releases 下载对应系统的二进制并chmod x即可运行Home Assistant 用户可装官方 add-on 或 WebRTC 集成需要最新特性时用alexxit/go2rtc:master镜像。▶️ 最小配置跑通第一路流在项目目录放一个go2rtc.yaml只写streams就够streams: doorbell: rtsp://admin:password192.168.1.100:554/Streaming/Channels/101 hall: http://192.168.1.101:8080/video启动后会发生这些事API 服务默认监听 1984 端口RTSP 服务器监听 8554TCPWebRTC 监听 8555TCP/UDP。打开浏览器访问http://localhost:1984进入 streams 页面点一下摄像头名称就能直接播放页面会根据浏览器能力自动协商用 WebRTC 还是 HLS。同一路流还可以这样取rtsp://127.0.0.1:8554/doorbell—— 给 Frigate、VLC 等传统客户端http://127.0.0.1:1984/hls/doorbell.m3u8—— 给 iOS Safarihttp://127.0.0.1:1984/mjpeg/doorbell—— 给只需要 JPEG 快照的场景Web 配置页带语法高亮和校验改完立即生效不用重启。⚙️ 进阶玩法转码、双向语音与硬件加速转码与缩放一个流可以配多个源。给不友好的 H.265 源追加一条 ffmpeg 源浏览器就能播streams: cam4k: - rtsp://admin:password192.168.1.100:554/stream1 - ffmpeg:rtsp://admin:password192.168.1.100:554/stream1#videoh264#audioopus#width1280#height720#width/#height控制缩放#video/#audio指定目标编解码器细节见 internal/ffmpeg/README.md。双向语音Tapo/Kasa、小米、Wyze、Tuya、Ring、海康 ISAPI 以及带音频通道的 RTSP 流都支持双向语音浏览器里用 WebRTC 页面就能对讲。注意一点浏览器要求站点是 HTTPS 才允许调麦克风所以要走 Web 对讲就得配证书。硬件加速与推流转码时加#hardware标记即可启用 VAAPI、NVENC、VideoToolbox 等硬件加速ARM 平台有专门的硬件加速构建参考 docker/hardware.Dockerfile。另外任何一路流都可以通过 RTMP/RTMPS 发布到 YouTube、Telegram 这类平台也可以把多路源合并成一个流写法见 internal/streams/README.md。网络监控看清每一条连接Web 界面的 Net 页把所有活动连接画成一张拓扑图能看到每条连接的 IP、格式、协议、包数和字节数通过 HTTP API 还能以 JSON 或 DOT 格式取同一份数据方便接进自己的监控面板。排查这路流到底走了哪条链路、谁在拉时这一页比翻日志快得多。 踩坑指南4个高频问题的解法手机上播不了PC 上正常。多半是摄像头只出 H.265而多数浏览器尤其 iOS Safari解不了 HEVC。解法按上面的进阶写法给这路流追加一条#videoh264的 ffmpeg 源让 go2rtc 只对该流做转码。第一帧黑屏或拉流要等很久。流是按需加载的部分摄像头冷启动慢。解法在配置里给该流开 preload让 go2rtc 启动时就把流拉起来见 internal/streams/README.md。浏览器里麦克风按钮是灰的。浏览器安全策略要求 HTTPS 才授权麦克风。解法前面挂一层反向代理加证书走 HTTPS 访问 1984 端口。转码时 CPU 飙高。软件转码是主要原因。解法加#hardware启用硬件加速或用#width/#height降低目标分辨率实在不行就减少需要转码的流数量——能直转的流不要多配 ffmpeg 源。下一步go2rtc 的价值在于把几十种摄像头协议收敛成一套统一的流管理而把单一路流从配置到浏览器播放走通全程只用到一份 3 行的 YAML。今天就做一件事挑出家里最旧、最不方便看的那路摄像头用上面的最小配置把它加进streams然后在 WebRTC 页面看它动起来。【免费下载链接】go2rtcUltimate camera streaming application项目地址: https://gitcode.com/GitHub_Trending/go/go2rtc创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考