go2rtc 低延迟流媒体:从摄像头到 WebRTC
【免费下载链接】go2rtcUltimate camera streaming application项目地址: https://gitcode.com/GitHub_Trending/go/go2rtc
go2rtc 是一个零依赖、跨平台的流媒体应用,能从几十种摄像头协议拉流,并以 WebRTC、RTSP、RTMP、HLS 等协议低延迟输出。当遇到 HLS 延迟高、或需要在浏览器里把 RTSP 转成 WebRTC 播放这类场景时,单这一个二进制就能搞定。
go2rtc 解决了什么
它把"拉流、按需转码、任意协议输出"打包成一个单文件或单容器应用,默认配置只有一个 YAML,大部分字段还能在 Web UI 里直接改。
- 几十种协议,单二进制交付
- 延迟压到协议允许的最低值
- 双向音频,声音可推到摄像头
跑起来:最小可用配置
拉取源码(需要 Go 环境,也可直接使用 alexxit/go2rtc 的 Docker 镜像):
git clone https://gitcode.com/GitHub_Trending/go/go2rtc cd go2rtc在当前目录创建 go2rtc.yaml:
streams: camera1: rtsp://user:pass@192.168.x.x/stream启动服务:
go run .打开http://localhost:1984/进入 Web UI,流列表里即可看到 camera1。各服务默认端口如下:
| 端口 | 协议 | 用途 |
|---|---|---|
| 1984 | HTTP | API 与 Web UI |
| 8554 | RTSP | RTSP 输出 |
| 8555 | TCP/UDP | WebRTC 连接 |
核心能力拆解
协议转换:RTSP 转 WebRTC
输入 → 解复用为原始音视频轨 → 按协议重新封装输出。同一路流可被浏览器 WebRTC、VLC 的 RTSP、HLS 同时播放:
streams: cam: rtsp://user:pass@192.168.x.x/stream浏览器打开webrtc.html?src=cam即为低延迟预览,适合网页监控与 NVR 对接。
双向音频链路
输入是摄像头视频流,麦克风声音可以反向推给摄像头,Tapo、ISAPI(海康)、Doorbird、Ring 等设备内置支持:
streams: door1: tapo://user:pass@192.168.x.x适合门铃、对讲等需要双向通话的场景。
FFmpeg 按需管线
仅当输入输出编码不匹配时才拉起 FFmpeg 转码,视频、音频可各配一套模板:
streams: file: ffmpeg:/media/sample.mp4#video=h264 rotate: ffmpeg:rtsp://user:pass@192.168.x.x/s#video=h264#rotate=90适合文件回放、画面旋转、音频转码等边缘需求。
落地场景与进阶技巧
- 智能家居:以 Home Assistant 插件接入,与现有平台统一管理
- NVR 监控:多路 RTSP 源统一预览、回放与 HLS 分发
- 直播源:把本地视频流推送到 YouTube、Telegram 等平台
进阶技巧:
- 换
latest-hardware镜像启用硬件转码 - 把多路源的音轨混到同一视频流
- 给 API 配 Basic 认证保护视频流
排障速查
| 症状 | 原因 | 操作 |
|---|---|---|
| 流加入后无画面 | 凭据错误或源不可达 | 核对凭据,ffprobe 测试连通性 |
| 有视频无音频 | 音频编码不匹配 | 追加#audio=copy转码 |
| 转码时 CPU 高 | 纯软件编码 | 换硬件加速镜像 |
| WebRTC 无响应 | UDP 8555 端口被拦 | 放行 8555 的 TCP/UDP |
下一步:打开 website/api/openapi.yaml 查看全部配置字段,对照自己的 go2rtc.yaml 逐项映射。
【免费下载链接】go2rtcUltimate camera streaming application项目地址: https://gitcode.com/GitHub_Trending/go/go2rtc
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考