Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/langhuihui/monibuca

๐Ÿงฉ Monibuca is a Modularized, Extensible framework for building Streaming Server
https://github.com/langhuihui/monibuca

flv hdl hls livestream mediaserver rtmp rtp rtsp ts webrtc websocket

Last synced: 7 days ago
JSON representation

๐Ÿงฉ Monibuca is a Modularized, Extensible framework for building Streaming Server

Awesome Lists containing this project

README

        

[![Contributors][contributors-shield]][contributors-url]
[![Forks][forks-shield]][forks-url]
[![Stargazers][stars-shield]][stars-url]
[![Issues][issues-shield]][issues-url]
[![MIT License][license-shield]][license-url]




Monibuca v5


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


ไธญๆ–‡ๆ–‡ๆกฃ
ยท
Explore the docs ยป




Report Bug
ยท
Request Feature


Table of Contents


  1. About

  2. Getting Started

  3. Usage

  4. Build Tags

  5. Monitoring

  6. Plugin Development

  7. Architecture

  8. Contributing

  9. License

  10. 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
- ๐Ÿ“ **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

```bash
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](./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 |

(back to top)

## Monitoring

Monibuca supports Prometheus monitoring out of the box. Add the following to your Prometheus configuration:

```yaml
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](./plugin/README.md).

(back to top)

## Architecture

For detailed architecture design documentation, please refer to the [Architecture Documentation](./doc/arch/index.md).

(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 MIT License. See `LICENSE` for more information.

(back to top)

## Contact

monibuca - [@m7server](https://x.com/m7server) - [email protected]

Project Link: [https://github.com/langhuihui/monibuca](https://github.com/langhuihui/monibuca)

(back to top)

[contributors-shield]: https://img.shields.io/github/contributors/langhuihui/monibuca.svg?style=for-the-badge
[contributors-url]: https://github.com/langhuihui/monibuca/graphs/contributors
[forks-shield]: https://img.shields.io/github/forks/langhuihui/monibuca.svg?style=for-the-badge
[forks-url]: https://github.com/langhuihui/monibuca/network/members
[stars-shield]: https://img.shields.io/github/stars/langhuihui/monibuca.svg?style=for-the-badge
[stars-url]: https://github.com/langhuihui/monibuca/stargazers
[issues-shield]: https://img.shields.io/github/issues/langhuihui/monibuca.svg?style=for-the-badge
[issues-url]: https://github.com/langhuihui/monibuca/issues
[license-shield]: https://img.shields.io/github/license/langhuihui/monibuca.svg?style=for-the-badge
[license-url]: https://github.com/langhuihui/monibuca/blob/v5/LICENSE