A highly scalable high-performance streaming server development framework developed purely in Go
中文文档
·
Explore the docs »
Report Bug
·
Request Feature
Table of Contents
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
-
📝 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
- Go 1.23 or higher
- Basic understanding of streaming protocols
cd example/default
go run -tags sqlite main.go
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.
For more examples, please check out the example documentation.
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 |
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"]
Monibuca's functionality can be extended through plugins. For information on creating plugins, see the plugin guide.
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
Distributed under the MIT License. See LICENSE
for more information.
monibuca - @m7server - [email protected]
Project Link: https://github.com/langhuihui/monibuca