面试系列——直播模块设计总结和思考
Posted BridgeGeorge
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试系列——直播模块设计总结和思考相关的知识,希望对你有一定的参考价值。
背景
支持IOT平台的直播功能,要求低功耗高性能高可用。
整体架构图
架构设计
整体接入
统一接入标准 函数实现
首帧为sps pps 数据,推送数据帧的方法 方便接入和后续扩展;
对外接口
外观模式 对外提供统一接口 业务层访问统一接口不需要跟具体模块交互
内部接口
策略模式 内部提供不同实现,发起时候 动态指定实现类,方便线上做AB test. 或者后期做动态切换。
可靠性保证
帧数据监控,帧率监控, 首帧数据重发 便于SDK 及时矫正
性能优化
内存优化
- 系统层 内存Buffer 复用,避免内存频繁分配;
- 应用层 采用SparseArray 保存 映射
- 应用层 SDK 延迟初始化,懒加载,
- H264 byte buffer 采用对象池,高效对象复用,内存copy函数
CPU优化
- 系统层 CPU 动态调频,功能开启时 核心数跑满 结束时,结束功能时关闭调频,设置最大调频时长,防止异常情况下系统处于性能模式 降低发热等降低使用寿命;
- 应用层 线下尝试不同的码率和分辨率测试组 和不同的丢帧策略,找到效果和 性能的平衡点,线上支持动态配置和切换,支持通过指令动态切换;最终将CPU控制从30%降低到15%左右, 优化幅度达到50% .
项目总结
- 评估排期 评估 测试用例 及时沟通 暴露风险等 保证项目交付
- 日会拉齐各方进度和问题,保证问题delay 体现责任感 和 沟通能力
以上是关于面试系列——直播模块设计总结和思考的主要内容,如果未能解决你的问题,请参考以下文章