我试图了解ExoPlayer最近如何运作并研究它们的源代码。
在编码/解码部分,我发现TrackRenderer从MediaCodec类中包装低级api,并使用它来解码/编码数据。
但是对于提取部分我只找到一个类 - >使用低级api MediaExtractor的FrameWorkSampleSource.java及其弃用,甚至在ExoPlayer 2.0中消失了。
有没有理由说exoplayer不使用这个低级api从源中提取数据?我认为这是在Android设备中提取媒体数据的唯一方法.....
由于
答案 0 :(得分:1)
ExoPlayer使用用Java编写的自定义提取器,请参阅this package。
至于原因:
有几个原因:
- MediaExtractor使用不太适合的线程模型 ExoPlayer。
- 它也没有提供尽可能多的缓冲控制 我们想要。
- 在MediaExtractor下实现提取器 因Android版本而异。
- MediaExtractor下的提取器 缺少一些我们能够在ExoPlayer中支持的功能 提取器。