2017-02-18 9 views
0

Ive попытался понять, как ExoPlayer работает недавно и изучает их исходный код.Почему ExoPlayer Google перестает использовать Android-приложение low leve api MediaExtractor больше?

В части кодирования/декодирования я обнаружил, что TrackRenderer обертывает api низкого уровня из класса MediaCodec и использует его для декодирования/кодирования данных.

Но для Извлеченной части я нахожу только один класс -> 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