尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

如何用 go2rtc 搭建低延迟流媒体网关:3 步接入多品牌摄像头

如何用 go2rtc 搭建低延迟流媒体网关:3 步接入多品牌摄像头 如何用 go2rtc 搭建低延迟流媒体网关3 步接入多品牌摄像头【免费下载链接】go2rtcUltimate camera streaming application项目地址: https://gitcode.com/GitHub_Trending/go/go2rtc深夜门铃响了你摸出手机点开监控 App画面转了 3 圈才出来。更糟的是门口是海康、后院是小米、门铃是 Tapo三个品牌三套 App延迟还各不相同。能不能用一个软件把摄像头统一收进来浏览器打开就能看、延迟压进 1 秒go2rtc 正是为此而生。这款用 Go 写的流媒体网关单个二进制文件零依赖支持 RTSP、ONVIF、WebRTC 等十几类协议一端接入摄像头另一端按客户端能解码的格式吐出画面全程低延迟、可双向语音。项目速览卡它是什么一个自托管的流媒体网关把各路视频源统一接收、转换、分发的中间层单文件即可运行解决什么多协议摄像头接入、浏览器零插件播放、双向对讲、按需转码适合谁家里有 2 台以上摄像头的人、Home Assistant 智能家居玩家、想给自有应用加视频能力的开发者上手成本不需要数据库、不需要 Nginx写一个 YAML 文件就能跑这张官方架构图一眼就能看懂它的定位左侧是各种输入协议中间一个 go2rtc 节点右侧是浏览器、RTSP 播放器、YouTube 等输出目标。你不需要理解每种协议的细节交给它就够了。零基础三步走当天跑通第 1 步拿到二进制从项目 Releases 页面下载对应平台的包。Linux 桌面机选go2rtc_linux_amd64树莓派选go2rtc_linux_arm64Windows 选go2rtc_win64.zip。下载后赋予执行权限chmod x go2rtc_linux_amd64这条命令把文件标记为可执行。软件是编译好的单文件约 20MB没有安装步骤。第 2 步写一个最小配置文件在同一个目录新建go2rtc.yamlapi: listen: :1984 streams: hall-camera: rtsp://admin:password192.168.1.123:554/cam/realmonitor?channel1subtype0这段配置声明了一个叫hall-camera的流数据源是摄像头提供的 RTSP一种实时视频流传输协议地址。第 3 步启动并验收./go2rtc_linux_amd64看到日志输出后浏览器打开http://localhost:1984/。你会看到一个深色 Web 界面左侧列出hall-camera点进去就能看到实时画面。✅ 到这里最小可用部署已经完成接下来逐个拆解核心能力。核心能力逐个拆解能力一多协议接入一个 YAML 搞定go2rtc 最值钱的输入能力在于协议吞噬。同一份配置里可以混写不同类型的数据源streams: dahua: rtsp://admin:password192.168.1.100:554/stream onvif01: onvif://admin:password192.168.1.101?subtypeMediaProfile00000 tapo: tapo://admin:password192.168.1.102 local: exec:ffmpeg -re -i /tmp/demo.mp4 -c copy -f flv -这段配置把 RTSP、ONVIF、Tapo 私有协议和本地文件四种来源统一成一个流列表。运行后你会注意到Web 界面里每路流都能点开协议差异被完全抹平。能力二浏览器零插件播放延迟低于 1 秒RTSP 无法被浏览器直接播放传统做法是转成 HLS苹果系主推的分段直播格式代价是数秒延迟。go2rtc 默认优先走 WebRTC浏览器原生支持的点对点实时通信技术画面直达几乎无缓冲http://localhost:1984/stream.html?srchall-cameramodewebrtc这段 URL 的作用是指定用 WebRTC 方式播放某路流。你会注意到延迟肉眼几乎感觉不到门铃响起时画面同步出现。能力三双向音频直接对讲很多摄像头支持往扬声器播放声音但各家实现方式完全不同。go2rtc 把它统一成了一个开关http://localhost:1984/webrtc.html?srchall-cameramediavideoaudiomicrophone这段 URL 会在页面里开启麦克风采集把你的声音送到摄像头喇叭。前提是摄像头协议支持双向音频RTSP、ONVIF、Tapo、Wyze 等多数品牌都行浏览器还须在 HTTPS 下才能授权麦克风。能力四按需转码只在必要时动手go2rtc 内置了轻量处理比如把老摄像头的 PCMA 音频自动重打包成 FLAC让手机也能出声。重活则交给 FFmpegstreams: h265-camera: - rtsp://admin:password192.168.1.110:554/stream - ffmpeg:h265-camera#videoh264#audioaac这段配置把 H.265高压缩但兼容性差的视频编码源交给 FFmpeg 转成 H.264音频转成 AAC。效果是老浏览器、旧电视盒子也能流畅播放原本不支持的画面。能力五多源合并自动协商编码同一路流可以挂多个来源go2rtc 会根据客户端能力自动挑选可用源streams: doorbell: - rtsp://admin:password192.168.1.150:554/stream - ffmpeg:rtsp://admin:password192.168.1.150:554/stream#audioopus这段配置给门铃追加了第二个带高质量音频的来源。当浏览器不支持摄像头原始音频编码时它会自动切到 Opus 这个来源全程无需人工干预。实战串联案例Docker 一步搭起家庭监控平台把上面所有能力组合起来最省事的落地方式是 Docker。一条命令即可启动docker run -d --namego2rtc --restartunless-stopped \ -p 1984:1984 -p 8554:8554 -p 8555:8555 \ -v /opt/go2rtc/config:/config \ alexxit/go2rtc这条命令把容器跑在后台映射了 Web 界面、RTSP 和 WebRTC 三个端口并挂载配置目录。镜像自带 FFmpeg转码开箱即用。启动后把go2rtc.yaml放进/opt/go2rtc/config然后依次做三件事打开http://localhost:1984/config在带语法高亮的编辑器里核对配置参考下图打开http://localhost:1984/net看实时拓扑确认每路流的码率与连接数都正常再访问http://localhost:1984/stream.html?srchall-camera把链接投到电视或平板上配置界面支持实时保存与语法校验改完即生效无需重启容器。网络拓扑图会实时显示每个连接传输的字节数与码率。你会看到浏览器、摄像头、HomeKit 等节点如何被 go2rtc 串起来排障时一图胜千言。经验之谈常见误区与避坑误区一配置完直接暴露公网很多人把 1984 端口映射到公网方便在外查看。这很危险——API 能执行任意 FFmpeg 命令等于把服务器钥匙交给别人。正确做法是先把监听地址改成仅本机再用带登录的反向代理转发api: listen: 127.0.0.1:1984这段配置让 API 只在本机可访问外网必须经过你布置的带认证的反向代理。误区二H.265 摄像头在手机上黑屏H.265 压缩率高很多摄像头默认输出它但旧版 iPhone 和部分浏览器不支持。很多人误以为 go2rtc 坏了。正确做法是追加一个 FFmpeg 转码源见能力四或在请求 URL 上加编码过滤http://localhost:1984/api/stream.m3u8?srch265-cameravideoh264这段 URL 对 HLS 输出强制限定 H.264 编码播放器不支持 H.265 时也能看到画面。误区三WebRTC 连不上只怀疑 STUN外部网络看不了画面时先确认 8555 端口的 TCP 和 UDP 都已放行。STUN打洞服务器默认已内置 Cloudflare、Google 各一个多数情况不用改。误区四给所有流都套 FFmpeg转码吃 CPU能直接播放的流就别转。go2rtc 只有客户端解码不了时才需要转码先让它自动协商确认无解再上 FFmpeg。高频疑问速答Qgo2rtc 需要数据库或外部服务吗不需要。单二进制、一个 YAML零依赖。Q能同时推流给多个客户端吗能。一路输入可被任意多客户端消费各自独立。Q支持把流推给 YouTube、Telegram 吗支持。配置publish段写上 RTMP 地址即可。Q摄像头没有 RTSP 接口怎么办可试 ONVIF、Tapo 等协议都不行就用 FFmpeg 抓取。Q延迟最低能做到多少走 WebRTC 时低于 1 秒视网络与摄像头而定。Q可以和 Home Assistant 一起用吗可以官方提供 Add-on 与集成Frigate 也内置了它。Q日志提示权限不足怎么解给摄像头账号足够的访问权限必要时换主码流地址测试。调优与扩展性能调优启用硬件转码可显著降低 CPU 占用。Linux 上若核显支持 VAAPIffmpeg: hwaccel: vaapi vaapi_device: /dev/dri/renderD128 streams: hi-res: - rtsp://admin:password192.168.1.100:554/stream - ffmpeg:hi-res#videoh264#hardware这段配置让 FFmpeg 用核显做 H.264 转码CPU 占用可降一个数量级。进阶玩法用preload段在启动时预热启动慢的摄像头开门即出图用POST /api/streams?dst...src...接口把音频文件推给门铃播放做语音提醒用expr或echo脚本动态解析摄像头地址适配会变 IP 的场合单机不够时多实例 go2rtc 之间用 WebTorrent 协议互相拉流做分布式转发行动清单花 10 分钟按零基础三步走跑通第一路流体验浏览器零延迟播放把家里所有摄像头写进streams段试试多协议混接与双向对讲想深入源码的话可以拉取仓库研究git clone https://gitcode.com/GitHub_Trending/go/go2rtc你与一个软件管全家摄像头之间只差一个配置文件。【免费下载链接】go2rtcUltimate camera streaming application项目地址: https://gitcode.com/GitHub_Trending/go/go2rtc创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表