initial commit

This commit is contained in:
Caleb
2026-03-01 15:59:27 +08:00
commit a9e97d56cb
1426 changed files with 172367 additions and 0 deletions

View File

@@ -0,0 +1,140 @@
# 连麦功能实现说明(简化版)
## 功能概述
`SCLivePusherViewController`(直播推流页面)中添加了连麦功能,使用简单的 UIAlertController 列表选择连麦对象。
## 实现的功能
### 1. 连麦按钮
- 位置:右上角,关闭按钮左侧
- 图标:
- 未连麦状态:`person.2.wave.2`(两个人挥手)
- 连麦中状态:`person.2.slash`(两个人被划掉)
- 显示时机:开始直播后显示,结束直播时隐藏
- 背景色:
- 未连麦:半透明灰色
- 连麦中:红色
### 2. 连麦流程
#### 开始连麦
1. 点击连麦按钮
2. 显示 "正在获取直播列表..." 加载提示
3. 调用 API 获取正在直播的用户列表
4. 弹出 ActionSheet 样式的列表,显示 "流ID: xxx" 格式
5. 选择一个流ID后
- UI 切换到双屏模式
- 左侧:本地推流画面
- 右侧:连麦用户画面
- 单个视图宽度:`(屏幕宽度 - 8px) / 2`
- 宽高比9:16
#### 断开连麦
1. 再次点击连麦按钮
2. 停止连麦播放器
3. UI 恢复全屏模式
4. 按钮恢复未连麦状态
### 3. 自动处理
- 结束直播时自动断开连麦
- 页面退出时自动断开连麦
- 播放器出错时自动断开并提示用户
## 修改的文件
### SCLivePusherViewController.h
- 添加 `isLinking` 属性:连麦状态
- 添加 `linkingStream` 属性:连麦流信息
### SCLivePusherViewController.m
新增导入:
- `<AFNetworking/AFNetworking.h>`
- `<YYModel/YYModel.h>`
- `AVLiveStreamModel.h`
- `AVConstants.h`
新增属性:
- `linkButton`:连麦按钮
- `linkPlayer`:连麦播放器
- `linkPlayerView`:连麦播放器视图
- `localPusherView`:本地推流视图
新增方法:
- `linkButtonTapped`:连麦按钮点击
- `showLiveStreamSelector`:获取并显示直播列表
- `showStreamListWithStreams:`显示流ID选择列表
- `startLinkWithStream:`:开始连麦
- `setupLinkViews`:设置双屏布局
- `startLinkPlayer`:启动连麦播放器
- `disconnectLink`:断开连麦
- 实现 `SellyLivePlayerDelegate` 代理方法
## UI 展示
### 连麦列表UIAlertController
```
┌─────────────────────────┐
│ 选择连麦用户 │
│ 请选择要连麦的直播流 │
│ │
│ 流ID: stream_001 │
│ 流ID: stream_002 │
│ 流ID: stream_003 │
│ │
│ 取消 │
└─────────────────────────┘
```
### 双屏布局
```
连麦前: 连麦中:
┌─────────────┐ ┌──────┬──────┐
│ │ │ │ │
│ 全屏直播 │ → │ 本地 │ 连麦 │
│ │ │ 9:16 │ 9:16 │
└─────────────┘ └──────┴──────┘
← 8px间距 →
```
## 播放器状态
```objective-c
typedef NS_ENUM(NSInteger, SellyPlayerState) {
SellyPlayerStateIdle = 0, // 空闲
SellyPlayerStateConnecting = 1, // 连接中
SellyPlayerStatePlaying = 2, // 播放中
SellyPlayerStatePaused = 3, // 已暂停
SellyPlayerStateStoppedOrEnded = 4, // 已停止
SellyPlayerStateFailed = 5 // 失败(自动断开连麦)
};
```
## 依赖说明
项目需要集成:
- SellyCloudSDK直播推拉流
- AFNetworking网络请求
- YYModelJSON 解析)
- MasonryAuto Layout
常量配置AVConstants.h
- `V_HOST`
- `APP_ID`
- `APP_SECRET`
## 优化点
相比完整版选择器:
1. ✅ 无需额外创建自定义视图控制器
2. ✅ 使用系统原生 UIAlertController更轻量
3. ✅ 只显示流ID简单直观
4. ✅ 代码更少,维护更简单
5. ✅ 自动适配 iPhone 和 iPad
## 注意事项
1. 连麦功能仅在直播中可用
2. 暂不支持横屏连麦
3. 网络错误会有友好提示
4. 空列表会提示 "暂无正在直播的用户"