Monibuca是一款开源go语言流媒体服务器开发框架
简洁
Go语言本身的简洁+代码设计追求极致精简、优雅,阅读源码变成一件愉快的事
启动工程提供了标准化的接入示例,插件引入十分简单
精致
无锁化设计以及手术刀般精确的内存复用,充分利用多核计算,性能强悍
易用
无需配置环境,无需安装运行时,直接下载可执行文件
为arm架构提供贴心的编译版本,可以直接下载运行
v4 版本升级主要更新点:
- 对核心结构体进行泛型重构
- RingBuffer中元素存放的是完整的一帧,以确保构建RTP包时可以准确添加marker
- 去除GOP延迟追帧逻辑,改为跳帧同步最新关键帧技术
- 缓存形式从[]byte变为net.Buffers,使得可利用writev提高性能
- 缓存中预构建avcc、flv、rtp三种格式,并且复用内存
- 支持动态码率、动态分辨率
- Stream拥有4种状态,从而支持按需拉流,断线重连等复杂场景
- 去除Track等待逻辑,改为通过事件通知的方式
- 原有Hook机制修改为事件总线模型,简化了代码逻辑
- 新增http回调设置
- 插件安装API更新,更简单
- 插件通过反射自动注册Web API,并提供中间件机制
- 自带跨域CORS配置以及基本身份认证功能
- 插件在订阅发布流的API更新,采用一种统一的可扩展的事件模型
- 采用zap作为日志库
- 配置文件格式改为yaml
- 实现无配置文件也可以启动(采用默认配置)
- 配置文件中需要显式关闭插件才会使得插件不启用
- 配置文件中对于订阅、发布、推、拉四种配置包含全局、插件级、流级三级优先级覆盖机制
- 实现了对远程服务器推拉的基本底层架构,方便插件实现client端逻辑
- 实现h265的完全支持
- 新增debug插件用于调试
- 去除Gateway插件以及summary插件,并入引擎中
- record插件现支持fmp4格式录制
- 新增webtransport插件提供WebTransport协议拉流
- rtsp插件实现h265的拉流播放、实现aac、g711音频流处理
- rtsp协议转发将不再重新解包和封包——透传
- rtmp协议实现client端逻辑——可以从远程rtmp服务器推拉流
还没有评论,来说两句吧...