zhibo/OBS推流问题诊断.md
xiao12feng@outlook.com 40bfd4ec5c 直播功能正常使用
2025-12-17 08:47:15 +08:00

8.5 KiB
Raw Blame History

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/

成功时应该看到

{
  "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 应用中查看

  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. 确保后端服务器运行

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 模拟器
  • 下拉刷新或重新打开应用
  • 直播间应该显示"直播中"
  • 点击进入观看

🐛 常见错误及解决

错误 1OBS 提示"连接失败"

原因:推流地址错误

解决

  1. 检查地址是否使用 localhost 而不是 10.0.2.2
  2. 检查 streamKey 是否正确
  3. 检查 SRS Docker 容器是否运行:docker ps

错误 2OBS 显示"直播中"但 Android 显示"未开播"

原因:推流到了错误的地址或 streamKey 不匹配

解决

  1. 访问 http://localhost:1985/api/v1/streams/ 查看实际推流的 streamKey
  2. 对比 Android 应用中的 streamKey 是否一致
  3. 如果不一致,修改 OBS 的推流地址

错误 3Android 应用显示"直播中"但视频黑屏

原因:视频格式或网络问题

解决

  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 推流状态

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

💡 关键要点总结

正确的做法

  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 的推流地址吧! 🚀