七牛云实时音视频集成方案(iOS)

产品需求

学生老师上课过程中能互相看到对方视频窗口

对视频窗口能做一些基本操作: 开启, 关闭, 拖动, 缩放

客户端技术拆解

双方只能看到对方的视频窗口, 在屏幕上显示约 300 * 200 像素的视频窗口,支持拖动,关闭

老师端UI增加开启视频入口,视频功能默认关闭,需要老师端主动打开.

一方关闭视频时需要告知对方关闭视频窗口

增加4G模式下的UI提醒交互

客户端SDK中的功能使用

    音频功能不启动

    美颜?

    滤镜?

    前后镜头切换?

    码率限制?

    获取连麦房间统计信息(帧率、码率等)?

设计方案(初稿)

视频功能初版仅作为实验性功能,为保证出错不影响现有流程,所以开始时机最好放到现有流程最后(成功进入课堂后),且需确保视频关闭后,停掉客户端所有相关服务,以免占用资源.

服务端代码最好不依赖现有服务(现有服务可能变动很大),客户端可通过主动发起http请求为服务端提供必要参数.详细见以下.

架构图


服务端开发项

集成七牛服务端SDK,定义http接口,供客户端获取roomToken.

为用户创建视频房间,并将通话房间和对应用户的 Id 关联起来.

计算加入房间的 roomToken 并提供给 App,该 roomToken 是结合 userId、roomName 等信息(roomName:系统sessionID,userId:用户username),使用七牛的 AccessKey 和 SecretKey 按照一定的规则生成.参看文档https://doc.qnsdk.com/rtn/docs/server_overview

提供视频的业务逻辑,如:视频请求/应答业务逻辑、服务端房间管理和踢人等.

客户端开发项

注册SDK,地址https://doc.qnsdk.com/rtn/ios/docs/sdk_overview.html

老师端通过http接口提供的必要参数(roomName:sessionID,userId:用户username).

获取http接口返回的RoomToken.

本地获取视频流推流到RoomToken.

tcp通知学生端发起以上1,2,3流程.(需辅导服务增加ext指令).

根据RoomToken拉取对方视频流(客户端SDK回调),如果拉取成功,则展示对方窗口.

质量提升

缩放需要支持分辨率动态调整.

需要根据网络情况动态调整码率.

需要自动重连逻辑.

你可能感兴趣的:(七牛云实时音视频集成方案(iOS))