设计和开发直播客户端架构-DQLive for Android


浏览:839 次

DQLive公司

直播客户端架构设计与开发经典学习项目启动!

实时Android客户端app练习!欢迎使用Star并不断更新。

基于Sound Network SDK实现的推拉式流媒体很小,具有所有必要的功能。

特点:出色的直播间、观众侧直播间和主机侧架构设计,强大的模块重用和可扩展性,定制的生命周期感知控制器组件,以及按钮粒度的逻辑分离和自由组合。

Github项目地址:

它仅用于学习和交流技术、应用sdk、资源和图片材料。如有侵权,请联系删除。

项目屏幕截图

DQLive Live Android客户端app实践

视频效果:

直播技术选择

主机端:流媒体基于声音网络SDK,然后通过旁路推送到CDN。因此,独特的特点是启动广播的过程以及主机端的音频和视频处理。其他常规功能类似于观众终端。

观众端:拉流,可选播放器为ijkplayer、exo或语音网络MPK;其他锚数据卡、IM功能、奖励功能。

UI架构:Activity+Fragment+ViewMode+LiveData

定制控制器(支持热插拔模块化和生命周期感知)

组件通信:目前,EventBus将添加一个LiveDataBus。

模块化和组件化:AutoService。

依赖注入:Hilt。

网络相关:改造+科特林-科鲁汀+格森。

持久性:室温,MMKV。

动画:前期为SVGA,后期为+Lottie和Alpha MP4。

使用哪种技术进行直播,应结合每个项目的技术特点,并考虑项目学生的发展习惯和技术掌握情况。我还将逐步介绍一些尚未在项目中使用的Nice技术。

注意事项

直播间的水平非常重要!

直播间有很多功能。在设计和添加每个模块时,必须尽可能考虑高可用性、稳定性、可扩展性和可重用性。

基本组件下沉,以尽可能实现面向接口的编程和模块化和组件化。

方便项目功能模块的热插拔和新项目的快速重用或删除。

目前,直播间涉及的许多模块在直播间和主机端都被重用。

推拉流的LivePusher+MediaPlayer模块是一个单独的模块项目,可用于播放aar并提供外部服务。

开发原则和规范

标准化可以避免许多不必要的问题。细节可能无法决定成败,但可能会影响效率和情绪。

命名约定

各种文件和资源文件的命名规范可以轻松检索所需的内容,并便于将来的模块化分离或重构。

例如,通用前缀ic_、bg_或img_+大型模块名+函数名+状态(如果有)

。 例如,ic_ live_ room_chat_normal。png,ic_ push_ room_gift_已选择。png,大bg直播间加载默认.png

常用资源,cm_

如果布局正常,则应遵循正常布局:activity_、fragment_、dialog_、layout_、item_

添加模块名+函数名,含义清晰。

通常,如果资源名称太常见或太短,则很容易发生冲突。

使用标准化命名进行组件化和模块化时,也更容易分离资源。

通常,room代表直播间和广播方的共同资源,而pushroom是广播方独有的。

开发协议

直播间是一个活动单一的复杂商业载体。其附带的功能一般应继承直播间的基类开发,便于统一管理。

对于属于直播间的新创建的弹出窗口、全屏或半屏页面,不要使用Activity、继承BaseFragment或开发BaseModule。

建议在弹出窗口中使用BaseDataBindingDialog(DialogFragment),这有助于子模块的统一管理,不会因活动生命周期的变化而影响直播间推送和拉送流的逻辑。

对于大型UI,请使用ViewStub来延迟加载布局。

另外

推拉流是正常的。您只需要修改推送和拉取流地址即可进行测试。

事实上,可以添加的功能有很多,比如AI主播、换脸等,后期不断更新。

解决方案:
相关资讯:
生鲜企业如何进行直播销售

生鲜企业如何进行直播销售

查看
教育APP直播软件外包发展分析

教育APP直播软件外包发展分析

查看
云宝直播系统源代码构建直播源代码构建定制

云宝直播系统源代码构建直播源代码构建定制

查看
发展教育直播APP的主要原因是什么?

发展教育直播APP的主要原因是什么?

查看
农村直播电商APP将对农业市场产生什么影响?

农村直播电商APP将对农业市场产生什么影响?

查看