2010-06-09 9 views
11

Come si ottiene il tempo totale di un file audio in Java?Come si ottiene il tempo totale di un file audio in Java?

--update

Sembra che questo codice fa de lavoro: lungo audioFileLength = audioFile.length();

recordedTimeInSec = audioFileLength/(frameSize * frameRate); 

so come ottenere la lunghezza del file, ma io non sto trovando come ottenere frame rate e grandezza del file audio ... Qualsiasi idea o un link?

- AGGIORNAMENTO

più un codice di lavoro (cenni usando @ di 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

Quale file jar stai usando per questo? –

risposta

17

dato un File è possibile scrivere

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

Sto provando a eseguire questo codice, ma non sto trovando come ottenere il frame rate del file audio. Avete qualche riferimento su di esso? –

+0

Ho aggiornato il codice. – mdma

+0

Non so cosa sia sbagliato, ma con un file di 18 secondi il tuo codice produce un risultato 149120 mentre il nuovo codice che ho postato nella domanda produce 18.64275 (la dimensione corretta in secondi). Ad ogni modo, non l'avrei fatto senza i suggerimenti, grazie! –

Problemi correlati