In Android-Quellen gibt es ein Beispiel player
Engine-Implementierung basierend auf MediaCodec
APIs. Sie können nach SimplePlayer
unter frameworks/av/cmds/stagefright/SimplePlayer.cpp
suchen.
In dieser Player-Engine-Implementierung wird die Ausgabe von dequeued
und in eine Warteschlange wie gezeigt here geschoben. Bitte überprüfen Sie die Zeilen 439 - 450, um ein vollständiges Bild zu erhalten. Wenn der Puffer verfügbar ist, ist ein einfacher AV Sync
Mechanismus implementiertBitte beachten Sie die Zeilen 508 -521. In diesem Beispiel wird nur eine Spur betrachtet, und daher wird die aktuelle Zeit von systemTime
, d. H. ALooper::nowUs
, abgeleitet.
In Ihrem Code können Sie Rendering audio
immer auf first-come-first-serve
Basis betrachten und für Ihre video
Spur, können Sie ableiten die nowUs
aus der audio
Spur.
Eine einfache Implementierung könnte die nowUs = getAudioLastPresentationTime()
sein, wo, getAudioLastPresentationTime
die letzten presentationTimeUs
vom audio
MediaCodec
-audio renderer
gesendet wird zurückkehren.
Können Sie eine funktionierende Probe bitte –
@ManojK .. Der Link http://androidxref.com/4.2.2_r1/xref/frameworks/av/cmds/stagefright/SimplePlayer.cpp#508 ist ein funktionierendes Beispiel, das kann auf einer Android-Plattform versucht werden. Bitte klären Sie, ob Sie etwas anderes suchen. – Ganesh
Vielen Dank, ich hoffte jeden Beispielcode in Java. auf jeden Fall werde ich versuchen, oben genannten Beispiel n halten Sie auf dem Laufenden. –