初见 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 插件,实现在视频流中打水印
相关推荐
ghie909031 分钟前
Ubuntu编译ffmpeg解决错误:ERROR: avisynth/avisynth_c.h not found
c语言·ubuntu·ffmpeg
Lee魅儿2 天前
ffmpeg webm 透明通道视频转成rgba图片
python·ffmpeg
卖猪肉的痴汉4 天前
1.1 Linux 编译FFmpeg 4.4.1
linux·ffmpeg
东风西巷4 天前
AudioLab安卓版:音频处理,一应俱全
ffmpeg·音视频·软件需求
光电的一只菜鸡5 天前
ubuntu之坑(十四)——安装FFmpeg进行本地视频推流(在海思平台上运行)
ubuntu·ffmpeg·音视频
weixin_428498495 天前
FFmpeg 压缩视频文件
ffmpeg
AJi5 天前
Android音视频框架探索(三):系统播放器MediaPlayer的创建流程
android·ffmpeg·音视频开发
aqi005 天前
FFmpeg开发笔记(六十六)Windows给FFmpeg集成LC3音频的编码器liblc3
ffmpeg·音视频·直播·流媒体
向上的车轮6 天前
FFmpeg是什么?
ffmpeg