为什么谷歌的ExoPlayer不再使用Android低级别的api MediaExtractor了?

时间:2017-02-18 02:01:57

标签: android exoplayer

我试图了解ExoPlayer最近如何运作并研究它们的源代码。

在编码/解码部分,我发现TrackRenderer从MediaCodec类中包装低级api,并使用它来解码/编码数据。

但是对于提取部分我只找到一个类 - >使用低级api MediaExtractor的FrameWorkSampleSource.java及其弃用,甚至在ExoPlayer 2.0中消失了。

有没有理由说exoplayer不使用这个低级api从源中提取数据?我认为这是在Android设备中提取媒体数据的唯一方法.....

由于

1 个答案:

答案 0 :(得分:1)

ExoPlayer使用用Java编写的自定义提取器,请参阅this package

至于原因:

  

有几个原因:

     
      
  • MediaExtractor使用不太适合的线程模型   ExoPlayer。
  •   
  • 它也没有提供尽可能多的缓冲控制   我们想要。
  •   
  • 在MediaExtractor下实现提取器   因Android版本而异。
  •   
  • MediaExtractor下的提取器   缺少一些我们能够在ExoPlayer中支持的功能   提取器。
  •   

请参阅https://github.com/google/ExoPlayer/issues/2580