iOS细节知识收录音视频开发

iOS直播优化方案

2018-08-01  本文已影响26人  宋唐不送糖

看了许多直播优化的方案,写此文记录一下,涉及少分部服务端方案,不涉及具体代码。


具体方案分为三个部分:

1、直播大厅的优化。
2、直播间内的优化。
3、私信消息模块的优化。

直播大厅的优化:

直播列表的刷新

问题:

1、作为App的入口,其高可用性十分重要。
2、用户点击进入直播间后,发现直播已经结束,体验不好。
3、主播们的及时露脸、吸引粉丝的需求。

方案

1、多种刷新机制相结合

  • 全量刷新。
  • 顶部刷新,按滑动屏幕的偏移量。
  • 局部刷新,对直播流进行分组,只更新用户当前界面的直播流,便于服务端实施缓存策略。
  • 刷新的时间间隔可配置。

2、用户体验方面

  • 用户当前正在滑动屏幕时,延迟刷新当前页面。

进入直播间速度的优化

常见现象:

1、用户点击某个直播之后,进入直播间页面较慢。
2、直播间内的视频迟迟加载不出。
3、主播开播后反映人气一直上不去。

原因分析:

1、获取视频流时建立网络连接的耗时。
2、直播间内业务模块众多,界面初始化耗时。

方案

  • 在直播间大厅预先解析视频流地址,从而加快获取视频数据的速度。
  • 对房间内部分UI模块使用懒加载方式,如:公聊、用户列表等。
B57D20E2-A3FB-4F5A-A689-612E60E8BA2E.png

直播间内的优化:

定时器事件调度

8CD488F8-576B-4EA7-805C-EF412CBD619C.png

房间内长连接消息的处理(公聊消息列表刷新)

问题现象:

热门直播间大量的公聊消息使得列表持续快速刷新,导致主线程CPU占用较高,影响整体页面交互。

优化思路:

  • 将处理长链接消息的SocketIO库中的block执行线程设置为非主线程,缓解主线程的CPU占用。 EC21793A-D738-48F7-A2D1-EF45CFD549BB.png
  • 实时统计单位时间内收到的消息数目,在性能较低的机型上,动态调整公聊列表的刷新频率。
  • 使用队列暂存消息,每条公聊消息到来时不直接刷新列表。
  • 批量地pop队列中的消息,只保留最近收到的一些消息进行滚动刷新。

动画流畅

问题现象:

大量的礼物动画如何进行流畅的展示。

优化思路:

  • 动画进行队列分优先级排列,对于同个时间段内的动画根据优先级高的的优先显示,其余可延迟或者抛弃动画显示。

主播端体验优化

问题现象:

主播直播了很久,好不容易上了热门,发生App崩溃如何处理。

优化思路:

  • 开始直播时保存推流地址信息, App崩溃后,再次启动可以继续直播,恢复效果上相当于一次切后台的操作。

问题现象:

如何应对运营活动时的房间内消息压力,短时间内服务器广播消息压力非常大,公聊和礼物消息持续刷屏,主播直播严重受干扰。

优化思路:

  • 服务降级,下发限制客户端公聊和礼物消息发送频率的命令。
  • 限制点赞和部分礼物的动画展示

减轻服务端并发请求方面的优化

问题现象:

1、用户关注关系的拉取:每次进入直播间,都需要请求用户列表中的关注关系;主播结束直播时,用户都需要拉取和主播的关注关系。
2、推送消息:明星用户开播全量推送时,大量客户端同时拉取大厅直播列表。

优化思路:

  • 对用户profile、关注关系等信息进行缓存。
  • 收到直播推送时,不立即刷新直播列表,延迟到退出直播间后再启动大厅刷新机制。

客户端首次启动方面的优化

问题现象:

用户安装App后首次启动,点击登录按钮出现卡顿。

原因分析:

需要下载大量的图片资源,网络请求和文件操作频繁。

优化思路:

  • 对部分礼物和等级图标资源进行内置,增量下载更新。

私信消息模块的优化:

D807EDF8-66E8-4A2C-96BE-11E549AE879F.png

问题现象:

私信聊天页面的打开速度和消息浏览的体验。

优化思路:

  • 内存中只缓存少量的几十条数据用于展示,滑动屏幕浏览时,动态更新缓存内容。
上一篇 下一篇

猜你喜欢

热点阅读