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