将运营区域与飞手认证从首页占位页迁移为完整模块,扩展 Live 播放与推流就绪流程,并新增飞手证书 OSS 上传。 Co-authored-by: Cursor <cursoragent@cursor.com>
2.4 KiB
直播模块
模块职责
Features/Live 承接首页 live_stream_management 和 live_album 权限入口,负责手动直播管理和直播相册素材管理。旧 iOS 工程未接入真推流 SDK,本模块按旧 iOS 对齐,不新增腾讯 TRTC、RTMP 或其他推流 SDK 依赖。
代码结构
LiveAPI:封装/api/app/manual-live/...和/api/app/view-album/...接口。LiveManagementViewModel:管理直播列表分页、创建、开始/暂停、结束和详情失败清理。LivePlaybackViewModel:管理直播详情和直播相册视频的系统播放器 URL、播放、暂停和释放状态。LivePushReadinessViewModel:诊断直播推流地址、相机/麦克风权限、网络状态和当前推流 SDK 接入状态,不触发本机采集推流。LiveAlbumViewModel:管理直播相册日期筛选、分页和删除相册。LiveAlbumCreateViewModel:管理本地图片/视频上传到 OSS 后创建直播相册。LiveAlbumPreviewViewModel:进入相册预览时加载相册详情,并支持删除单个素材。
业务边界
直播详情会从 play_url、pull_url、hls_url、live_url、flv_url 中筛选系统播放器可处理的 http/https 播放地址;push_url 是给 OBS 或第三方工具使用的外部推流地址,不作为播放地址使用。只有 RTMP 推流地址时,页面展示封面、提示和复制入口。
直播相册视频预览使用系统 VideoPlayer 播放可支持的视频地址;图片仍使用 RemoteImage 展示。视频地址不可播放时,页面保留打开和复制原始 URL 的操作。
推流专项按旧 iOS 对齐,只保留诊断层和适配协议,默认 UnsupportedLivePushAdapter 明确提示未接入真推流 SDK;不引入腾讯/TRTC、Agora、HaishinKit、Zego 或 Android youfun_control 的飞控/抓娃娃直播接口。直播详情的“开始/暂停/结束”和“推流模式”只调用 manual-live 业务接口,不启动本机摄像头、麦克风或后台推流。
后续若要接入真推流 SDK,可参考 Android youfun_control 中腾讯 TRTC 的实现路线,但需要单独确认后端房间参数、SDK 版本、真机权限、推流源和人工联调范围。
直播封面创建沿用旧 iOS 的 URL 输入。直播相册素材通过 PhotosPicker 选择后,使用 OSSUploadService.uploadAliveAlbumFile 上传到 live_albums/yyyyMMdd/scenicId/...,再把最终 URL 提交给创建相册接口。