mirror of
https://github.com/langhuihui/monibuca.git
synced 2025-12-24 13:48:04 +08:00
* iFLOW CLI Automated Issue Triage
* Update for ai
* Revert "Update for ai"
This reverts commit b85978298a.
* Update ai md
* feature:mp4-upload-s3
93 lines
2.9 KiB
Markdown
93 lines
2.9 KiB
Markdown
# Gemini Context: Monibuca Project
|
|
|
|
This document provides a summary of the Monibuca project to give context for AI-assisted development.
|
|
|
|
## Project Overview
|
|
|
|
Monibuca is a modular, high-performance streaming media server framework written in Go. Its core design is lightweight and plugin-based, allowing developers to extend functionality by adding or developing plugins for different streaming protocols and features. The project's module path is `m7s.live/v4`.
|
|
|
|
The architecture is centered around a core engine (`m7s.live/v4`) that manages plugins, streams, and the main event loop. Functionality is added by importing plugins, which register themselves with the core engine.
|
|
|
|
**Key Technologies:**
|
|
- **Language:** Go
|
|
- **Architecture:** Plugin-based
|
|
- **APIs:** RESTful HTTP API, gRPC API
|
|
|
|
**Supported Protocols (based on plugins):**
|
|
- RTMP
|
|
- RTSP
|
|
- HLS
|
|
- FLV
|
|
- WebRTC
|
|
- GB28181
|
|
- SRT
|
|
- And more...
|
|
|
|
## Building and Running
|
|
|
|
### Build
|
|
To build the server, run the following command from the project root:
|
|
```bash
|
|
go build -v .
|
|
```
|
|
|
|
### Test
|
|
To run the test suite:
|
|
```bash
|
|
go test -v ./...
|
|
```
|
|
|
|
### Running the Server
|
|
The server is typically run by creating a `main.go` file that imports the core engine and the desired plugins.
|
|
|
|
**Example `main.go`:**
|
|
```go
|
|
package main
|
|
|
|
import (
|
|
"m7s.live/v4"
|
|
// Import desired plugins to register them
|
|
_ "m7s.live/plugin/rtmp/v4"
|
|
_ "m7s.live/plugin/rtsp/v4"
|
|
_ "m7s.live/plugin/hls/v4"
|
|
_ "m7s.live/plugin/webrtc/v4"
|
|
)
|
|
|
|
func main() {
|
|
m7s.Run()
|
|
}
|
|
```
|
|
The server is executed by running `go run main.go`. Configuration is managed through a `config.yaml` file in the same directory.
|
|
|
|
### Docker
|
|
The project includes a `Dockerfile` to build and run in a container.
|
|
```bash
|
|
# Build the image
|
|
docker build -t monibuca .
|
|
|
|
# Run the container
|
|
docker run -p 8080:8080 monibuca
|
|
```
|
|
|
|
## Development Conventions
|
|
|
|
### Project Structure
|
|
- `server.go`: Core engine logic.
|
|
- `plugin/`: Contains individual plugins for different protocols and features.
|
|
- `pkg/`: Shared packages and utilities used across the project.
|
|
- `pb/`: Protobuf definitions for the gRPC API.
|
|
- `example/`: Example implementations and configurations.
|
|
- `doc/`: Project documentation.
|
|
|
|
### Plugin System
|
|
The primary way to add functionality is by creating or enabling plugins. A plugin is a Go package that registers itself with the core engine upon import (using the `init()` function). This modular approach keeps the core small and allows for custom builds with only the necessary features.
|
|
|
|
### API
|
|
- **RESTful API:** Defined in `api.go`, provides HTTP endpoints for controlling and monitoring the server.
|
|
- **gRPC API:** Defined in the `pb/` directory using protobuf. `protoc.sh` is used to generate the Go code from the `.proto` files.
|
|
|
|
### Code Style and CI
|
|
- The project uses `golangci-lint` for linting, as seen in the `.github/workflows/go.yml` file.
|
|
- Static analysis is configured via `staticcheck.conf` and `qodana.yaml`.
|
|
- All code should be formatted with `gofmt`.
|