坚持问题导向,因此本文以视频翻页播放功能为问题场景(类似抖音),介绍exoplayer播放器使用及优化。
包含以下几部分:
- 播放器基础介绍
- exoplayer架构介绍,包括: 视频本地缓存、 视频数据加载
- 视频翻页如何实现零延迟启播
- 如何优化流量使用
- 如何优化内存占用
- 其他问题及优化项
一. 播放器基础介绍
二. exoplayer架构介绍
LoadControl: 控制视频加载(内存)
Cache: 视频缓存(本地文件)
Extractor: 解包,提取音视频数据
1. 视频本地缓存功能
因视频文件通常比较大,如何使用有限的本地存储空间缓存视频数据;
exoplayer缓存设计方案 - 分段写入 :
- 从网络加载视频数据时,分片写入缓存文件,默认大小为5M (CacheDataSink#DEFAULT_FRAGMENT_SIZE)
- 缓存文件记录视频信息: 视频id, 视频流地址,时间戳
- 根据视频地址可查询对应视频所有缓存片段
- 使用lru策略管理缓存空间