1.简介
Monibuca(发音:莫妮不卡,m7s 是其缩写,类似 k8s) 是一个开源的 Go 语言开发的流媒体服务器开发框架。 它基于 go1.19+,此外并无任何其他依赖构建,并提供了一套插件式的二次开发模型,帮助你高效地开发流媒体服务器,你既可以直接使用官方提供的插件,也可以自己开发插件扩展任意的功能,所以 Monibuca 是可以支持任意流媒体协议的框架!
流媒体服务器是一种用于分发流媒体的服务器端软件,可用于直播、监控、会议等需要实时观看音视频的场景。流媒体服务器区别于传统 Web 服务器对于实时性要求极高,需要使用各种传输协议,而 Web 服务器则主要以 http/https 协议为主。
Monibuca 旨在构建一个通用的流媒体开发生态,所以从 v1 版本开始就考虑到业务和流转发的解耦,从而设计了一套可供任意扩展的插件机制。根据你的需求场景,可以灵活引入不同类型的插件:
提供流媒体协议打包/解包,例如 rtmp 插件、rtsp 插件等
提供日志持久化的处理——logrotate 插件
提供录像功能——record 插件
提供丰富的调试功能——debug 插件
提供 http 回调能力——hook 插件
如果你是有经验的开发者,那么最佳的方式是在现有的插件基础上进行二次开发,并可向更多的人提供可重用的插件丰富生态。 如果你是流媒体的初学者,那么最佳的方式是利用现有的插件拼凑出你需要的功能,并向有经验的开发者寻求帮助。
2.常见业务场景
中转流服务器、视频客服、巡检(无人机、机房、码头、铁路、厂区)、停车场收费、设备报警回放、视频会议、直播间、语聊房、在线教育。
引擎方面
提供插件机制,对插件的启动,配置解析,事件派发等进行统一管理
提供 H264、H265、AAC、G711 格式的转发
提供可复用的 AVCC 格式、RTP 格式、AnnexB 格式、ADTS 格式等预封装机制
提供多 Track 机制,支持大小流,加密流扩展
提供 DataTrack 机制,可用于实现房间文字聊天等功能
提供时间戳同步机制,限速机制
提供 RTP 包乱序重排机制
提供订阅者追帧跳帧机制(首屏秒开)
提供发布订阅对外推拉的基础架构
提供鉴权机制的底层架构支持
提供内存复用机制
提供发布者断线重连机制
提供按需拉流机制
提供 HTTP 服务端口公用机制
提供 HTTP API 接口自动注册机制
提供 HTTP 接口中间件机制
提供结构化日志
提供流信息统计和输出
提供事件总线机制,可以对所有插件广播事件
提供配置热更新机制
插件方面
提供 RTMP 协议的推拉流,对外推拉流(支持 RTMPS)
提供 RTSP 协议的推拉流,对外推拉流
提供 HTTP-FLV 协议的拉流,对外拉流,读取本地 FLV 文件
提供 WebSocket 协议的拉流
提供 HLS 协议的拉流,对外拉流
提供 WebRTC 协议的推拉流
提供 GB28181 协议的推流,提供 dump 回放分析能力
提供 Onif 协议的支持
提供 WebTransport 协议的拉流
提供 fmp4 协议的拉流
提供边缘服务器功能,实现级联拉流
提供录像功能,支持 flv、mp4、hls、raw 格式
提供日志持久化功能,支持按天、按小时、按分钟、按秒、按大小、按文件数等多种方式
提供截屏功能
提供 HTTP 回调功能
提供预览功能(集成 Jessibuca Pro)
提供房间功能(可实现视频会议)
提供对接 Prometheus 的功能
第三方插件和收费插件提供更多额外功能,不在此罗列。
m7s admin pro
admin pro 提供了对 m7s 实例的可视化管理后台的能力,支持能力如下:
提供多实例管理功能
提供流详情显示
提供配置可视化编辑
提供日志可视化显示
提供插件可视化管理
提供 GB 设备管理
提供动态添加远程推拉流界面
提供 WebRTC 背景墙功能
提供多人视频演示。