跳转到内容

插件总览

Monibuca V6 采用全插件化架构,所有协议接入、工具功能、设备对接均以独立插件 crate 的形式提供。引擎本体只负责流管理、配置、HTTP 服务等核心能力,具体功能由插件按需组合。

V6 共提供 26 个插件 + 1 个内置服务(Room),按功能分为五大类。

插件名Feature Flag说明
RTMPrtmpRTMP 推拉流,支持推流鉴权、GOP 缓存
RTSPrtspRTSP 推拉流,支持 TCP/UDP 传输
HTTP-FLVflvHTTP-FLV 拉流,支持 WebSocket-FLV
HLShlsHLS 切片与拉流,支持 LL-HLS
WebRTCwebrtcWebRTC 推拉流,WHIP/WHEP 标准接入
SRTsrtSRT 协议推拉流,低延迟可靠传输
WebTransportwebtransport基于 QUIC 的 WebTransport 协议支持
GB28181gb28181国标 GB/T 28181 设备接入与级联
插件名Feature Flag说明
MP4 录制mp4MP4 录制与点播回放
截图服务snap视频流截图与 MJPEG 输出
音频转码ffmpeg_transcode基于 FFmpeg 的音视频转码
日志轮转logrotate日志文件自动轮转与清理
调试工具debug开发调试辅助工具
SEI 注入seiH.264/H.265 SEI 数据注入
定时任务crontab定时拉流、录制等周期性任务
混流mix多路流合并为单路输出
加密crypto流媒体内容加密
上报report运行状态与指标上报
测试test自动化集成测试插件
插件名Feature Flag说明文档
Room 服务room房间核心服务(引擎内置),管理房间生命周期、用户、WebSocket、回调详见
直播间live直播间管理:礼物系统、连麦、PK、机器人观众、数据持久化详见
会议室meeting视频会议:议程、计时器、实时转写、AI 总结、任务提取详见
客服通话customer-service1v1 客服通话:坐席管理、音频混音、满意度评价详见
插件名Feature Flag说明
ONVIFonvifONVIF 协议设备发现与管理
V4L2v4l2Linux Video4Linux2 摄像头采集
ALSAalsaLinux ALSA 音频采集
插件名Feature Flag说明
HomeKithomekitApple HomeKit 摄像头接入

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"] }
# 启用全部插件(默认,不含 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"]

每个插件对应一个同名 feature flag(转码除外,转码使用 ffmpeg_transcode):

features = ["rtmp"] # 启用 RTMP 插件
features = ["snap"] # 启用截图插件
features = ["ffmpeg_transcode"] # 启用转码插件
features = ["gb28181"] # 启用 GB28181 插件

部分插件有隐式依赖:

  • srt — 同时拉入 srt-tokio 系统依赖
  • onvif — 自动启用 rtsp
  • test — 自动启用 rtmp, rtsp, flv, hls, webrtc
  • mjpeg — 自动启用 snap
  • live, meeting, customer-service — 自动启用 room

Monibuca V6 支持三种插件加载模式:

features = ["static-plugins", "rtmp", "flv"]

所有启用的插件在编译期静态链接到引擎二进制文件中。推荐用于生产环境,具有最佳性能和最小的运行时开销。

features = ["dynamic-plugins"]

插件编译为独立的 .so / .dylib / .dll 动态库,引擎在运行时加载。适用于需要热插拔插件或按需加载的场景。

动态插件放置在引擎配置的 plugins_dir 目录中:

plugins_dir: "./plugins"

WASM 插件通过 WebAssembly 沙箱运行,提供更好的隔离性。此模式仍在开发中。

所有插件遵循统一的生命周期管理:

Created → Initialized → Running → Stopped
Disabled
  1. Created — 插件实例被创建
  2. Initializedinit() 被调用,加载配置、注入依赖
  3. Runningstart() 被调用,开始提供服务
  4. Stoppedstop() 被调用,优雅停机
  5. Disabled — 配置中 enable: false,跳过启动

引擎通过 PluginManager 统一管理所有插件的初始化顺序、依赖注入和优雅停机。

联系我们

微信公众号:不卡科技 微信公众号二维码
腾讯频道:流媒体技术 腾讯频道二维码
QQ 频道:p0qq0crz08 QQ 频道二维码
QQ 群:751639168 QQ 群二维码