# 《移动平台开发》课程报告
# (在线课堂)
# 1 概述
## 1.1 选题背景
在新冠疫情的影响下,为了不影响学生正常课程,我国推出了“停课不停学”政策,推 进了在线教育的发展;同时,随着互联网的不断发展与普及,我国的在线教育发展迅速。
在线教育是通过网络学习知识的行为,是通过互联网信息技术开展教学活动的方式,经 过多年的发展,目前已逐渐成熟,并向精细化发展。但疫情期间实践也暴露出一些问题,例 如电脑对中小学生的普及程度不高,部分课堂受到地域限制等。这些问题表明,更加完善的 移动端在线学习工具更需要普及。
## 1.2 目的意义
2020疫情期间,各大院校以及线下培训机构全面停止线下授课,采用线上授课方式进行教学,推动用户从线下转为线上,使得各大院校学生逐渐习惯在线学习的方式,让广大学 生拥有更多获取知识的途径与习惯。同时丰富学生的学习方式,提升学生的学习兴趣和提高 教学质量。
## 1.3 人员分工
曾小庆 1862410131
整体架构设计; UI 布局设计;
音视频文字交互功能的实现。
孟繁致 1862410133
实现移动端用户登录和注册的界面设计; 后端 SpringBoot 工程的搭建;
账户信息关系型数据库的设计。
姚徐 1862410127
阿里云服务器的配置; 云端数据库的搭建;
Kurento 流媒体服务器的搭建,因时间原因未使用。
# 2 需求分析
## 2.1 功能性需求
1. 登录注册功能;
2. 一对一视频对讲功能;
3. 在线直播教学功能;
4. 打开关闭麦克风或摄像头功能;
5. 课堂多人语音聊天讨论功能;
6. 文字聊天功能;
7. 画板功能;
## 2.2 数据性需求
1. 用户基本信息,包括用户会话 ID,用户名称与密码等;
2. 用户发送一对一视频请求时,需要传输对应的操作字符串,发起请求用户的 fromID,被呼叫方 toID,语音视频流的发送与接收,同时显示本次通话时间;
3. 当用户发起直播,需要传输对应操作的字符串,申请直播的用户 ID 以及创建的直播间名称,返回在线人数等实时数据与人数上限。
## 2.3 技术可行性
目前存在 webRTC、rtmp、腾讯 TRTC 等音视频互动解决方案,可以调用相关 API 或 SDK 进行开发,以实现以上功能性需求。
## 2.4 业务流程
我们主要通过以下步骤,来实现视频对讲业务的完成:
1. 音频和视频采集:通过硬件设备对视频和音频进行采集,主要是利用摄像头和收 音装置进行数据的采集,并将其转化为电信号。
2. 视频预处理:对视频帧进行美化,使视频呈现多种效果。
3. 视频的编码和封装:为了降低视频数据量,把视频的像素数据压缩成视频码流,
以防止视频过大。进行封装则有效减少了加载的延迟。
4. 推流:采集好的音视频数据,通过流媒体协议来发送到流媒体服务器。
5. 服务器处理数据:数据分发,将网站的内容发送到用户网路的边缘,方便用户获 得内容。同时还有回源,录制,实时转码等操作。
6. 拉流:通过传输协议,从流媒体服务器获取视频数据。
7. 视频解码:从视频,音频的混合流中分离视频和音频,并进行解码。
8. 视频播放:将音视频通过显示器和音响播放来。
## 2.5 业务逻辑
点击进入 app,选择进行身份验证,验证通过后,进入主页面,选择相应需要的服务,通过调用 starRTC 的 SDK 接口与云服务器的流媒体服务通信,进而实现相应的功能。具体逻辑如下图所示:
![](https://www.writebug.com/myres/static/uploads/2021/12/16/d4875f0bf28a258b90f5d965430aa65b.writebug)
# 3 总体设计
## 3.1 系统架构设计
移动端:用户使用该产品时需要连接云服务器中的 MySQL 数据库,进行身份验证后,登录后获取接入点信息,与接入服务相连接。输入相应服务需要的数据,点击执行相应 操作,例如一对一教学服务,需要输入对方用户 ID 进行通信。最后输出界面,呈现音视频画面。
MySQL 服务端:服务器收到移动端传送的数据后,与 MySQL 数据库数据进行匹配, 匹配成功则返回相应字符串数据,提示用户端进行页面跳转。否则进行相应提示。
流媒体服务端:服务器相应端口收到移动端发送的数据时,对数据进行解析,匹 配需要进行的操作,例如选择一对一直播服务,则开启 voipServer 服务,并根据传输的用户 ID 进行媒体流的分配。
![](https://www.writebug.com/myres/static/uploads/2021/12/16/6c228dd8e8036ee9c8497df6c54807de.writebug)
## 3.2 功能结构设计
在线课堂系统拥有以下功能:
- 包括基本的用户管理功能。
- 一对一辅导功能。可以实现音视频同时通话和音频、视频通话。
- 教学直播功能。包括发起直播和收看直播的功能,除此之外还有画板和文字交流 功能。
- 课堂讨论功能。用户可以进行多人的语音和文字同时交流。
具体如下图所示:
![](https://www.writebug.com/myres/static/uploads/2021/12/16/ddcbab088d211f55e641c2f8540fcb45.writebug)
## 3.3 数据结构设计
1 用户基本数据:目前只需要简单的登录注册功能,因此只简单设计了用户的姓名 与密码字段。
![](https://www.writebug.com/myres/static/uploads/2021/12/16/a664fcff6303dd9a16d1fc09fab4e233.writebug)
2 音视频交互数据:当用户创建直播视频流时需要以下数据:
userId: 申请创建 channel 的用户 ID
roomId: 此 channel 对应的聊天室 ID,如果无聊天功能,则没有 roomId 参数
channelId: 流 ID
conCurrentNumber: 此房间的人数上限
extra: (可选)客户端 SDK 发过来的自定义数据
若进行一对一视频,还需要提供对方 ID 进行音视频流的传输。
# 4 详细设计与实现
## 4.1 主页面设计
整个页面顶端为软件标题“在线课堂”,单独设置为 title.xml 静态资源,以便每个页面顶端布局一致。从上到下分为四块,第一块为用户相关信息,头像为随机设置, ID 为服务器随机生成 ID,用于发起和接收通话的唯一标识。第二块为一对一辅导功能, 为整个图片板块设置一个点击监听事件,当接收到监听事件后跳转到一对一辅导的功能相关界面。剩余界面采用相同布局和事件跳转方式。
![](https://www.writebug.com/myres/static/uploads/2021/12/16/61a494a423629d48aeb15fcacde28fc8.writebug)
## 4.2 一对一辅导
当前用户发起视频请求,需要设置媒体类型,例如选择音视频或只有音频等;用户将自己 ID 与想要实现通话的用户的 ID 封装为键值对数据,移动端初始化设置显示双方 画面的 player,若不需要视频,则传输 NULL,将所有数据通过 starRTC 提供的 SDK 向 voipServer 接口发送。voipServer 接口接收到数据后进行解析,向被呼叫方发送数据, 提示对方有视频通话需要处理,若选择接听,服务器通过 API 返回字符串“1”给发送端并加入双方会话列表中,发送端用户进行视频的推流编码与拉流解析,接收方进行同样的操作。演示效果与相应会话列表如下图。
![](https://www.writebug.com/myres/static/uploads/2021/12/16/5627d01033d7c243c87a7c5745b35bf9.writebug)
![](https://www.writebug.com/myres/static/uploads/2021/12/16/08680dcbfb622ee38b340feabb1453f9.writebug)
## 4.3 课堂讨论
当用户创建课堂讨论聊天室,用户将自己 ID 和创建的聊天室名称封装为键值对数据, 将所有数据通过 starRTC 提供的 SDK 向 chatRoomServer 接口发送。chatRoomServer 接口接 收到数据后进行解析,
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
1. 登录注册功能; 2. 一对一视频对讲功能; 3. 在线直播教学功能; 4. 打开关闭麦克风或摄像头功能; 5. 课堂多人语音聊天讨论功能; 6. 文字聊天功能; 7. 画板功能;
资源推荐
资源详情
资源评论
收起资源包目录
基于Android+MySQL实现在线课堂APP【100012074】 (297个子文件)
tone_cuver_sample.acv 62B
gradlew.bat 2KB
.gitignore 118B
.gitignore 47B
.gitignore 7B
build.gradle 1KB
build.gradle 532B
settings.gradle 15B
gradlew 5KB
star_rtc_sdk.jar 373KB
gradle-wrapper.jar 52KB
VideoLiveActivity.java 43KB
AudioLiveActivity.java 33KB
SuperRoomActivity.java 26KB
VoipActivity.java 15KB
StatusBarUtils.java 14KB
MLOC.java 12KB
FloatWindowsService.java 11KB
StarNetUtil.java 11KB
SuperRoomListActivity.java 11KB
VideoLiveListActivity.java 11KB
AudioLiveListActivity.java 11KB
VoipAudioActivity.java 10KB
DensityUtils.java 9KB
RegisterActivity.java 8KB
VoipListActivity.java 8KB
AEvent.java 7KB
CoreDB.java 7KB
SplashActivity.java 7KB
KeepLiveService.java 7KB
StarHttpUtil.java 7KB
CircularCoverView.java 6KB
BaseActivity.java 6KB
AlbumUtil.java 5KB
LoginActivity.java 5KB
VoipAudioRingingActivity.java 4KB
VoipRingingActivity.java 4KB
XHLiveManagerListener.java 3KB
InterfaceUrls.java 3KB
LineChartView.java 3KB
VoipCreateActivity.java 3KB
XHSuperRoomManagerListener.java 3KB
XHVoipManagerListener.java 3KB
VideoLiveCreateActivity.java 3KB
StarAvDemoActivity.java 3KB
XHChatManagerListener.java 2KB
SuperRoomCreateActivity.java 2KB
CoreDBManager.java 2KB
AudioLiveCreateActivity.java 2KB
ColorUtils.java 2KB
HistoryBean.java 2KB
XHVoipP2PManagerListener.java 1KB
LoginOrRegisterActivity.java 1KB
MyDatabaseHelper.java 1KB
XHLoginManagerListener.java 1KB
ApplicationUtil.java 1KB
DemoVideoSourceCallback.java 1KB
ViewPosition.java 966B
StarListUtil.java 919B
MessageBean.java 902B
ExampleUnitTest.java 400B
LiveInfo.java 224B
SuperRoomInfo.java 219B
AudioLiveInfo.java 219B
App.java 175B
IEventListener.java 160B
ICallback.java 145B
audio_live_bg.jpg 91KB
LICENSE 1KB
myoutput.md 12KB
myoutput.md.md 11KB
README.md 11KB
c6241016_1862410131_曾小庆.pdf 1.64MB
bg0.png 1.77MB
bg.png 1.59MB
bgb.png 1.57MB
icon_add_more.png 1.05MB
10-30c5d3813207a99eb5960b1c05e4b9b7.png 493KB
7-0fa4f8dc16a9d29f53b28658aa4ed989.png 317KB
bg_orange.png 311KB
bg3.png 294KB
12-ba8b17c52d55d1ff291266c93e7da483.png 201KB
bg2.png 169KB
11-875675de4b4ca25a2e401f5c11a57ba2.png 139KB
13-2f1c034f820dba0ee24acc0651218075.png 138KB
8-5b4efae793d8b65fea114cdc983fe81f.png 132KB
3-025ceee9b3d5469eb8ff71bf6192d909.png 126KB
9-79bb1525fe68dffe859ea15f50e5c90f.png 79KB
left.png 72KB
p1.png 71KB
bg1.png 59KB
choose_bg.png 55KB
4-a2c80a9c6a375fcad9404365c7279e20.png 45KB
5-14e2b46f014901a72790bfecd12d8009.png 40KB
1-586d911d445cf8948ad93f5ded9766e2.png 30KB
ic_launcher_round.png 14KB
2-a383a8ecafb4307ee0d10fe2bb382a0c.png 14KB
icon_voip.png 14KB
head_icon_22.png 12KB
head_icon_38.png 12KB
共 297 条
- 1
- 2
- 3
资源评论
神仙别闹
- 粉丝: 2679
- 资源: 7667
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功