Nelle origini Android, esiste un esempio di implementazione del motore player
basata sulle API MediaCodec
. È possibile verificare per SimplePlayer
situato a frameworks/av/cmds/stagefright/SimplePlayer.cpp
.
In questa implementazione del motore del lettore, l'output da MediaCodec
è dequeued
e inserito in una coda come mostrato in here. Si prega di controllare le linee 439 - 450 per ottenere un'immagine completa.
Una volta disponibile il buffer, è disponibile un semplice meccanismo AV Sync
here. Si prega di fare riferimento alle linee 508 -521. In questo esempio, viene considerata solo una traccia e, quindi, nowUs
, ovvero l'ora corrente è derivata da systemTime
, ovvero ALooper::nowUs
.
Nel codice, si può considerare il rendering audio
sempre first-come-first-serve
base e per la vostra video
pista, è possibile ricavare il nowUs
dalla pista audio
.
Una semplice implementazione potrebbe essere la nowUs = getAudioLastPresentationTime()
dove, getAudioLastPresentationTime
restituirà l'ultima presentationTimeUs
inviata dal audio
MediaCodec
-audio renderer
.
Potete fornire un campione funzionante per favore –
@ManojK .. Il collegamento http://androidxref.com/4.2.2_r1/xref/frameworks/av/cmds/stagefright/SimplePlayer.cpp#508 è un esempio funzionante che può essere provato su una piattaforma 'android'. Per favore chiarisci se stai cercando qualcosa di diverso. – Ganesh
Grazie mille, speravo qualsiasi codice di esempio in java. comunque proverò il campione sopra menzionato e ti terrò aggiornato. –