Files
2026-01-18 20:49:14 +08:00

136 lines
3.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 麻将直播叠加UI系统
这是一个用于麻将直播的浏览器叠加层系统,可以在视频流上显示玩家信息、分数、胡牌动画等元素,并通过控制面板进行实时控制。
## 功能特点
- **视频背景支持**可以播放URL视频、本地视频或设备捕获
- **玩家信息显示**:四个玩家的姓名、分数、颜色和位置
- **胡牌动画**:显示番种、符数和得点,并有分数变动动画
- **本场与立直棒**:记录并显示当前场次信息
- **听牌提示**:高亮显示听牌玩家
- **实时控制面板**:可通过单独窗口控制所有显示内容
- **可定制样式**:调整颜色、透明度、字体大小等
## 文件结构
- `index.html` - 叠加层主页面显示视频和UI元素
- `control.html` - 控制面板,用于操作叠加层
- `style.css` - 样式文件
- `app.js` - 核心逻辑和事件处理
- `README.md` - 项目说明
## 快速开始
### 本地运行
1. 直接在浏览器中打开 `control.html` 文件
2. 点击「打开叠加层」按钮,会打开一个新窗口显示叠加层
3. 使用控制面板上的各种功能来控制叠加层显示
### 在OBS中使用
1. 启动OBS Studio
2. 添加「浏览器」来源
3. 设置URL为 `file:///D:/TraeProject/TestWebSite/index.html`(根据实际路径修改)
4. 设置合适的宽度和高度建议1920x1080
5. 然后在另一个浏览器窗口中打开 `control.html` 进行控制
## 事件通信协议
系统使用 `postMessage` API 在控制面板和叠加层之间通信,支持以下事件类型:
### 1. 更新玩家信息
```json
{
"event": "update_player",
"player_index": 0,
"name": "张三",
"score": 25000,
"color": "rgba(255, 100, 100, 0.6)",
"is_tenpai": false
}
```
### 2. 胡牌事件
```json
{
"event": "win",
"winner": 1,
"losers": [0, 2, 3],
"han": 3,
"fu": 40,
"points": 8000,
"is_tsumo": true,
"text": "三暗刻 自摸"
}
```
### 3. 调整分数
```json
{
"event": "adjust_score",
"player_index": 2,
"delta": -1500
}
```
### 4. 设置听牌
```json
{
"event": "set_tenpai",
"player_index": 0,
"is_tenpai": true
}
```
### 5. 设置本场与立直棒
```json
{
"event": "set_honba_riichi",
"honba": 1,
"riichi_sticks": 2
}
```
### 6. 设置样式
```json
{
"event": "set_style",
"player_index": 0,
"opacity": 0.6,
"font_size": 18
}
```
### 7. 设置视频源
```json
{
"event": "set_video_source",
"src": "https://example.com/video.mp4"
}
```
## 自定义和扩展
### 修改样式
- 可以编辑 `style.css` 文件来自定义界面外观
- 支持调整位置、颜色、透明度、字体等
### 添加功能
- 可以在 `app.js` 中扩展事件处理函数
- 支持添加新的事件类型和处理逻辑
## 浏览器兼容性
- Chrome 90+
- Edge 90+
- Firefox 88+
- Safari 14+
## 注意事项
- 为了获得最佳体验建议使用Chrome或Edge浏览器
- 在OBS中使用时请确保本地文件路径正确
- 对于远程视频源,请确保视频允许跨域访问
- 如果需要在不同设备间控制请考虑实现WebSocket服务器端