2017-02-18 2 views
0

Ich habe versucht zu verstehen, wie ExoPlayer vor kurzem funktioniert und ihren Quellcode studiert.Warum Google ExoPlayer aufhören Android Low leve api MediaExtractor mehr zu verwenden?

Auf der Encoding/Decoding-Teil der ich fand, dass TrackRenderer die Low-Level-API von MediaCodec-Klasse, und verwenden Sie es, um die Daten zu dekodieren/zu verschlüsseln.

Aber für die Extrahierung finde ich nur eine Klasse -> FrameWorkSampleSource.java, die den Low-Level-API MediaExtractor verwenden, und seine veraltete, sogar in ExoPlayer 2.0 gegangen.

Gibt es einen Grund, warum Exoplayer dieses Low-Level-API nicht verwendet, um Daten aus der Quelle zu extrahieren? Ich dachte, das ist der einzige Weg Mediendaten in Android-Gerät .....

Dank

Antwort

1

ExoPlayer verwendet benutzerdefinierte Extraktoren geschrieben in Java zu extrahieren finden this package.

Was, warum:

Es gibt ein paar Gründe:

  • MediaExtractor verwendet ein Threading-Modell, das auf ExoPlayer nicht gut geeignet ist.
  • Es bietet auch nicht so viel Kontrolle über Pufferung wie wir möchten. Die Implementierung der Extraktoren unter MediaExtractor variiert zwischen den Versionen von Android.
  • Extraktoren unter MediaExtractor fehlt einige Funktionen, die wir in ExoPlayer Extraktoren unterstützen können.

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

Verwandte Themen