In Android il metodo () della classe AudioTrack restituisce la posizione della testa di riproduzione espressa in frame, qual è il valore equivalente in milli secondi?Conversione da frame a millisecondi in android
risposta
Sto indovinando che sarebbe
(track.getPlaybackHeadPosition()/track.getSampleRate()) * 1000.0
In altre parole, il numero di fotogrammi giocato diviso per il numero di fotogrammi al secondo. Quindi moltiplichi il risultato per 1000 per ottenere i millisecondi.
Un frame è costituito da un campione per canale e quindi dovrebbe essere equivalente alla frequenza di campionamento.
Per esempio, se i rendimenti getPlaybackHeadPosition()
8654
e getSampleRate()
ritorna 8000
poi la volta dall'inizio della pista sarebbe (8654/8000) * 1000
o 1081.75ms
. (Assumendo aritmetica in virgola mobile)
La risposta da @Nike è giusto.
Ma c'è un problema.
Se chiamiamo il valore MediaExtractor.seekTo
metodo, AudioTrack.getPlaybackHeadPosition()
rendimenti si accumulano.
MediaExtractor.getSampleTime()/1000
è il ms corretto per la posizione corrente.
Puoi controllare!
Sì, hai ragione. –
Sentitevi liberi di accettare la risposta quindi :) – Nick
per esempio, se l'audio ha 8000 campioni/sec, (track.getPlaybackHeadPosition()/8) fornisce la posizione della testina di riproduzione corrente in milli secondi. –