Monibuca
๐งฉ Monibuca is a Modularized, Extensible framework for building Streaming Server
Install / Use
/learn @langhuihui/MonibucaREADME
<a id="readme-top"></a>
<!-- PROJECT LOGO --> <br /> <div align="center"> <a href="https://m7s.live"> <img src="https://m7s.live/logo+.svg" alt="Logo" width="200"> </a> <h1 align="center">Monibuca v5</h1> <p align="center"> A highly scalable high-performance streaming server development framework developed purely in Go <br /> <a href="./README_CN.md">ไธญๆๆๆกฃ</a> ยท <a href="https://github.com/Monibuca/v5/wiki"><strong>Explore the docs ยป</strong></a> <br /> <br /> <a href="https://github.com/Monibuca/v5/issues">Report Bug</a> ยท <a href="https://github.com/Monibuca/v5/issues">Request Feature</a> </p> </div> <!-- TABLE OF CONTENTS --> <details> <summary>Table of Contents</summary> <ol> <li><a href="#about">About</a></li> <li><a href="#getting-started">Getting Started</a></li> <li><a href="#usage">Usage</a></li> <li><a href="#build-tags">Build Tags</a></li> <li><a href="#monitoring">Monitoring</a></li> <li><a href="#plugin-development">Plugin Development</a></li> <li><a href="#arch">Architecture</a></li> <li><a href="#third-party-plugins">Third-party Plugins</a></li> <li><a href="#contributing">Contributing</a></li> <li><a href="#license">License</a></li> <li><a href="#contact">Contact</a></li> </ol> </details>About
Monibuca is a powerful streaming server framework written entirely in Go. It's designed to be:
-
๐ High Performance - Lock-free design, partial manual memory management, multi-core computing
-
โก Low Latency - Zero-wait forwarding, sub-second latency across the entire chain
-
๐ฆ Modular - Load on demand, unlimited extensibility
-
๐ง Flexible - Highly configurable to meet various streaming scenarios
-
๐ช Scalable - Supports distributed deployment, easily handles large-scale scenarios
-
๐ Debug Friendly - Built-in debug plugin, real-time performance monitoring and analysis
-
๐ฅ Media Processing - Supports screenshot, transcoding, SEI data processing
-
๐ Cluster Capability - Built-in cascade and room management
-
๐ฎ Preview Features - Supports video preview, multi-screen preview, custom screen layouts
-
๐ Security - Provides encrypted transmission and stream authentication
-
๐ Performance Monitoring - Supports stress testing and performance metrics collection (integrated in test plugin)
-
๐ Log Management - Log rotation, auto cleanup, custom extensions
-
๐ฌ Recording & Playback - Supports MP4, HLS, FLV formats, speed control, seeking, pause
-
โฑ๏ธ Dynamic Time-Shift - Dynamic cache design, supports live time-shift playback
-
๐ Remote Call - Supports gRPC interface for cross-language integration
-
๐ท๏ธ Stream Alias - Supports dynamic stream alias, flexible multi-stream management
-
๐ค AI Capabilities - Integrated inference engine, ONNX model support, custom pre/post processing
-
๐ช WebHook - Subscribe to stream lifecycle events for business system integration
-
๐ Private Protocol - Supports custom private protocols for special business needs
-
๐ Supported Protocols: RTMP, RTSP, HTTP-FLV, WS-FLV, HLS, WebRTC, GB28181, ONVIF, SRT
Getting Started
Prerequisites
- Go 1.23 or higher
- Basic understanding of streaming protocols
Run with Default Configuration
cd example/default
go run -tags sqlite main.go
Web UI
Place the admin.zip file (do not unzip) in the same directory as your configuration file.
Then visit http://localhost:8080 to access the UI.
<p align="right">(<a href="#readme-top">back to top</a>)</p>Examples
For more examples, please check out the example documentation.
<p align="right">(<a href="#readme-top">back to top</a>)</p>Build Tags
The following build tags can be used to customize your build:
| Build Tag | Description |
|-----------|-------------|
| disable_rm | Disables the memory pool |
| sqlite | Enables the sqlite DB |
| sqliteCGO | Enables the sqlite cgo version DB |
| mysql | Enables the mysql DB |
| postgres | Enables the postgres DB |
| duckdb | Enables the duckdb DB |
| taskpanic | Throws panic, for testing |
| fasthttp | Enables the fasthttp server instead of net/http |
| enable_buddy | Enables the buddy memory pre-allocation |
Monitoring
Monibuca supports Prometheus monitoring out of the box. Add the following to your Prometheus configuration:
scrape_configs:
- job_name: "monibuca"
metrics_path: "/api/metrics"
static_configs:
- targets: ["localhost:8080"]
<p align="right">(<a href="#readme-top">back to top</a>)</p>
Plugin Development
Monibuca's functionality can be extended through plugins. For information on creating plugins, see the plugin guide.
<p align="right">(<a href="#readme-top">back to top</a>)</p>Architecture
For detailed architecture design documentation, please refer to the Architecture Documentation.
<p align="right">(<a href="#readme-top">back to top</a>)</p>Third-party Plugins
- https://github.com/cuteLittleDevil/m7s-jt1078
Contributing
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
License
Distributed under the AGPL License. See LICENSE for more information.
Contact
monibuca - @m7server - service@monibuca.com
Project Link: https://github.com/langhuihui/monibuca
<p align="right">(<a href="#readme-top">back to top</a>)</p> <!-- MARKDOWN LINKS & IMAGES -->