# OBS 推流问题诊断与解决 ## 🔍 问题现象 - ✅ OBS 显示"直播中" - ❌ Android 模拟器显示"未开播" - ❌ 视频无法播放 ## 🎯 根本原因 **你在 OBS 中使用了错误的推流地址!** ### ❌ 错误做法 你可能直接复制了 Android 应用显示的地址: ``` rtmp://10.0.2.2:1935/live/a9c62788-135e-44cb-bbd1-6dbac2f5bf14 ``` **问题**:`10.0.2.2` 是 Android 模拟器专用的地址,OBS 无法识别! ### ✅ 正确做法 OBS 应该使用: ``` rtmp://localhost:1935/live/a9c62788-135e-44cb-bbd1-6dbac2f5bf14 ``` --- ## 🔧 立即修复(3 步) ### 步骤 1:停止 OBS 推流 1. 在 OBS 中点击 **"停止推流"** 按钮 2. 等待状态栏显示停止 ### 步骤 2:修改推流地址 #### 方法 A:完整地址方式 1. 点击 **"设置"** → **"推流"** 2. **服务器** 改为: ``` rtmp://localhost:1935/live/a9c62788-135e-44cb-bbd1-6dbac2f5bf14 ``` **注意**:把 `10.0.2.2` 改成 `localhost` 3. **串流密钥**:留空 4. 点击 **"确定"** #### 方法 B:分开填写方式 1. 点击 **"设置"** → **"推流"** 2. **服务器**: ``` rtmp://localhost:1935/live ``` 3. **串流密钥**: ``` a9c62788-135e-44cb-bbd1-6dbac2f5bf14 ``` 4. 点击 **"确定"** ### 步骤 3:重新开始推流 1. 点击 **"开始推流"** 按钮 2. 等待 2-3 秒 3. 检查状态栏是否显示"直播中" --- ## ✅ 验证推流成功 ### 方法 1:查看 OBS 状态栏 正常推流应该显示: ``` 直播中 | 00:00:15 | 2500 kb/s | 0 丢帧 ``` **成功标志**: - ✅ 显示"直播中" - ✅ 有比特率数据(如 2500 kb/s) - ✅ 丢帧数为 0 或很少 **失败标志**: - ❌ 提示"连接失败" - ❌ 状态栏显示红色错误 - ❌ 比特率为 0 ### 方法 2:检查 SRS 服务器 打开浏览器访问: ``` http://localhost:1985/api/v1/streams/ ``` **成功时应该看到**: ```json { "code": 0, "streams": [ { "name": "a9c62788-135e-44cb-bbd1-6dbac2f5bf14", "app": "live", "publish": { "active": true } } ] } ``` **失败时会看到**: ```json { "code": 0, "streams": [] } ``` ### 方法 3:检查后端 API 打开浏览器访问: ``` http://localhost:3001/api/rooms ``` 找到你的直播间,检查 `isLive` 字段: ```json { "id": "a9c62788-135e-44cb-bbd1-6dbac2f5bf14", "isLive": true, ← 应该是 true "streamUrls": { "rtmp": "rtmp://localhost:1935/live/a9c62788-135e-44cb-bbd1-6dbac2f5bf14" } } ``` ### 方法 4:在 Android 应用中查看 1. 回到 Android 模拟器 2. 下拉刷新直播间列表 3. 直播间状态应该显示 **"直播中"**(红色标签) 4. 点击进入应该能看到视频 --- ## 📋 完整的正确配置示例 ### 你的直播间信息 ``` 直播间 ID: a9c62788-135e-44cb-bbd1-6dbac2f5bf14 Stream Key: a9c62788-135e-44cb-bbd1-6dbac2f5bf14 ``` ### OBS 推流设置(完整地址方式) ``` 服务: 自定义... 服务器: rtmp://localhost:1935/live/a9c62788-135e-44cb-bbd1-6dbac2f5bf14 串流密钥: (留空) ``` ### OBS 推流设置(分开填写方式) ``` 服务: 自定义... 服务器: rtmp://localhost:1935/live 串流密钥: a9c62788-135e-44cb-bbd1-6dbac2f5bf14 ``` ### Android 应用中显示的地址 ``` 推流地址: rtmp://10.0.2.2:1935/live/a9c62788-135e-44cb-bbd1-6dbac2f5bf14 电脑本机 OBS 可用: rtmp://localhost:1935/live/a9c62788-135e-44cb-bbd1-6dbac2f5bf14 ``` **记住**:OBS 使用第二个地址(localhost)! --- ## 🎬 完整操作流程(重新来一遍) ### 1. 确保后端服务器运行 ```bash cd live-streaming node server/index.js ``` ### 2. 在 Android 应用中创建直播间 - 点击"开始直播" - 填写标题和主播名称 - 点击"创建" - **记下 streamKey**(或点击"复制地址") ### 3. 配置 OBS - 打开 OBS Studio - 点击"设置" → "推流" - 服务:自定义... - 服务器:`rtmp://localhost:1935/live/a9c62788-135e-44cb-bbd1-6dbac2f5bf14` - **重要**:使用 `localhost`,不是 `10.0.2.2` - 点击"确定" ### 4. 添加视频源(如果还没有) - 点击"来源"区域的 + 号 - 选择"视频捕获设备"(摄像头)或"显示器捕获"(屏幕) - 配置并确定 ### 5. 开始推流 - 点击"开始推流" - 等待 2-3 秒 - 检查状态栏显示"直播中" ### 6. 在 Android 应用中观看 - 回到 Android 模拟器 - 下拉刷新或重新打开应用 - 直播间应该显示"直播中" - 点击进入观看 --- ## 🐛 常见错误及解决 ### 错误 1:OBS 提示"连接失败" **原因**:推流地址错误 **解决**: 1. 检查地址是否使用 `localhost` 而不是 `10.0.2.2` 2. 检查 streamKey 是否正确 3. 检查 SRS Docker 容器是否运行:`docker ps` ### 错误 2:OBS 显示"直播中"但 Android 显示"未开播" **原因**:推流到了错误的地址或 streamKey 不匹配 **解决**: 1. 访问 http://localhost:1985/api/v1/streams/ 查看实际推流的 streamKey 2. 对比 Android 应用中的 streamKey 是否一致 3. 如果不一致,修改 OBS 的推流地址 ### 错误 3:Android 应用显示"直播中"但视频黑屏 **原因**:视频格式或网络问题 **解决**: 1. 等待 5-10 秒(HLS 需要缓冲) 2. 退出直播间重新进入 3. 检查后端日志是否有错误 4. 确认 HLS 地址可访问:http://localhost:8080/live/a9c62788-135e-44cb-bbd1-6dbac2f5bf14.m3u8 ### 错误 4:推流一段时间后断开 **原因**:网络不稳定或比特率过高 **解决**: 1. 降低 OBS 的视频比特率(设置 → 输出 → 2500 → 1500 Kbps) 2. 降低分辨率(设置 → 视频 → 1080p → 720p) 3. 检查网络连接 --- ## 📸 OBS 设置截图说明 ### 推流设置界面 ``` ┌─────────────────────────────────────┐ │ 设置 │ ├─────────────────────────────────────┤ │ 推流 │ │ │ │ 服务: [自定义... ▼] │ │ │ │ 服务器: │ │ ┌─────────────────────────────────┐ │ │ │rtmp://localhost:1935/live/a9c62│ │ ← 填这里 │ │788-135e-44cb-bbd1-6dbac2f5bf14 │ │ │ └─────────────────────────────────┘ │ │ │ │ 串流密钥: │ │ ┌─────────────────────────────────┐ │ │ │ │ │ ← 留空 │ └─────────────────────────────────┘ │ │ │ │ [取消] [确定] │ └─────────────────────────────────────┘ ``` --- ## 🔍 调试命令 ### 检查 SRS 推流状态 ```bash curl http://localhost:1985/api/v1/streams/ ``` ### 检查后端直播间状态 ```bash curl http://localhost:3001/api/rooms ``` ### 检查特定直播间 ```bash curl http://localhost:3001/api/rooms/a9c62788-135e-44cb-bbd1-6dbac2f5bf14 ``` ### 检查 Docker 容器 ```bash docker ps ``` ### 检查端口占用 ```bash netstat -ano | findstr :1935 netstat -ano | findstr :3001 ``` --- ## 💡 关键要点总结 ### ✅ 正确的做法 1. **Android 应用**:用于创建直播间和观看 2. **OBS 推流地址**:使用 `localhost`,不是 `10.0.2.2` 3. **streamKey**:必须与直播间的 streamKey 完全一致 4. **验证推流**:访问 http://localhost:1985/api/v1/streams/ 确认 ### ❌ 常见错误 1. 直接复制 Android 应用显示的 `10.0.2.2` 地址给 OBS 2. streamKey 输入错误或不完整 3. 忘记把 `10.0.2.2` 改成 `localhost` 4. SRS 服务器未启动 ### 🎯 记住这个公式 ``` Android 应用显示: rtmp://10.0.2.2:1935/live/{streamKey} ↓ 改成 ↓ OBS 实际使用: rtmp://localhost:1935/live/{streamKey} ``` --- ## 📞 需要帮助? 如果按照以上步骤操作后仍然有问题: 1. 检查后端服务器日志(命令行窗口) 2. 检查 OBS 日志(帮助 → 日志文件) 3. 访问 http://localhost:1985/api/v1/streams/ 查看实际推流状态 4. 截图 OBS 的推流设置和错误信息 --- **现在就去修改 OBS 的推流地址吧!** 🚀