☰
5分钟上手Monibuca:从零搭建高性能流媒体服务器完整指南
2026/10/4 1:59:51 网站建设 项目流程

5分钟上手Monibuca:从零搭建高性能流媒体服务器完整指南

【免费下载链接】monibucaMonibuca(简称 m7s)是一款纯 Go 开发的开源流媒体服务器开发框架。项目地址: https://gitcode.com/langhuihui/monibuca

Monibuca(简称 m7s)是一款纯 Go 语言开发的开源流媒体服务器开发框架,支持 RTMP、RTSP、HTTP-FLV、HLS、WebRTC、GB28181、SRT 等主流协议。它采用无锁设计、内存池优化和多核计算,能实现全链路亚秒级低延迟转发,并内置录制、截图、转码、级联、监控等插件。本文将带你从零开始,快速搭建一个可用的流媒体服务器,适合新手和普通开发者阅读。

一、为什么选择 Monibuca 流媒体服务器?

在接触代码之前,先了解它能做什么:

能力说明
🚀 高性能无锁设计、内存池管理、多核计算
⚡ 低延迟0 等待转发,全链路亚秒级延迟
📦 插件化协议、功能、工具按需加载扩展
🌐 多协议RTMP / RTSP / FLV / HLS / WebRTC / GB28181 / SRT
🎬 媒体处理录制回放、截图、转码、SEI 数据处理
🔗 集群级联内置级联与房间管理,支持分布式部署
📊 运维友好Prometheus 监控、日志轮转、内置调试插件

二、环境准备:Monibuca 环境要求与安装步骤

搭建前只需准备一个 Go 环境:

  • Go 1.23 或更高版本(本项目 go.mod 声明使用 Go 1.24)
  • 基础的流媒体协议概念即可,无需其他依赖

克隆仓库(仓库地址):

git clone https://gitcode.com/langhuihui/monibuca cd monibuca

三、最快启动方法:一条命令跑起流媒体服务器

Monibuca 提供了开箱即用的示例工程,位于 example/default/ 目录,包含默认配置文件 config.yaml 和入口文件 main.go。

进入目录并运行:

cd example/default go run -tags sqlite main.go

💡-tags sqlite表示启用 SQLite 存储(纯 Go 实现,无需安装数据库)。启动后即可推流、拉流。

整个工程的核心入口非常简洁,m7s.Run会根据配置文件加载所有插件并启动服务,可以打开 main.go 查看完整写法。

3.1 启动成功后看到什么?

默认监听以下常用端口:

协议地址
HTTP 服务(Admin、FLV 等)http://localhost:8080
RTMP 推/拉流rtmp://localhost:1935
RTSPrtsp://localhost:554
SRT:6000
WebRTC(WHIP/WHEP)udp:9000-9100

用 FFmpeg 推一路测试流试试:

ffmpeg -re -stream_loop -1 -i test.flv -c copy -f flv rtmp://localhost:1935/live/test

再用任意协议播放验证:

ffplay http://localhost:8080/flv/live/test ffplay rtmp://localhost/live/test

能看到画面,说明你的 Monibuca 流媒体服务器已经跑起来了!🎉

四、Monibuca 架构图解:插件化流媒体服务器如何工作?

从架构图可以看出 Monibuca 的分层设计:

  • core(核心层):环形缓冲区、任务系统、内存池、发布-订阅、插件系统、别名系统,是性能与低延迟的根基;
  • protocol plugins(协议插件):rtmp、rtsp、webrtc、gb28181、hls、flv 等,按需引入;
  • functional plugins(功能插件):转码、级联、ONVIF、AI、SEI 等;
  • util plugins(工具插件):日志轮转、调试、监控、压测、WebHook;
  • database:可选 SQLite、MySQL、PostgreSQL、DuckDB。

详细的架构设计文档见 doc_CN/arch/index.md,其中包含 转发机制、配置机制、任务系统 等专题。

五、常用场景配置:拉流、录制、转推怎么做?

除默认配置外,example/ 目录提供了大量可直接参考的场景示例,说明文档见 example/READEME_CN.md:

  • 拉取本地文件:将 pull_flv_file.yaml 中路径改为本地 flv 文件,再执行go run -tags sqlite main.go -c ../8080/pull_flv_file.yaml,即可把文件当直播流分发;
  • 拉取远端流:修改 pull_rtmp.yaml 中的拉流地址,实现 rtmp/rtsp 拉流代理;
  • 自动录制:启用 record.yaml 配置,支持 MP4、HLS、FLV 格式录制回放;
  • 转推:两个进程分别使用 pull_flv_file.yaml 与 pull_rtmp_push.yaml 即可实现 A → B 流转发;
  • GB28181 国标对接:gb28181_server.yaml 与 gb28181_client.yaml 用于设备接入和级联平台。

所有示例通过-c 配置文件参数切换,无需修改代码,非常适合学习各协议的接入方式。

六、进阶配置:构建标签与性能监控

6.1 通过构建标签定制功能

Monibuca 支持用 Go build tag 控制可选组件:

构建标签作用
sqlite/mysql/postgres/duckdb选择数据库后端
fasthttp使用 fasthttp 替代标准 HTTP 服务器
disable_rm禁用内存池
enable_buddy开启 buddy 内存预申请

例如启用 MySQL 存储:

go run -tags mysql main.go

6.2 接入 Prometheus 监控

服务器内置/api/metrics指标接口,在 Prometheus 中加一段配置即可采集:

scrape_configs: - job_name: "monibuca" metrics_path: "/api/metrics" static_configs: - targets: ["localhost:8080"]

配合 Grafana 即可实时观察 QPS、在线流数等指标;内置的 debug 插件还支持实时性能监控与分析(源码见 plugin/debug/)。

七、下一步学习路线

到这里,你已经完成了流媒体服务器从零到可用的全部步骤。建议按以下顺序深入:

  1. 读配置:通读 example/default/config.yaml,理解 onpub/onsub/pull 等触发式配置;
  2. 看架构:阅读 架构设计文档 与 目录结构说明;
  3. 学插件:按 插件开发指南 开发自己的协议插件或功能插件;
  4. 做扩展:利用 gRPC 接口实现跨语言集成,或用 WebHook 对接业务系统。

纯 Go 技术栈、零外部依赖、单二进制部署——Monibuca 是目前上手成本最低的自建流媒体服务器方案之一。5 分钟跑通推流拉流后,你完全可以在下午就把它接入自己的直播或物联网项目。

【免费下载链接】monibucaMonibuca(简称 m7s)是一款纯 Go 开发的开源流媒体服务器开发框架。项目地址: https://gitcode.com/langhuihui/monibuca

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询