初见 Monibuca

Monibuca 是一个由国人主导开发的高性能、模块化、插件化的音视频服务器框架 ,使用 Go 语言编写,广泛用于流媒体直播、录播、转码、HLS/FLV 推流分发、WebRTC 网关等应用场景。


🧭 一、前因:为什么要做 Monibuca?

背景:

传统的流媒体服务器(如 SRS、nginx-rtmp、Wowza)存在一些问题:

问题 描述
📦 固定功能 要支持新的协议或处理逻辑很难改动
🧩 插件扩展性差 不支持按需加载模块,定制开发复杂
🐢 性能瓶颈 多数用 C/C++ 写,编译难调,性能未必优
🌐 云原生不友好 不适配容器化和微服务部署场景

动机:

作者 langhuihui(浪辉辉)从早期使用 SRS、nginx-rtmp、自己写过 RTMP server 等经验中意识到:

需要一个 以插件为核心架构的流媒体内核,支持热插拔、热配置、高并发,并为未来云原生环境打好基础。

于是:Monibuca 出生了。


🏗 二、项目核心理念

✨ 核心特性

特性 描述
📦 插件架构 所有功能都通过插件注册,比如 HLS、RTMP、录制、WebRTC
🧩 动态加载 插件可按需启用,模块化清晰
🚀 高并发 基于 Go 高性能协程模型,事件驱动架构
🔁 支持协议多 支持 RTMP、HTTP-FLV、HLS、WebRTC、MP4、TS、SRT 等
🎞 录制回放 插件实现 MP4/HLS/FLV 录制、拖动回放、暂停、倍速
💻 控制台 UI 内置网页端面板,便于查看节点、流、连接状态
🌈 配置热更新 支持 JSON 配置 + REST 接口更新,方便动态控制
☁ 云原生友好 支持 Docker 部署、多节点集群转发

🧱 三、项目结构与插件生态

Monibuca 核心是一个 "引擎",插件通过注册方式加入系统:

复制代码
monibuca/
├── engine.go          ← 核心流程调度
├── config.json        ← 插件与路由配置
├── plugins/
│   ├── hls/
│   ├── rtmp/
│   ├── webrtc/
│   ├── recorder/
│   └── dashboard/

常用插件说明:

插件 作用
rtmp 接收 RTMP 推流
httpflv 分发 HTTP-FLV
hls 自动转切 HLS 并输出 .m3u8
recorder 支持录制成 MP4、FLV、TS,支持点播
webrtc WebRTC 推/拉流
dashboard 控制台 UI

📈 四、发展轨迹与现状

  • 2019年:开始初版架构设计
  • 2020年:完成基础插件系统,支持 RTMP/HLS
  • 2021年:新增 WebRTC、Dashboard、倍速播放、录制快进
  • 2022年+:加入云原生特性、REST 控制接口、商业方案落地
  • 2023年~2024年:成为不少中小企业、教育平台、监控平台的视频中台核心

GitHub 项目地址:

🔗 https://github.com/langhuihui/monibuca


💼 五、适用场景

场景 描述
🎥 视频直播平台 高并发直播/转发/分发
🎓 在线教育 教学直播 + 回放录制
🚗 安防监控 摄像头 RTSP 推流 + 录制回看
📹 转码中转站 RTMP/WebRTC 接入,输出 HLS
☁ 云原生部署 Docker/K8s 场景快速部署多个节点

🔧 六、和其他项目的对比

项目 语言 插件化 控制台 WebRTC 点播功能 云原生
Monibuca Go ✅ 强 ✅ 内置 ✅ 支持 ✅ 支持 ✅ 友好
SRS C++ ❌ 固定 ✅ 有 ✅ 支持 ❌ 限制 ⚠️ 编译复杂
Nginx-rtmp C ❌ 固定 ❌ 无 ❌ 不支持 ❌ 不支持 ⚠️ 传统

📚 七、学习建议

  1. 克隆项目:git clone https://github.com/langhuihui/monibuca
  2. 运行示例配置:查看 config.jsonplugins 目录
  3. 阅读插件源码:推荐从 plugins/hlsplugins/recorder 开始
  4. 实战练习:RTMP 推流 + HLS 播放 + 点播回放
  5. 改写或开发插件:你可以写一个 watermark 插件,实现在视频流中打水印
相关推荐
王江奎2 小时前
FFmpeg 视频旋转信息处理:3.4 vs 7.0.2
ffmpeg·音视频
superxxd5 小时前
基于ffmpeg和rk3588的mpp编解码库多路融屏程序设计
ffmpeg
aqi0016 小时前
FFmpeg开发笔记(七十九)专注于视频弹幕功能的国产弹弹播放器
android·ffmpeg·音视频·直播·流媒体
霍志杰17 小时前
Orangepi5-RK3588安装ffmpeg硬编码版本
ffmpeg
悟凡爱学习1 天前
基于FFmpeg和HLS的大文件分片传输方案
ffmpeg
所念皆为东辞1 天前
linux离线安装ffmpeg
linux·运维·ffmpeg
❀͜͡傀儡师2 天前
docker安装FFmpeg
docker·容器·ffmpeg
gs801402 天前
在 openEuler 24.03 (LTS) 上安装 FFmpeg 的完整指南
ffmpeg
东东今天敲代码了吗3 天前
Ubuntu20.04 离线安装 FFmpeg 静态编译包
linux·运维·服务器·ubuntu·ffmpeg
fareast_mzh3 天前
Remove anti-piracy XML in media (.mp4,.mkv) files using ffmpeg, mkvproedit
xml·ffmpeg·反反盗版