# StreamUI
**Repository Path**: xia-chu/StreamUI
## Basic Information
- **Project Name**: StreamUI
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-12-03
- **Last Updated**: 2025-12-03
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
StreamUI
### Overview
🚀 A minimal and lightweight video streaming management platform
一个极简轻量的视频流媒体管理平台
> StreamUI 中 Stream 取自 [ZLMediaKit](https://github.com/ZLMediaKit/ZLMediaKit) 流概念,UI 取自 [Layui](https://github.com/layui/layui)。整体设计以蓝绿色(`#16baaa`)为主色调,秉持 “简洁、易用、可扩展” 的理念,在代码复杂度与功能实现之间不断权衡取舍,执着追求极简之美。
### Supported Features
- Supports ingest and egress via mainstream streaming protocols, including RTSP, RTMP, HLS, WebRTC, RTP, and GB28181
- Supports ONVIF device discovery
- Supports stream distribution over multiple protocols: RTSP, WebRTC, RTMP, FLV, HLS, HLS-fMP4, HTTP-TS, and HTTP-fMP4
- Enables multi-screen playback for simultaneous stream viewing
- Provides local stream recording, playback, download, and automatic cleanup; supports event-triggered recording (capturing n seconds before and after an event)
- 🚧 GB28181 ingest and cascading support (coming soon...)
支持功能
- 支持 RTSP/RTMP/HLS/WebRTC/RTP/GB28181 等主流协议的拉流推流接入
- 支持 ONVIF 设备识别
- 支持分发 RTSP/WebRTC/RTMP/FLV/HLS/HLS-fMP4/HTTP-TS/HTTP-fMP4 等协议
- 支持多屏播放
- 支持流本地录制、回放、下载、自动清理,支持事件录制(事件发生前 n 秒+事件发生后 n 秒)
- 🚧 支持 GB28181 接入/级联(正在实现中 ...)
### Quick Start
This project is best deployed using Docker Compose.
```bash
cd ./docker
docker compose up -d # Use `docker-compose up -d` if you're on an older Docker version
```
Once it's running, open your browser and go to `http://{your-server-ip}:10800` to log in.
The default password is `streamui`. You can change it in [login.html](./frontend/login.html).
If you change the settings and want the changes to take effect, just restart the service with:
```bash
docker compose restart
```
### Tips
After the first startup, it's recommended to adjust the settings according to your business needs before restarting for regular use:
- Consider enabling on-demand forwarding. The advantage is that it saves bandwidth, but the downside is that the first viewer will need to wait for the forwarding stream to start.
- Consider disabling protocols you don't need to forward. For example, if you don't need to distribute RTMP streams, turn off RTMP forwarding.
- Consider enabling "faststart." This allows faster seeking when playing videos, but it uses a bit more storage space during recording.
- Consider increasing the GOP cache size. This makes playback smoother and allows longer video lookback for recorded events, but it also uses more memory.
首次启动后,建议先根据业务需要修改配置再重启使用
- 考虑开启按需转发,优点是节省带宽,缺点是第一个观众观看时,需要等待转发流启动
- 考虑关掉不需要转发的协议,比如不需要分发 RTMP 协议,就关掉 RTMP 转发
- 考虑开启 faststart,优点是播放时可以快速 seek,缺点是录制时需要多占用一些存储空间
- 考虑增大 GOP 缓存,优点是播放平滑,录制事件视频回溯时间变长,缺点是增大内存占用
更多选项深入研究请参考 ZLMediaKit 的 [配置说明](https://github.com/ZLMediaKit/ZLMediaKit/tree/master/conf)
### Snapshots
### Repo Structure
StreamUI keeps it simple—using lightweight Layui (front-end) and FastAPI (back-end) instead of heavy frameworks like Vue, React, or Spring. Easy to understand and modify.
StreamUI 追求极简实现,前端未采用 Vue、React 等重量级框架,后端也避开了功能繁杂的 Java Spring 体系,转而选用轻量级的 Layui 与 FastAPI 组合。整体架构简洁清晰,易于理解和二次开发。
```bash
├── backend
│ ├── main.py # 主程序入口
│ ├── onvif # ONVIF 设备识别与云台控制
│ ├── scheduler.py # 定时任务
│ └── utils.py # 工具函数
│
├── frontend
│ ├── assets # 静态资源
│ ├── index.html # 主页面
│ ├── login.html # 登录页面
│ └── pages
│ ├── api-docs.html # 接口文档
│ ├── home.html # 首页概览
│ ├── playback.html # 录像回放
│ ├── pull-stream.html # 主动拉流
│ ├── settings.html # 基础配置
│ ├── stream-push.html # 被动推流
│ └── wall.html # 分屏展示
```
### Thanks
- [ZLMediaKit](https://github.com/ZLMediaKit/ZLMediaKit)
- [Layui](https://github.com/layui/layui)
- [FastAPI](https://fastapi.tiangolo.com/)
🤗 ZLMediaKit https://github.com/ZLMediaKit/ZLMediaKit has included this project
### License
StreamUI is licensed under the [MIT License](./LICENSE)