本文将以一个视频播放的丢帧问题为例,介绍在解决这一性能问题时的思路、所使用的工具、尝试的优化方案和一些测试的结果,具有较强的综合性。当然,我本人在性能优化方面也只是新手,欢迎大家一起讨论交流。
问题
ExoPlayer 是google推出的一款开源java播放器,包括youtube在内的很多视频服务商都在使用它,但是我们发现,在一些性能比较低的硬件平台上,使用exoplayer播放4k HLS视频时会出现大片的丢帧,视频画面也随之变得“一卡一卡的”。
假设
和其他应用不同的是,4k视频的音视频解码会消耗大量的CPU资源,同时这一工作对解码的速度是有硬要求的,如果达不到的话就会产生播放流畅度的问题。所以丢帧的原因很可能是CPU满负载,使得音视频没有足够的资源保持流畅播放。
refer to: 《Android移动性能实战》第4章
验证工具
为了验证上面提出的假设, 这里主要使用了三个工具 :
-
DS5 & Streamline
arm平台常用的性能分析工具, 基本的介绍和安装流程在网上都能搜到,例如搭建A