# 连麦功能实现说明(简化版) ## 功能概述 在 `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 新增导入: - `` - `` - `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(网络请求) - YYModel(JSON 解析) - Masonry(Auto Layout) 常量配置(AVConstants.h): - `V_HOST` - `APP_ID` - `APP_SECRET` ## 优化点 相比完整版选择器: 1. ✅ 无需额外创建自定义视图控制器 2. ✅ 使用系统原生 UIAlertController,更轻量 3. ✅ 只显示流ID,简单直观 4. ✅ 代码更少,维护更简单 5. ✅ 自动适配 iPhone 和 iPad ## 注意事项 1. 连麦功能仅在直播中可用 2. 暂不支持横屏连麦 3. 网络错误会有友好提示 4. 空列表会提示 "暂无正在直播的用户"