zhibo/如何获取RTMP地址.md
xiao12feng@outlook.com 40bfd4ec5c 直播功能正常使用
2025-12-17 08:47:15 +08:00

337 lines
9.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 如何获取 RTMP 推流地址
## 方法 1通过 Android 应用获取(最简单)✅
### 步骤 1启动后端服务器
```bash
cd live-streaming
node server/index.js
```
**重要**:保持这个窗口打开!
### 步骤 2在 Android 应用中创建直播间
1. 打开 Android 应用(在模拟器中)
2. 点击右上角的 **"开始直播"** 按钮
![开始直播按钮位置](位置:屏幕右上角)
3. 填写直播间信息:
```
直播间标题:我的直播间
主播名称:小明
```
4. 点击 **"创建"** 按钮
### 步骤 3获取 RTMP 地址
创建成功后会弹出对话框,显示:
```
推流地址:
rtmp://10.0.2.2:1935/live/868c49cc-1021-4664-95a3-ed71e789adb2
电脑本机 OBS 可用:
rtmp://localhost:1935/live/868c49cc-1021-4664-95a3-ed71e789adb2
```
### 步骤 4复制地址
- 点击 **"复制地址"** 按钮
- 地址已复制到剪贴板
- 可以直接粘贴到 OBS 中使用
### ⚠️ 重要提示
**在 OBS 中使用时**
- ✅ 使用:`rtmp://localhost:1935/live/868c49cc-1021-4664-95a3-ed71e789adb2`
- ❌ 不要用:`rtmp://10.0.2.2:1935/live/...`(这是给 Android 模拟器用的)
**地址说明**
- `rtmp://` - 协议
- `localhost` - 本机地址
- `1935` - RTMP 端口
- `/live/` - 应用名称
- `868c49cc-1021-4664-95a3-ed71e789adb2` - 你的 streamKey每个直播间不同
---
## 方法 2查看已创建的直播间
如果你已经创建过直播间,想再次查看 RTMP 地址:
### 在 Android 应用中查看
1. 打开应用,在首页看到直播间列表
2. 点击任意直播间进入详情页
3. 向下滚动,找到 **"推流信息"** 区域
4. 可以看到:
```
推流地址
rtmp://10.0.2.2:1935/live/868c49cc-1021-4664-95a3-ed71e789adb2
电脑本机 OBS 可用(等价地址)
rtmp://localhost:1935/live/868c49cc-1021-4664-95a3-ed71e789adb2
推流密钥
868c49cc-1021-4664-95a3-ed71e789adb2
```
5. 点击 **"复制地址"** 按钮
---
## 方法 3通过 API 获取(技术方式)
如果你想通过代码或命令行获取:
### 查看所有直播间
```bash
curl http://localhost:3001/api/rooms
```
返回示例:
```json
{
"success": true,
"data": [
{
"id": "868c49cc-1021-4664-95a3-ed71e789adb2",
"title": "我的直播间",
"streamerName": "小明",
"streamKey": "868c49cc-1021-4664-95a3-ed71e789adb2",
"isLive": false,
"streamUrls": {
"rtmp": "rtmp://localhost:1935/live/868c49cc-1021-4664-95a3-ed71e789adb2",
"flv": "http://localhost:8080/live/868c49cc-1021-4664-95a3-ed71e789adb2.flv",
"hls": "http://localhost:8080/live/868c49cc-1021-4664-95a3-ed71e789adb2.m3u8"
}
}
]
}
```
### 查看特定直播间
```bash
curl http://localhost:3001/api/rooms/868c49cc-1021-4664-95a3-ed71e789adb2
```
---
## 方法 4查看持久化文件
直播间数据保存在文件中,可以直接查看:
### 文件位置
```
live-streaming/data/rooms.json
```
### 打开文件
用记事本或 VS Code 打开,内容示例:
```json
[
{
"id": "868c49cc-1021-4664-95a3-ed71e789adb2",
"title": "我的直播间",
"streamerName": "小明",
"streamKey": "868c49cc-1021-4664-95a3-ed71e789adb2",
"isLive": false,
"viewerCount": 0,
"createdAt": "2025-12-16T09:20:00.000Z",
"startedAt": null
}
]
```
### 构建 RTMP 地址
根据 `streamKey` 构建:
```
rtmp://localhost:1935/live/{streamKey}
```
例如:
```
rtmp://localhost:1935/live/868c49cc-1021-4664-95a3-ed71e789adb2
```
---
## 在 OBS 中使用 RTMP 地址
### 方式 A完整地址推荐
1. 打开 OBS Studio
2. 点击 **"设置"** → **"推流"**
3. **服务**:选择 "自定义..."
4. **服务器**:粘贴完整地址
```
rtmp://localhost:1935/live/868c49cc-1021-4664-95a3-ed71e789adb2
```
5. **串流密钥**:留空
6. 点击 **"确定"**
### 方式 B分开填写
1. 打开 OBS Studio
2. 点击 **"设置"** → **"推流"**
3. **服务**:选择 "自定义..."
4. **服务器**
```
rtmp://localhost:1935/live
```
5. **串流密钥**
```
868c49cc-1021-4664-95a3-ed71e789adb2
```
6. 点击 **"确定"**
**两种方式效果相同**,选择你喜欢的即可。
---
## 快速参考
### RTMP 地址格式
```
rtmp://[主机]:[端口]/[应用]/[streamKey]
```
### 示例
```
rtmp://localhost:1935/live/868c49cc-1021-4664-95a3-ed71e789adb2
│ │ │ │ │
│ │ │ │ └─ streamKey每个直播间唯一
│ │ │ └────── 应用名称(固定为 live
│ │ └──────────── RTMP 端口(固定为 1935
│ └────────────────────── 主机地址OBS 用 localhost
└───────────────────────────── 协议(固定为 rtmp
```
### 地址对照表
| 使用场景 | 地址 |
|---------|------|
| OBS 推流 | `rtmp://localhost:1935/live/{streamKey}` |
| Android 模拟器 | `rtmp://10.0.2.2:1935/live/{streamKey}` |
| 局域网其他设备 | `rtmp://192.168.x.x:1935/live/{streamKey}` |
---
## 常见问题
### ❓ 为什么有两个不同的地址?
**答**
- `rtmp://localhost:1935/...` - 给电脑上的 OBS 用
- `rtmp://10.0.2.2:1935/...` - 给 Android 模拟器用
在 Android 模拟器中,`10.0.2.2` 代表宿主机(你的电脑)的 `localhost`
### ❓ streamKey 是什么?
**答**streamKey 是每个直播间的唯一标识符,就像房间号。每创建一个直播间,系统会自动生成一个新的 streamKey。
### ❓ 可以自定义 streamKey 吗?
**答**:当前版本不支持自定义,系统会自动生成 UUID 作为 streamKey。如果需要自定义需要修改后端代码。
### ❓ 忘记了 RTMP 地址怎么办?
**答**
1. 在 Android 应用中点击直播间查看
2. 或者查看 `live-streaming/data/rooms.json` 文件
3. 或者通过 API 查询:`curl http://localhost:3001/api/rooms`
### ❓ 可以同时创建多个直播间吗?
**答**:可以!每个直播间有独立的 streamKey可以同时推流到不同的直播间。
### ❓ RTMP 地址会变吗?
**答**不会只要不删除直播间RTMP 地址streamKey就不会改变。即使重启服务器地址也会保持不变因为已经持久化保存
---
## 图文演示
### 📱 Android 应用界面
```
┌─────────────────────────────┐
│ 直播系统 [开始直播] │ ← 点击这里
├─────────────────────────────┤
│ │
│ ┌─────────────────────┐ │
│ │ 我的直播间 │ │
│ │ 主播: 小明 │ │
│ │ [直播中] │ │ ← 点击进入查看地址
│ └─────────────────────┘ │
│ │
└─────────────────────────────┘
```
### 📋 创建直播间对话框
```
┌─────────────────────────────┐
│ 创建直播间 │
├─────────────────────────────┤
│ │
│ 直播间标题 │
│ ┌─────────────────────┐ │
│ │ 我的直播间 │ │
│ └─────────────────────┘ │
│ │
│ 主播名称 │
│ ┌─────────────────────┐ │
│ │ 小明 │ │
│ └─────────────────────┘ │
│ │
│ [取消] [创建] │ ← 点击创建
└─────────────────────────────┘
```
### 📺 推流信息对话框
```
┌─────────────────────────────┐
│ 已创建直播间 │
├─────────────────────────────┤
│ │
│ 推流地址: │
│ rtmp://10.0.2.2:1935/... │
│ │
│ 电脑本机 OBS 可用: │
│ rtmp://localhost:1935/... │ ← 这个地址用于 OBS
│ │
│ ⚠️ 注意: │
│ 1. Android 应用只能观看 │
│ 2. 需要用 OBS 在电脑上推流 │
│ 3. OBS 设置:服务器填上面 │
│ 4. 推流后在应用中观看 │
│ │
│ [复制地址] [知道了] │ ← 点击复制
└─────────────────────────────┘
```
---
## 总结
### 最简单的方法 🎯
1. **打开 Android 应用**
2. **点击"开始直播"**
3. **填写信息并创建**
4. **点击"复制地址"**
5. **粘贴到 OBS 中**(记得把 `10.0.2.2` 改成 `localhost`
就这么简单!🎉
---
**需要帮助?**
- 查看 `使用教程.md` 获取完整教程
- 查看 `android-app/问题修复总结.md` 解决常见问题