一、手机音视频现状
1.手机生态划分
手机在线生态--包含手机app应用,如抖音,快手,bilibili
手机本地生态--包含手机相机等
2.手机音视频应用的特点
便携性
多功能性
高清晰度
实时性
社交性
互动性
3.用户关心的特性
视频画质、播放流畅性,支持的格式、稳定性、丰富功能、节省电量
4.体验性技术优化
4.1包体积小(so)
优点:
更快的下载速度:apk体积小,下载速度快,用户可以更快的安装应用程序
更小的存储空间:apk体积小,占用更少的存储空间
更好的用户体验:apk体积小,启动速度更快,应用程序响应更迅速,可以提高用户满意度个体验。
更少的资源消耗:apk体积小,消耗的存档及网络带宽更小,节约网络及存储成本。
如何实现:
1.精简动态符号表
2.去除无用代码
3.ffmpeg定制化编译
4.2内存
内存小优点:
存活更长:减少内存溢出异常OOM,减少内存过大,被系统清理
运行流畅:在GC(java层)时,所以线程都要停止,会导致掉帧
三方友好:占用过大,会导致三方应用系统被清理
优化方式:
内存分析:使用工具 分析内存占比,android studio,dumpsys meminfo,分析代码中的大内存分配,评估必要性。
减少频繁创建销毁:内存分配器(jemalloc)的存在,部分场景自定义内存分配器
减少数据流转:减少数据的拷贝流转,如mediacodec直接渲染视频
4.3功耗
优点:
延长电池寿命:功耗低的手机可以更有效的利用电池电量,减少充电次数
减少发热:产生的热量会响应的减少,从而减少对手机硬件的损耗
提高性能:更加有效的管理资源,从而提高手机的整体性能和反应速度。
降低功耗处理方式:
网络访问:不影响业务和性能的前提下,降低网络访问频率
物尽其用:vpu cpu gpu(后处理并行处理)
cpu高负载优化:排查无用循环
显示模式:texturerview转换sufaceview(进行缩放操作可能会闪黑/)
4.4流畅性(网络播放)
数据调整:MP4 moov位置,大文件拆分
缓存:预先缓存部分数据
预渲染:多实例渲染
优先硬解:优先考虑硬解
4.5稳定性
自动化测试:可以随时测试
重在预防,监控跟踪:代码评审,监控平台
思考深入:解决一个问题,深入是思考代码中是否还存在类似情况
4.6特色功能
视频源协同:多与相机(本地)服务器(在线)交流讨论,多方协同开发
跨平台:关注其他平台特色功能,并思考手机应用场景及实现技术
自身技术:努力提升自身技术实力,关注新技术。
二、性能与挑战
架构选型:
减少sdk体积方式:
本地功能解耦,网络协议,封装格式,编码格式,逻辑精简
手机侧优化
三、使用的相关开源技术工具
四、未来展望
ARAVR技术的应用: 随着ARVR技术的不断发展,未来音视频可能会更加注重增强现实和虎拟现实的体验,例如道过AR技术将虚拟物品融入到现实场是中,或者通过VR技术让用户身临其境地体验音视频内容。
5G技术的应用; 5G技术的到来将会使得音视频的传输速摩更快延迟电低,这将为用户提供更加流畅的音视频体验,同时也将为音视频应用的创新带来更多的可能性。
Al技术的应用: AI技术的发展将会为音视频应用带来更多的可能性,例如通过语音识别技术实现智能语音交互,或者通过图像识别技术实现智能视频分析等。