2017-03-07 5 views
1

Ich erstelle meine eigene Implementierung von Media Player mit MediaCode, MediaExtractor und AudioTrack. Ich muss Verzerrungen an den decodierten MP3-Samples durchführen, die ich aus lokal gespeicherten Audiodateien lese - daher die benutzerdefinierte Implementierung. Aus diesem Grund muss ich meine eigenen seekTo und getCurrentPosition Funktionen implementieren. Ich bin mir jedoch nicht sicher, wie ich das umsetzen würde.Android: Aktuelle Position mit MediaExtractor & MediaCodec erhalten

Ich könnte einen Listener einrichten, um die Position während des Spiels zu erhöhen, aber das klingt nach einer schrecklichen Idee und wahrscheinlich nicht genau. Was ist der beste Weg, es zu tun? Ich möchte API-Level 16 oder höher unterstützen.

Antwort

2

Die Antwort kam von der Verwendung des MediaExtractor. Sobald der Extraktor Probendaten über die Methode extractor.readSampleData(...) gelesen hat, wurde eine Probe geladen.

Ein anschließender Anruf an extractor.getSampleTime() liefert die aktuelle Zeit in Mikrosekunden. Dividiert man diesen Wert durch 1000, erhält man den Millisekunden-Wert. Ich speichere diese Variable als gelesen und es ist die Quelle für nachfolgende Aufrufe an die Methode getCurrentPosition() meines benutzerdefinierten Players.

+0

Verwenden Sie 'extractor.getSampleTime()' in Ihrer 'getCurrentPosition()' Methode? – Kristopher

Verwandte Themen