2012-05-01 17 views

Respuesta

20

supongo que sería

(track.getPlaybackHeadPosition()/track.getSampleRate()) * 1000.0 

En otras palabras, el número de fotogramas jugó dividido por el número de fotogramas por segundo. Luego, multiplica el resultado por 1000 para obtener milisegundos.

Una trama consta de una muestra por canal, por lo que debe ser equivalente a la frecuencia de muestreo.

Por ejemplo, si getPlaybackHeadPosition() vuelve 8654 y getSampleRate() vuelve 8000 entonces el tiempo transcurrido desde el inicio de la pista sería (8654/8000) * 1000 o 1081.75ms. (Suponiendo que la aritmética de coma flotante)

+0

Sí, tienes razón. –

+0

Siéntase libre de aceptar la respuesta :) :) – Nick

+0

por ejemplo, si el audio tiene 8000 muestras/seg. (Track.getPlaybackHeadPosition()/8) le da la posición actual del cabezal de reproducción en milisegundos. –

0

La respuesta es por @Nike derecha.

Pero hay un problema.

Si llamamos el valor MediaExtractor.seekTo método, AudioTrack.getPlaybackHeadPosition() rendimientos se acumulan.

MediaExtractor.getSampleTime()/1000 es el derecho ms para la posición actual.

¡Lo puedes ver!

Cuestiones relacionadas