2017-02-18 97 views
0

我试图了解ExoPlayer最近如何工作并研究它们的源代码。为什么Google的ExoPlayer不再使用Android低级别的MediaExtractor?

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

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

是否有任何理由为什么exoplayer不使用这个低级别的API从源数据提取数据?我认为这是在Android设备中提取媒体数据的唯一方法.....

感谢

回答

1

ExoPlayer使用Java编写的定制提取,看到this package

至于为什么:

有几个方面的原因:

  • MediaExtractor使用线程模型,这不是很适合 ExoPlayer。
  • 它也没有提供尽可能多的控制缓冲作为我们想要的 。
  • MediaExtractor 下的提取器的实现在Android的各个版本之间有所不同。
  • MediaExtractor 下的提取器缺少一些我们能够在ExoPlayer 提取器中支持的功能。

https://github.com/google/ExoPlayer/issues/2580

相关问题