插件总览
Monibuca V6 采用全插件化架构,所有协议接入、工具功能、设备对接均以独立插件 crate 的形式提供。引擎本体只负责流管理、配置、HTTP 服务等核心能力,具体功能由插件按需组合。
V6 共提供 26 个插件 + 1 个内置服务(Room),按功能分为五大类。
协议类(8 个)
Section titled “协议类(8 个)”| 插件名 | Feature Flag | 说明 |
|---|---|---|
| RTMP | rtmp | RTMP 推拉流,支持推流鉴权、GOP 缓存 |
| RTSP | rtsp | RTSP 推拉流,支持 TCP/UDP 传输 |
| HTTP-FLV | flv | HTTP-FLV 拉流,支持 WebSocket-FLV |
| HLS | hls | HLS 切片与拉流,支持 LL-HLS |
| WebRTC | webrtc | WebRTC 推拉流,WHIP/WHEP 标准接入 |
| SRT | srt | SRT 协议推拉流,低延迟可靠传输 |
| WebTransport | webtransport | 基于 QUIC 的 WebTransport 协议支持 |
| GB28181 | gb28181 | 国标 GB/T 28181 设备接入与级联 |
工具类(11 个)
Section titled “工具类(11 个)”| 插件名 | Feature Flag | 说明 |
|---|---|---|
| MP4 录制 | mp4 | MP4 录制与点播回放 |
| 截图服务 | snap | 视频流截图与 MJPEG 输出 |
| 音频转码 | ffmpeg_transcode | 基于 FFmpeg 的音视频转码 |
| 日志轮转 | logrotate | 日志文件自动轮转与清理 |
| 调试工具 | debug | 开发调试辅助工具 |
| SEI 注入 | sei | H.264/H.265 SEI 数据注入 |
| 定时任务 | crontab | 定时拉流、录制等周期性任务 |
| 混流 | mix | 多路流合并为单路输出 |
| 加密 | crypto | 流媒体内容加密 |
| 上报 | report | 运行状态与指标上报 |
| 测试 | test | 自动化集成测试插件 |
房间扩展类(4 个)
Section titled “房间扩展类(4 个)”| 插件名 | Feature Flag | 说明 | 文档 |
|---|---|---|---|
| Room 服务 | room | 房间核心服务(引擎内置),管理房间生命周期、用户、WebSocket、回调 | 详见 |
| 直播间 | live | 直播间管理:礼物系统、连麦、PK、机器人观众、数据持久化 | 详见 |
| 会议室 | meeting | 视频会议:议程、计时器、实时转写、AI 总结、任务提取 | 详见 |
| 客服通话 | customer-service | 1v1 客服通话:坐席管理、音频混音、满意度评价 | 详见 |
设备类(3 个)
Section titled “设备类(3 个)”| 插件名 | Feature Flag | 说明 |
|---|---|---|
| ONVIF | onvif | ONVIF 协议设备发现与管理 |
| V4L2 | v4l2 | Linux Video4Linux2 摄像头采集 |
| ALSA | alsa | Linux ALSA 音频采集 |
其他(1 个)
Section titled “其他(1 个)”| 插件名 | Feature Flag | 说明 |
|---|---|---|
| HomeKit | homekit | Apple HomeKit 摄像头接入 |
房间系统快速了解
Section titled “房间系统快速了解”Monibuca V6 的房间系统基于内置的 Room 服务 和三个扩展插件组成:
┌─────────────────────────────────────────────┐│ Room Service (引擎内置) ││ • 房间生命周期管理 ││ • WebSocket 连接管理 ││ • 用户加入/离开/心跳 ││ • RoomApi trait 与回调系统 │└─────────────────────────────────────────────┘ ↓ RoomApi trait ↓┌──────────────────────────────────────────────┬──────────────────────────────────────────────┬─────────────────────────────────────────┐│ Live Plugin (直播间) │ Meeting Plugin (会议室) │ CustomerService Plugin (客服通话) ││ • 礼物系统 & Combo │ • 议程管理 │ • 1v1 会话(max_users: 2) ││ • 连麦系统(Link-Mic) │ • 计时器 │ • 会话分配与转接 ││ • PK 对战 │ • 实时转写(ASR) │ • 音频混音 ││ • 机器人观众 │ • AI 总结 & 任务提取 │ • 满意度评价 ││ • 数据持久化 │ • 等候室(Lobby) │ • HTTP API ││ • 100+ 观众 │ • 50+ 参与者 │ • 1000+ 并发会话 │└──────────────────────────────────────────────┴──────────────────────────────────────────────┴─────────────────────────────────────────┘使用场景对应:
- 直播场景 → Live 插件 + WebRTC 推流
- 会议场景 → Meeting 插件 + 等候室 + 录制
- 客服场景 → CustomerService 插件 + HTTP API
详见 房间系统详细文档。
Monibuca 通过 Cargo feature flags 控制插件的编译与加载。在 Cargo.toml 的 [features] 中指定需要的插件:
[dependencies]monibuca = { version = "6.0", features = ["rtmp", "rtsp", "flv", "hls", "mp4"] }常用 Feature 组合
Section titled “常用 Feature 组合”# 启用全部插件(默认,不含 rsmpeg)features = ["all-plugins"]
# 启用全部插件(含 rsmpeg FFmpeg 库绑定)features = ["all-plugins-rsmpeg"]
# 最小协议集features = ["rtmp", "flv", "hls"]
# 直播场景(需要 Room 服务)features = ["rtmp", "flv", "hls", "webrtc", "mp4", "snap", "live", "room"]
# 会议场景(需要 Room 服务)features = ["webrtc", "meeting", "room"]
# 客服通话场景(需要 Room 服务)features = ["webrtc", "customer-service", "room"]
# 监控场景features = ["rtsp", "gb28181", "onvif", "mp4", "snap"]单独启用某个插件
Section titled “单独启用某个插件”每个插件对应一个同名 feature flag(转码除外,转码使用 ffmpeg_transcode):
features = ["rtmp"] # 启用 RTMP 插件features = ["snap"] # 启用截图插件features = ["ffmpeg_transcode"] # 启用转码插件features = ["gb28181"] # 启用 GB28181 插件部分插件有隐式依赖:
srt— 同时拉入srt-tokio系统依赖onvif— 自动启用rtsptest— 自动启用rtmp,rtsp,flv,hls,webrtcmjpeg— 自动启用snaplive,meeting,customer-service— 自动启用room
插件加载模式
Section titled “插件加载模式”Monibuca V6 支持三种插件加载模式:
静态编译(默认)
Section titled “静态编译(默认)”features = ["static-plugins", "rtmp", "flv"]所有启用的插件在编译期静态链接到引擎二进制文件中。推荐用于生产环境,具有最佳性能和最小的运行时开销。
features = ["dynamic-plugins"]插件编译为独立的 .so / .dylib / .dll 动态库,引擎在运行时加载。适用于需要热插拔插件或按需加载的场景。
动态插件放置在引擎配置的 plugins_dir 目录中:
plugins_dir: "./plugins"WASM 插件(实验性)
Section titled “WASM 插件(实验性)”WASM 插件通过 WebAssembly 沙箱运行,提供更好的隔离性。此模式仍在开发中。
插件生命周期
Section titled “插件生命周期”所有插件遵循统一的生命周期管理:
Created → Initialized → Running → Stopped ↓ Disabled- Created — 插件实例被创建
- Initialized —
init()被调用,加载配置、注入依赖 - Running —
start()被调用,开始提供服务 - Stopped —
stop()被调用,优雅停机 - Disabled — 配置中
enable: false,跳过启动
引擎通过 PluginManager 统一管理所有插件的初始化顺序、依赖注入和优雅停机。
联系我们
微信公众号:不卡科技
腾讯频道:流媒体技术
QQ 频道:p0qq0crz08
QQ 群:751639168