zhibo/使用教程.md
xiao12feng@outlook.com 40bfd4ec5c 直播功能正常使用
2025-12-17 08:47:15 +08:00

13 KiB
Raw Blame History

Android 直播系统完整使用教程

目录

  1. 系统架构说明
  2. 环境准备
  3. 启动后端服务
  4. Android Studio 使用教程
  5. OBS Studio 推流教程
  6. 完整操作流程
  7. 常见问题解决

系统架构说明

┌──────────────┐
│  电脑 OBS     │ ← 你在这里推流(摄像头/屏幕)
└──────┬───────┘
       │ RTMP 推流
       ↓
┌──────────────┐
│  SRS 服务器   │ ← 接收推流,转换格式
│  (Docker)    │
└──────┬───────┘
       │
       ↓
┌──────────────┐
│  Node.js 后端 │ ← 管理直播间,提供 API
└──────┬───────┘
       │ REST API
       ↓
┌──────────────┐
│  Android 应用 │ ← 观看直播
│  (模拟器)     │
└──────────────┘

角色说明

  • OBS:主播端,用于推流(发送视频)
  • Android 应用:观众端,用于观看直播
  • 后端服务:管理直播间,连接 OBS 和 Android

环境准备

1. 必需软件

已安装

  • Node.js
  • Docker Desktop
  • Android Studio
  • Android 模拟器

📥 需要下载

2. 检查 Docker 容器

打开命令行,运行:

docker ps

应该看到 srs-server 容器正在运行:

CONTAINER ID   IMAGE         PORTS                    NAMES
f24a21e0bc02   ossrs/srs:5   0.0.0.0:1935->1935/tcp   srs-server
                             0.0.0.0:8080->8080/tcp
                             0.0.0.0:1985->1985/tcp

如果没有运行,启动它:

cd live-streaming
docker-compose up -d

启动后端服务

步骤 1打开命令行

在项目根目录打开 PowerShell 或 CMD

步骤 2进入后端目录

cd live-streaming

步骤 3启动服务器

node server/index.js

步骤 4验证服务器运行

你应该看到类似输出:

[RoomStore] Loaded 1 rooms from storage
[Media Server] Embedded NodeMediaServer disabled (EMBEDDED_MEDIA_SERVER=0).
API 服务运行在 http://localhost:3001
API 服务也可通过 http://0.0.0.0:3001 访问(用于 Android 模拟器)
SRS RTMP: rtmp://localhost:1935/live/{streamKey}
SRS HTTP: http://localhost:8080/live/{streamKey}.flv

⚠️ 重要:保持这个命令行窗口打开,不要关闭!

步骤 5测试服务器可选

打开浏览器访问:

http://localhost:3001/health

应该看到:

{"status":"ok","timestamp":"2025-12-16T09:30:00.000Z"}

Android Studio 使用教程

步骤 1打开项目

  1. 启动 Android Studio
  2. 点击 Open
  3. 选择 android-app 文件夹
  4. 点击 OK

步骤 2等待 Gradle 同步

  • 首次打开会自动下载依赖
  • 等待底部状态栏显示 "Gradle sync finished"
  • 可能需要 5-10 分钟

步骤 3启动 Android 模拟器

