您的当前位置:首页正文

Mediacodec学习(EXOPlayer分析)

来源:华佗小知识

Mediacodec学习第二篇 -- EXOPlayer

分析的主要内容

#  网络视频流解析
根据数据解析成对应的封装类型

还记得这个MediaSource吗?
buildMediaSource则根据网络数据来解析成对应数据封装
比如:HLS,DASH等


封装格式
扩展型

Paste_Image.png

那需要先分析ExoPlayer是如何把通过网络缓冲的数据写入render中的。
在ExtractorMediaPeriod的load处理中dataSource.open完成了数据请求交互


ExtractorMediaPeriod::load TsExtractor::read DefaultExtractorInput::read DefaultExtractorInput::readFromDataSource

在ExtractorMediaPeriod的dataSource open后然后通过read方法完成buffer数据的读取。以HTTP请求为例来说明:
在open中实现inputStream实例:


DefaultHttpDataSource::open

在read中通过inputStream实例采集视频数据:


DefaultHttpDataSource::read DefaultHttpDataSource::readInternal

这样把网络的视频流不断的注入给render来绘制实现硬解播放

接下来贴几张类图和序列图,都是我在实现RTSP的过程中分析画的,虽然不全也可能不对,但多少可以帮助理解分析,后期再补全。

DataSource家族 MediaSource家族 Player树 TrackSelection 播放时序分析

第二阶段还有优化工作需要处理,还没来得及细致的分析音视频同步,后续再分析更新。感谢关注。