MCPcopy
hub / github.com/langhuihui/monibuca

github.com/langhuihui/monibuca @v5.1.6 sqlite

repository ↗ · DeepWiki ↗ · release v5.1.6 ↗
15,780 symbols 43,418 edges 532 files 2,248 documented · 14%
README

Contributors Forks Stargazers Issues MIT License

Logo

Monibuca v5

A highly scalable high-performance streaming server development framework developed purely in Go



<a href="https://github.com/langhuihui/monibuca/raw/v5.1.6/README_CN.md">中文文档</a>
·
<a href="https://github.com/Monibuca/v5/wiki"><strong>Explore the docs »</strong></a>






<a href="https://github.com/Monibuca/v5/issues">Report Bug</a>
·
<a href="https://github.com/Monibuca/v5/issues">Request Feature</a>

Table of Contents

  1. About
  2. Getting Started
  3. Usage
  4. Build Tags
  5. Monitoring
  6. Plugin Development
  7. Architecture
  8. Third-party Plugins
  9. Contributing
  10. License
  11. Contact

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

(back to top)

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.

(back to top)

Examples

For more examples, please check out the example documentation.

(back to top)

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

(back to top)

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"]

(back to top)

Plugin Development

Monibuca's functionality can be extended through plugins. For information on creating plugins, see the plugin guide.

(back to top)

Architecture

For detailed architecture design documentation, please refer to the Architecture Documentation.

(back to top)

Third-party Plugins

  • https://github.com/cuteLittleDevil/m7s-jt1078

(back to top)

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.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

(back to top)

License

Distributed under the AGPL License. See LICENSE for more information.

(back to top)

Contact

monibuca - @m7server - service@monibuca.com

Project Link: https://github.com/langhuihui/monibuca

(back to top)

Extension points exported contracts — how you extend this code

ObjTool (Interface)
An ObjTool inspects shared libraries and executable files. [5 implementers]
plugin/debug/pkg/internal/plugin/plugin.go
IRegisterHandler (Interface)
(no doc) [10 implementers]
plugin.go
IPusher (Interface)
(no doc) [7 implementers]
pusher.go
IPuller (Interface)
(no doc) [15 implementers]
puller.go
IChunkHeader (Interface)
(no doc) [61 implementers]
plugin/rtmp/pkg/chunk.go
IBox (Interface)
(no doc) [62 implementers]
plugin/mp4/pkg/box/box.go
IRTPReader (Interface)
(no doc) [24 implementers]
plugin/rtp/pkg/reader.go
StorageConfig (Interface)
StorageConfig 存储配置接口 [4 implementers]
pkg/storage/storage.go

Core symbols most depended-on inside this repo

Errorf
called by 2021
plugin/webrtc/pkg/log.go
push
called by 1693
plugin/preview/ui/jessibuca-pro-demo.js
log
called by 1369
plugin/preview/ui/jessibuca-pro-demo.js
set
called by 1253
plugin/preview/ui/jessibuca-pro-demo.js
warn
called by 904
plugin/preview/ui/jessibuca-pro-demo.js
writeUint32
called by 776
plugin/webtransport/web/flv-muxer.iife.js
Error
called by 762
plugin/webrtc/pkg/log.go
error
called by 477
plugin/preview/ui/jessibuca-pro-demo.js

Shape

Method 8,839
Function 5,144
Struct 1,097
Class 522
Interface 108
TypeAlias 62
FuncType 8

Languages

Go58%
TypeScript42%
Python1%

Modules by API surface

plugin/preview/ui/jessibuca-pro-demo.js3,200 symbols
plugin/gb28181/pb/gb28181.pb.go1,144 symbols
pb/global.pb.go842 symbols
plugin/preview/ui/decoder-pro-mt.js442 symbols
plugin/preview/ui/decoder-pro-simd-mt.js412 symbols
plugin/preview/ui/decoder-pro-simd.js402 symbols
plugin/gb28181/pb/gb28181_grpc.pb.go401 symbols
plugin/preview/ui/decoder-pro.js373 symbols
plugin/preview/ui/decoder-pro-hard.js373 symbols
plugin/preview/ui/decoder-pro-audio.js373 symbols
plugin/preview/ui/decoder-pro-mt-worker.js345 symbols
pb/global_grpc.pb.go241 symbols

Dependencies from manifests, versioned

github.com/VictoriaMetrics/easyprotov0.1.4 · 1×
github.com/VictoriaMetrics/metricsv1.35.1 · 1×
github.com/VictoriaMetrics/metricsqlv0.76.0 · 1×
github.com/abema/go-mp4v1.2.0 · 1×
github.com/alchemy/rotoslogv0.2.2 · 1×
github.com/aliyun/aliyun-oss-go-sdkv3.0.2+incompatible · 1×
github.com/andybalholm/brotliv1.1.1 · 1×
github.com/asticode/go-astikitv0.30.0 · 1×
github.com/asticode/go-astitsv1.13.0 · 1×
github.com/aws/aws-sdk-gov1.55.7 · 1×

Datastores touched

(mongodb)Database · 1 repos

For agents

$ claude mcp add monibuca \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact