Monibuca流别名(Stream Alias)实战:1行配置实现多路径访问同一视频流 Monibuca流别名Stream Alias实战1行配置实现多路径访问同一视频流【免费下载链接】monibucaMonibuca简称 m7s是一款纯 Go 开发的开源流媒体服务器开发框架。项目地址: https://gitcode.com/langhuihui/monibucaMonibuca简称 m7s是一款纯 Go 开发的开源流媒体服务器开发框架其内置的**流别名Stream Alias**功能堪称流路径管理神器只需 1 行 YAML 配置或一条 HTTP 请求就能让同一路视频流被多个不同路径访问还能实现直播中无缝切换广告、导播台式的流内容替换全程观众无感知。 流别名能解决什么痛点在直播、视频监控、导播等业务中你经常会遇到这些场景路径太长内部流路径是live/camera-10086/2026-10-03想给客户端一个短路径live/main路径要变前端域名或业务目录调整客户端地址不能动希望服务端悄悄把流搬到新路径无缝插播直播中插入广告希望观众停留在固定地址上内容在直播流 ↔ 广告流之间无缝切换不黑屏、不卡顿、无需刷新播放器。Monibuca 的流别名功能就是为此设计的它为同一路上行流建立别名映射所有拉流RTMP、RTSP、HTTP-FLV、HLS、WebRTC 等协议统一按别名解析一次配置多路径直达。 方式一1 行配置正则别名开箱即用在 Monibuca 的全局配置中StreamAlias字段是一个正则表达式 → 目标流路径的映射见 server.go 中的ServerConfig定义global: streamAlias: ^cam/(\d)$: live/camera-$1就这 1 行它的含义是任何人拉流cam/101时服务器自动将其解析为真实流live/camera-101$1等分组引用让一条规则覆盖整个系列流无需为每路流单独配置。其核心逻辑在 alias.go 的processAliasOnStart中订阅路径未命中普通流时依次匹配StreamAlias中的正则规则命中后动态生成别名并建立持久化映射。配置机制说明可参考 doc_CN/arch/config.md。 提示正则别名在第一次有客户端访问时被物化为一条真实的别名记录之后便与 API 创建的别名享受完全相同的能力。 方式二HTTP API 动态管理别名不想改配置文件重启Monibuca 提供了标准 REST API接口定义见 pb/global.proto① 创建/修改别名——POST /api/stream/aliascurl -X POST http://localhost:8080/api/stream/alias \ -H Content-Type: application/json \ -d {streamPath: live/camera-101, alias: live/main, autoRemove: false}② 查询别名列表——GET /api/stream/alias/list{ code: 0, data: [ {streamPath: live/camera-101, alias: live/main, autoRemove: false, status: 1} ] }③ 删除别名—— 只传alias、不传streamPath即可curl -X POST http://localhost:8080/api/stream/alias \ -H Content-Type: application/json \ -d {alias: live/main}其中status字段表示别名当前状态1表示已关联到正在推流的 Publisher2表示存在同名原始流见 alias.go 中的GetStreamAlias实现。 实战直播无缝插播广告导播级玩法这是流别名最杀手级的应用——固定观众地址后端随时换内容创建别名指向主直播流alias: live/show→streamPath: live/main需要插播广告时同一个别名改指向广告流streamPath: ads/ad1广告播完再把别名切回live/main。# 插入广告同一别名秒级改指向观众无感知 curl -X POST http://localhost:8080/api/stream/alias \ -d {streamPath: ads/ad1, alias: live/show, autoRemove: false}切换瞬间Monibuca 会自动把订阅该别名的所有客户端平滑转移到新流TransferSubscribers机制见 alias.go 的processAliasOnStart主播端推流完全不受影响。配合autoRemove: true还能让临时别名在流结束后自动清理防止资源泄漏。完整案例与广告轮播脚本见 doc_CN/stream_alias_usage.md。⚙️ 三大关键机制详解持久化存储配置了数据库后别名会写入stream_alias表StreamAliasDB模型见 alias.go重启服务器后自动恢复server.go 的initStreamAlias无需担心配置丢失断流自愈原始流中断时别名依然占位。等新的 Publisher 重新推上来别名自动接管并唤醒等待中的订阅者观众侧体验为短暂重连而非流不存在参数透传别名支持携带 URL 查询参数订阅时客户端参数会覆盖别名保存的同名参数alias.go方便做鉴权、时移等细粒度控制。❓ 常见问题FAQQ切换流时观众会卡顿吗A不会。别名切换是纯服务器端操作订阅者被整体迁移到新 Publisher播放器地址始终不变。Q正则别名和 API 创建的别名有什么区别A正则别名是声明式的写在配置里、批量生效API 别名是实例式的针对单路流、可动态增删。二者可混合使用API 别名优先级更高。Q支持同时存在多少个别名A理论上无硬性限制内部采用高效的并发安全映射结构建议按业务实际需要合理创建并及时清理。 相关资料功能源码alias.go技术实现文档doc_CN/arch/alias.md使用指南与广告实战doc_CN/stream_alias_usage.mdAPI 协议定义pb/global.proto数据库设计含stream_alias表doc_CN/arch/db.md一行配置让流媒体地址管理从此轻装上阵——快给你的 Monibuca 加一条流别名试试吧【免费下载链接】monibucaMonibuca简称 m7s是一款纯 Go 开发的开源流媒体服务器开发框架。项目地址: https://gitcode.com/langhuihui/monibuca创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考