方法 A使用现有模拟器

  1. 点击顶部工具栏的设备下拉菜单
  2. 选择一个模拟器(如 Pixel 5 API 34
  3. 点击绿色的 ▶️ Run 按钮

方法 B创建新模拟器

  1. 点击 ToolsDevice Manager
  2. 点击 Create Device
  3. 选择 PhonePixel 5
  4. 点击 Next
  5. 选择系统镜像(推荐 API 34
  6. 点击 NextFinish
  7. 点击 ▶️ 启动模拟器

步骤 4运行应用

  1. 等待模拟器完全启动(显示主屏幕)
  2. 在 Android Studio 中点击 ▶️ Run 'app'
  3. 应用会自动安装并启动

步骤 5创建直播间

在 Android 应用中:

  1. 点击右上角的 "开始直播" 按钮
  2. 填写信息:
    • 直播间标题:例如 "我的第一次直播"
    • 主播名称:例如 "小明"
  3. 点击 "创建"

步骤 6获取推流地址

创建成功后会显示一个对话框,包含:

推流地址:
rtmp://10.0.2.2:1935/live/868c49cc-1021-4664-95a3-ed71e789adb2

电脑本机 OBS 可用:
rtmp://localhost:1935/live/868c49cc-1021-4664-95a3-ed71e789adb2

⚠️ 注意:
1. Android 应用只能观看直播
2. 需要用 OBS 在电脑上推流
3. OBS 设置:服务器填上面地址即可
4. 推流后在应用中观看

📋 复制推流地址

  • 点击 "复制地址" 按钮
  • 这个地址稍后在 OBS 中使用

步骤 7查看直播间列表

  • 点击 "知道了" 关闭对话框
  • 你会看到刚创建的直播间
  • 状态显示 "未开播"(灰色)

OBS Studio 推流教程

步骤 1下载并安装 OBS

  1. 访问 https://obsproject.com/download
  2. 下载 Windows 版本
  3. 安装(使用默认设置)
  4. 启动 OBS Studio

步骤 2首次配置向导如果出现

如果是第一次打开 OBS会出现配置向导

  1. 使用信息:选择 "优化推流,录制次之"
  2. 视频设置
    • 基础分辨率1920x1080
    • FPS30
  3. 推流信息:选择 "我将使用自定义流媒体服务器"
  4. 点击 "下一步" 完成

步骤 3配置推流设置

3.1 打开设置

  • 点击右下角 "设置" 按钮
  • 或者菜单栏:文件设置

3.2 配置推流

  1. 左侧选择 "推流"

  2. 服务:选择 "自定义..."

  3. 服务器:粘贴从 Android 应用复制的地址

    rtmp://localhost:1935/live/868c49cc-1021-4664-95a3-ed71e789adb2
    

    ⚠️ 重要

    • 如果地址是 rtmp://10.0.2.2:1935/...,改成 rtmp://localhost:1935/...
    • 完整地址包含 streamKey不需要单独填写串流密钥
  4. 串流密钥:留空(因为已经包含在服务器地址中)

  5. 点击 "应用"

3.3 配置输出(可选,优化画质)

  1. 左侧选择 "输出"
  2. 输出模式:简单
  3. 视频比特率2500 Kbps
  4. 编码器x264
  5. 点击 "应用"

3.4 配置视频(可选)

  1. 左侧选择 "视频"
  2. 基础分辨率1920x1080
  3. 输出分辨率1280x720
  4. 常用 FPS 值30
  5. 点击 "确定"

步骤 4添加视频源

方法 A添加摄像头

  1. "来源" 区域点击 +
  2. 选择 "视频捕获设备"
  3. 命名:例如 "摄像头"
  4. 点击 "确定"
  5. 设备:选择你的摄像头
  6. 点击 "确定"

方法 B添加屏幕捕获

  1. "来源" 区域点击 +
  2. 选择 "显示器捕获"
  3. 命名:例如 "屏幕"
  4. 点击 "确定"
  5. 显示器:选择要捕获的屏幕
  6. 点击 "确定"

方法 C添加窗口捕获

  1. "来源" 区域点击 +
  2. 选择 "窗口捕获"
  3. 命名:例如 "浏览器"
  4. 点击 "确定"
  5. 窗口:选择要捕获的窗口
  6. 点击 "确定"

步骤 5调整画面

  • 拖动红色边框调整大小
  • 拖动中心调整位置
  • 右键源 → 变换适应屏幕 可以自动适配

步骤 6开始推流

  1. 点击右下角 "开始推流" 按钮
  2. 按钮变成 "停止推流",底部状态栏显示:
    直播中 | 00:00:15 | 2500 kb/s | 0 丢帧
    

推流成功标志

  • 状态栏显示 "直播中"
  • 有比特率数据(如 2500 kb/s
  • 丢帧数为 0 或很少

推流失败标志

  • 提示 "连接失败"
  • 状态栏显示红色错误
  • 检查推流地址是否正确

步骤 7在 Android 应用中观看

  1. 回到 Android 模拟器
  2. 在直播间列表中,你的直播间状态应该变成 "直播中"(红色)
  3. 点击直播间进入
  4. 等待 2-3 秒,视频开始播放
  5. 你应该能看到 OBS 中的画面

完整操作流程

🎬 完整演示流程

第一步启动所有服务5 分钟)

# 1. 启动 Docker如果未运行
cd live-streaming
docker-compose up -d

# 2. 启动后端服务器
node server/index.js
# 保持窗口打开!

第二步:启动 Android 应用3 分钟)

  1. 打开 Android Studio
  2. 打开 android-app 项目
  3. 启动模拟器
  4. 运行应用(点击 ▶️

第三步创建直播间1 分钟)

  1. 在 Android 应用中点击 "开始直播"
  2. 填写标题和主播名称
  3. 点击 "创建"
  4. 点击 "复制地址" 复制推流地址
  5. 点击 "知道了"

第四步:配置 OBS2 分钟)

  1. 打开 OBS Studio
  2. 点击 "设置""推流"
  3. 服务:选择 "自定义..."
  4. 服务器:粘贴推流地址(改 10.0.2.2localhost
  5. 点击 "确定"

第五步添加视频源2 分钟)

  1. 点击 "来源" 区域的 +
  2. 选择 "视频捕获设备"(摄像头)或 "显示器捕获"(屏幕)
  3. 配置并确定

