2010-06-09 6 views
11

¿Cómo obtengo el tiempo total de un archivo de sonido en Java?¿Cómo obtengo el tiempo total de un archivo de sonido en Java?

--update

Parece que este código hace de trabajo: largo audioFileLength = audioFile.length();

recordedTimeInSec = audioFileLength/(frameSize * frameRate); 

sé cómo obtener la longitud del archivo, pero no estoy encontrando la manera de obtener la velocidad de fotogramas y bastidor del archivo de sonido ... Cualquier idea o enlace?

- ACTUALIZACIÓN

Uno más códigos de trabajo (consejos de usar @ MDMA):

AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(file); 
    AudioFormat format = audioInputStream.getFormat(); 
    long audioFileLength = file.length(); 
    int frameSize = format.getFrameSize(); 
    float frameRate = format.getFrameRate(); 
    float durationInSeconds = (audioFileLength/(frameSize * frameRate)); 
+0

¿Qué archivo frasco está usando para esto? –

Respuesta

17

dado un File se puede escribir

File file = ...; 
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(file); 
AudioFormat format = audioInputStream.getFormat(); 
long frames = audioInputStream.getFrameLength(); 
double durationInSeconds = (frames+0.0)/format.getFrameRate(); 
+0

Estoy tratando de ejecutar este código, pero no estoy encontrando cómo obtener la velocidad de cuadros del archivo de sonido. ¿Tienes alguna referencia sobre eso? –

+0

He actualizado el código. – mdma

+0

No sé qué ocurre, pero con un archivo de 18 segundos, su código produce un resultado 149120, mientras que el nuevo código que publiqué en la pregunta produce 18.64275 (el tamaño correcto en segundos). De todos modos, no hubiera hecho esto sin los consejos, ¡gracias! –

Cuestiones relacionadas