恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
go2rtc 怎么配置 preload 让启动时预加载摄像头流?
首页
资讯中心
/
go2rtc 怎么配置 preload 让启动时预加载摄像头流?
go2rtc 怎么配置 preload 让启动时预加载摄像头流?
发布时间:2026/9/15 12:35:42
go2rtc 怎么配置 preload 让启动时预加载摄像头流【免费下载链接】go2rtcUltimate camera streaming application项目地址: https://gitcode.com/GitHub_Trending/go/go2rtc如果你的摄像头冷启动需要较长时间比如上电后要等十几秒才能出流可以在 go2rtc 启动时就用preload配置让指定流立即拉流这样首次访问画面时不用干等。该功能从 v1.9.11 引入internal/streams/README.md 标注 new in v1.9.11所以前提是使用 go2rtc v1.9.11 或更新版本。准备工作先在 streams 里定义好流preload的键必须是streams中已存在的流名。启动时 go2rtc 会先创建streams下的所有流再处理preload如果某个 preload 键在streams中找不到会返回streams: stream not found: name的日志错误见 preload.go 中AddPreload的校验逻辑。因此配置分两段先在streams定义流和源再在preload里引用流名。在配置文件里添加 preload 段按 internal/streams/README.md 的示例配置格式如下streams段的值换成你自己的源preload: camera1: # 不写值默认 videoaudio ANY camera2: video # 只预加载视频轨 camera3: videoh264audioopus # 预加载 H264 视频和 OPUS 音频 streams: camera1: - rtsp://192.168.1.100/stream camera2: - rtsp://192.168.1.101/stream camera3: - rtsp://192.168.1.102/h265stream - ffmpeg:camera3#videoh264#audioopus#hardware值的含义来自 schema 对preload的说明和 preload.go 的实现不写值等价于videoaudio即音视频都探测拉取video只预加载视频轨videoh264audioopus这类写法指定 codec 参数只匹配对应编码的轨。改完配置后重启 go2rtc 使配置生效。注意启动时序go2rtc 会在启动后延迟 1 秒再执行 preloadstreams.go 中time.AfterFunc(time.Second, ...)也就是说流会在进程起来约 1 秒后开始拉取不是同一步完成的。验证预加载是否生效有两条文档中给出的检查路径API 查询GET请求http://localhost:1984/api/preload会返回当前所有 preload 项见 api.go 中apiPreload的 GET 分支README.md 的 API 示例统一使用http://localhost:1984作为基地址。返回的 map 中每个流名对应一条记录含consumer探测消费者状态和query实际生效的查询串字段。WebUI 信息页internal/streams/README.md 说明在流处于活动状态时可以在 go2rtc WebUI 信息页看到活动的 producer 和 consumer。preload 创建的探测消费者在代码中命名为preloadpreload.go 中probe.Create(preload, query)所以预加载生效后信息页应能看到该流上有一个活动消费者而不需要人工打开播放页面。运行中通过 API 增删 preload可选除配置文件外/api/preload还支持运行时操作且操作会写回配置api.go 中 PUT/DELETE 分支在修改后调用app.PatchConfig持久化preload.src# 为 camera1 添加 preloadPUT 会把保留的 video/audio/microphone 参数写入配置 PUT http://localhost:1984/api/preload?srccamera1video # 移除 camera1 的 preload DELETE http://localhost:1984/api/preload?srccamera1PUT 请求只保留video、audio、microphone三个查询参数其余参数会被丢弃DELETE 会同时从内存和配置中移除该项移除不存在的流会报streams: preload not found: name。限制仅适用于启动时或运行时手动调用主动预加载的场景配置键必须与streams中的流名完全一致找不到流只会打错误日志不会中断其他 preload 的处理。文档未说明 preload 对带宽、并发拉流数的影响多路大流同时预加载时的资源占用需自行评估。【免费下载链接】go2rtcUltimate camera streaming application项目地址: https://gitcode.com/GitHub_Trending/go/go2rtc创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考