本文将以一个视频播放的丢帧问题为例,介绍在解决这一性能问题时的思路、所使用的工具、尝试的优化方案和一些测试的结果,具有较强的综合性。当然,我本人在性能优化方面也只是新手,欢迎大家一起讨论交流。
问题
ExoPlayer 是google推出的一款开源java播放器,包括youtube在内的很多视频服务商都在使用它,但是我们发现,在一些性能比较低的硬件平台上,使用exoplayer播放4k HLS视频时会出现大片的丢帧,视频画面也随之变得“一卡一卡的”。
假设
和其他应用不同的是,4k视频的音视频解码会消耗大量的CPU资源,同时这一工作对解码的速度是有硬要求的,如果达不到的话就会产生播放流畅度的问题。所以丢帧的原因很可能是CPU满负载,使得音视频没有足够的资源保持流畅播放。
refer to: 《Android移动性能实战》第4章
验证工具
为了验证上面提出的假设, 这里主要使用了三个工具 :
-
DS5 & Streamline
arm平台常用的性能分析工具, 基本的介绍和安装流程在网上都能搜到,例如搭建ARM DS-5 STREAMLINE -
Systrace & TraceView
这两个是可以直接在android studio配套的device
本文探讨了在低性能设备上使用ExoPlayer播放4k HLS视频时的丢帧问题。通过DS5、Streamline等工具分析,发现CPU资源紧张是主要原因。优化方案包括降低loader线程优先级、动态sleep机制和一次下载多个ts packet,有效减少了丢帧并改善了CPU占用。
订阅专栏 解锁全文
-减少丢帧&spm=1001.2101.3001.5002&articleId=73650353&d=1&t=3&u=151d61b9ff9e44b8b2cd2b0ea4180003)
1175

被折叠的 条评论
为什么被折叠?



