zhibo/android-app/网络连接修复说明.md

133 lines
4.0 KiB
Markdown
Raw Permalink Normal View History

2025-12-17 08:47:15 +08:00
# Android 直播应用问题修复说明
## 问题诊断
### 1. RTMP 地址格式错误 ❌
**问题**:后端返回的 RTMP 地址不完整
- 错误格式:`rtmp://10.0.2.2:1935/live`
- 正确格式:`rtmp://10.0.2.2:1935/live/{streamKey}`
**原因**`live-streaming/server/utils/streamUrl.js` 中缺少 streamKey
### 2. Android 应用功能误解 ⚠️
**重要**:你的 Android 应用**不支持推流**
当前应用功能:
- ✅ 创建直播间
- ✅ 查看直播列表
- ✅ 观看直播(播放 HLS/FLV 流)
- ❌ **不能**从 Android 设备推流
正确的使用流程:
1. 在 Android 应用中创建直播间
2. 获取 RTMP 推流地址
3. **在电脑上用 OBS Studio 推流**
4. 在 Android 应用中观看直播
## 已完成的修复 ✅
### 1. 修复后端 RTMP 地址
修改了 `live-streaming/server/utils/streamUrl.js`
```javascript
// 修复前
rtmp: `rtmp://${host}:${rtmpPort}/live`,
// 修复后
rtmp: `rtmp://${host}:${rtmpPort}/live/${streamKey}`,
```
### 2. 更新 Android 应用提示
修改了 `MainActivity.java` 中的提示信息,明确说明需要用 OBS 推流。
## 如何使用
### 步骤 1启动后端服务器
```bash
cd live-streaming
npm start
```
确认服务器运行:
```bash
curl http://localhost:3001/health
```
### 步骤 2重新构建 Android 应用
```bash
cd android-app
gradlew clean assembleDebug
gradlew installDebug
```
或在 Android Studio 中点击 "Run"
### 步骤 3创建直播间
1. 在 Android 应用中点击"开始直播"
2. 填写直播间标题和主播名称
3. 创建成功后会显示 RTMP 推流地址
### 步骤 4使用 OBS 推流
1. 打开 OBS Studio
2. 设置 → 推流
3. 服务器:`rtmp://localhost:1935/live/{你的streamKey}`
- 或直接填写应用显示的完整地址
4. 开始推流
### 步骤 5在 Android 应用中观看
推流成功后,直播间会显示"直播中"状态,点击进入即可观看。
## Android 模拟器网络说明
在 Android 模拟器中:
- `10.0.2.2` = 宿主机的 `localhost`
- `10.0.2.16` = 模拟器自己的 IP
所以:
- Android 应用访问 API`http://10.0.2.2:3001/api/`
- OBS 推流地址:`rtmp://localhost:1935/live/{streamKey}`
- Android 观看地址:`http://10.0.2.2:8080/live/{streamKey}.flv`
## 常见问题
### Q: 为什么 Android 应用不能直接推流?
A: 从 Android 设备推流需要:
- 摄像头/麦克风权限
- RTMP 推流库(如 librtmp
- 视频编码处理
- 当前应用没有实现这些功能
### Q: 如果想让 Android 应用支持推流怎么办?
A: 需要添加推流功能,可以使用:
- [yasea](https://github.com/begeekmyfriend/yasea) - Android RTMP 推流库
- [LiveVideoBroadcaster](https://github.com/ant-media/LiveVideoBroadcaster) - Ant Media 的推流方案
### Q: 推流后 Android 应用看不到直播?
A: 检查:
1. OBS 是否成功推流(查看 OBS 状态栏)
2. 后端服务器是否收到推流(查看服务器日志)
3. RTMP 地址和 streamKey 是否正确
4. 防火墙是否阻止了端口 1935 和 8080
### Q: 出现"服务器异常"错误?
A: 可能原因:
1. 后端服务器未启动
2. 网络连接问题
3. API 地址配置错误
4. 查看 Android Studio 的 Logcat 获取详细错误信息
## 防火墙配置
如果遇到连接问题,添加防火墙规则:
```powershell
netsh advfirewall firewall add rule name="Node.js API" dir=in action=allow protocol=TCP localport=3001
netsh advfirewall firewall add rule name="RTMP Server" dir=in action=allow protocol=TCP localport=1935
netsh advfirewall firewall add rule name="HTTP-FLV" dir=in action=allow protocol=TCP localport=8080
```
## 相关文件
- 后端服务器:`live-streaming/server/index.js`
- RTMP 地址生成:`live-streaming/server/utils/streamUrl.js`
- Android 配置:`android-app/app/build.gradle.kts`
- Android 主界面:`android-app/app/src/main/java/com/example/livestreaming/MainActivity.java`
- Android 直播间:`android-app/app/src/main/java/com/example/livestreaming/RoomDetailActivity.java`