|
@@ -0,0 +1,120 @@
|
|
|
|
|
+# TG Live Game Stream Service
|
|
|
|
|
+
|
|
|
|
|
+Mac 摄像头/屏幕推流到 Cloudflare Stream 的脚本工具。
|
|
|
|
|
+
|
|
|
|
|
+## 前置要求
|
|
|
|
|
+
|
|
|
|
|
+### 安装 FFmpeg
|
|
|
|
|
+
|
|
|
|
|
+```bash
|
|
|
|
|
+brew install ffmpeg
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### 获取推流地址
|
|
|
|
|
+
|
|
|
|
|
+1. 打开 `tg-live-game-web` 前端
|
|
|
|
|
+2. 进入 **Cloudflare Stream → 直播管理**
|
|
|
|
|
+3. 点击 **创建直播**
|
|
|
|
|
+4. 获取 **RTMPS 推流地址** 和 **推流密钥**
|
|
|
|
|
+
|
|
|
|
|
+## 快速开始
|
|
|
|
|
+
|
|
|
|
|
+### 1. 配置推流参数
|
|
|
|
|
+
|
|
|
|
|
+```bash
|
|
|
|
|
+# 复制配置文件
|
|
|
|
|
+cp config/stream.env.example config/stream.env
|
|
|
|
|
+
|
|
|
|
|
+# 编辑配置,填入推流密钥
|
|
|
|
|
+vim config/stream.env
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### 2. 查看可用设备
|
|
|
|
|
+
|
|
|
|
|
+```bash
|
|
|
|
|
+chmod +x scripts/*.sh
|
|
|
|
|
+./scripts/list-devices.sh
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+输出示例:
|
|
|
|
|
+```
|
|
|
|
|
+[AVFoundation indev @ 0x...] [0] FaceTime HD Camera
|
|
|
|
|
+[AVFoundation indev @ 0x...] [1] Capture screen 0
|
|
|
|
|
+[AVFoundation indev @ 0x...] [0] MacBook Pro Microphone
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### 3. 开始推流
|
|
|
|
|
+
|
|
|
|
|
+**摄像头推流:**
|
|
|
|
|
+```bash
|
|
|
|
|
+./scripts/stream-camera.sh
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+**屏幕推流:**
|
|
|
|
|
+```bash
|
|
|
|
|
+./scripts/stream-screen.sh
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### 4. 停止推流
|
|
|
|
|
+
|
|
|
|
|
+按 `Ctrl+C` 或运行:
|
|
|
|
|
+```bash
|
|
|
|
|
+./scripts/stop-stream.sh
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+## 配置说明
|
|
|
|
|
+
|
|
|
|
|
+| 参数 | 说明 | 推荐值 |
|
|
|
|
|
+|------|------|--------|
|
|
|
|
|
+| `RTMP_URL` | 推流地址 | `rtmps://live.cloudflare.com:443/live` |
|
|
|
|
|
+| `STREAM_KEY` | 推流密钥 | 从 Cloudflare 获取 |
|
|
|
|
|
+| `VIDEO_DEVICE` | 摄像头编号 | `0` |
|
|
|
|
|
+| `AUDIO_DEVICE` | 麦克风编号 | `0` |
|
|
|
|
|
+| `RESOLUTION` | 分辨率 | `1280x720` |
|
|
|
|
|
+| `FPS` | 帧率 | `30` |
|
|
|
|
|
+| `BITRATE` | 视频码率 | `2500k` |
|
|
|
|
|
+
|
|
|
|
|
+## 推荐码率
|
|
|
|
|
+
|
|
|
|
|
+| 分辨率 | 帧率 | 推荐码率 |
|
|
|
|
|
+|--------|------|----------|
|
|
|
|
|
+| 720p (1280x720) | 30fps | 2500k |
|
|
|
|
|
+| 720p (1280x720) | 60fps | 3500k |
|
|
|
|
|
+| 1080p (1920x1080) | 30fps | 4500k |
|
|
|
|
|
+| 1080p (1920x1080) | 60fps | 6000k |
|
|
|
|
|
+
|
|
|
|
|
+## 常见问题
|
|
|
|
|
+
|
|
|
|
|
+### 权限问题
|
|
|
|
|
+
|
|
|
|
|
+首次运行时,macOS 会提示授权摄像头和麦克风访问,请点击允许。
|
|
|
|
|
+
|
|
|
|
|
+如果没有提示,可以在 **系统偏好设置 → 安全性与隐私 → 隐私 → 摄像头/麦克风** 中手动授权终端。
|
|
|
|
|
+
|
|
|
|
|
+### 推流失败
|
|
|
|
|
+
|
|
|
|
|
+1. 检查网络连接
|
|
|
|
|
+2. 确认推流密钥正确
|
|
|
|
|
+3. 确认 Cloudflare Stream 服务已开通
|
|
|
|
|
+4. 查看 FFmpeg 错误输出
|
|
|
|
|
+
|
|
|
|
|
+### 画面卡顿
|
|
|
|
|
+
|
|
|
|
|
+- 降低分辨率或码率
|
|
|
|
|
+- 检查网络上传带宽
|
|
|
|
|
+- 关闭其他占用网络的应用
|
|
|
|
|
+
|
|
|
|
|
+## 文件结构
|
|
|
|
|
+
|
|
|
|
|
+```
|
|
|
|
|
+tg-live-game-stream-service/
|
|
|
|
|
+├── scripts/
|
|
|
|
|
+│ ├── list-devices.sh # 列出可用设备
|
|
|
|
|
+│ ├── stream-camera.sh # 摄像头推流
|
|
|
|
|
+│ ├── stream-screen.sh # 屏幕推流
|
|
|
|
|
+│ └── stop-stream.sh # 停止推流
|
|
|
|
|
+├── config/
|
|
|
|
|
+│ ├── stream.env.example # 配置模板
|
|
|
|
|
+│ └── stream.env # 实际配置(需创建)
|
|
|
|
|
+└── README.md
|
|
|
|
|
+```
|