第六步开始直播1 分钟)

  1. 在 OBS 中点击 "开始推流"
  2. 等待 2-3 秒
  3. 回到 Android 模拟器
  4. 点击直播间进入
  5. 观看直播!🎉

常见问题解决

问题 1Android 应用显示"网络错误"

原因:后端服务器未启动

解决

cd live-streaming
node server/index.js

验证:浏览器访问 http://localhost:3001/health


问题 2OBS 提示"连接失败"

原因 A:推流地址错误

解决

  1. 检查地址格式:rtmp://localhost:1935/live/{streamKey}
  2. 确保使用 localhost 而不是 10.0.2.2
  3. 确保包含完整的 streamKey

原因 BSRS 服务器未运行

解决

docker ps
# 如果没有 srs-server运行
cd live-streaming
docker-compose up -d

问题 3Android 应用显示"未开播"

原因:后端无法检测到推流

解决

  1. 确认 OBS 正在推流(状态栏显示"直播中"
  2. 检查后端日志是否有错误
  3. 重启后端服务器
  4. 在 Android 应用中下拉刷新

验证推流状态 浏览器访问 http://localhost:1985/api/v1/streams/ 应该看到你的 streamKey


问题 4视频播放黑屏

原因 AHLS 转码未启用

解决 检查 live-streaming/.env 中是否有 FFmpeg 配置

FFMPEG_PATH=C:\path\to\ffmpeg.exe

原因 B:网络延迟

解决

  • 等待 5-10 秒
  • 退出直播间重新进入
  • 检查网络连接

原因 CAndroid 播放器不支持格式

解决 查看后端日志,确认 HLS 地址可用


问题 5模拟器无法连接到后端

原因:防火墙阻止

解决

# 以管理员身份运行 PowerShell
netsh advfirewall firewall add rule name="Node.js API" dir=in action=allow protocol=TCP localport=3001

问题 6重启后端后房间消失

原因:已修复!现在房间会自动保存

验证 检查 live-streaming/data/rooms.json 文件是否存在


问题 7OBS 画面卡顿

原因:比特率过高或电脑性能不足

解决

  1. OBS 设置 → 输出
  2. 降低视频比特率2500 → 1500 Kbps
  3. 降低分辨率1080p → 720p
  4. 降低帧率60fps → 30fps

快速参考

端口说明

端口 服务 用途
1935 RTMP OBS 推流
8080 HTTP-FLV/HLS 视频播放
1985 SRS API 推流状态检测
3001 Node.js API Android 应用接口

关键地址

用途 地址
OBS 推流 rtmp://localhost:1935/live/{streamKey}
Android API http://10.0.2.2:3001/api/
健康检查 http://localhost:3001/health
SRS 状态 http://localhost:1985/api/v1/streams/

常用命令

# 启动后端
cd live-streaming
node server/index.js

# 启动 Docker
docker-compose up -d

# 查看 Docker 容器
docker ps

# 停止 Docker
docker-compose down

# 查看端口占用
netstat -ano | findstr :3001

视频教程(建议录制)

如果你想录制视频教程,可以按照以下脚本:

📹 脚本大纲

  1. 开场30秒

    • "大家好,今天教大家如何搭建一个 Android 直播系统"
    • 展示最终效果OBS 推流 → Android 观看
  2. 环境准备2分钟

    • 展示必需软件
    • 检查 Docker 运行状态
  3. 启动后端1分钟

    • 打开命令行
    • 运行 node server/index.js
    • 展示成功日志
  4. Android Studio3分钟

    • 打开项目
    • 启动模拟器
    • 运行应用
    • 创建直播间
    • 复制推流地址
  5. OBS 配置3分钟

    • 打开设置
    • 配置推流地址
    • 添加视频源
    • 开始推流
  6. 观看直播1分钟

    • 回到 Android 应用
    • 点击直播间
    • 展示播放效果
  7. 结尾30秒

    • 总结关键步骤
    • 提醒常见问题

下一步学习

🚀 进阶功能

  • 添加聊天功能
  • 添加礼物打赏
  • 添加观众人数统计
  • 支持多个直播间
  • 添加直播回放

📚 推荐资源


技术支持

如果遇到问题:

  1. 查看本教程的"常见问题解决"部分
  2. 查看 android-app/问题修复总结.md
  3. 查看后端日志输出
  4. 查看 Android Studio 的 Logcat

祝你使用愉快!🎉