Je lis des fichiers audio en profondeur de bits d'échantillonnage de 16 et 24 bits et les analyse pour déterminer leurs longueurs sans difficulté. Cependant lors de la lecture d'un fichier de 32 bits, je meJava AudioSystem: Lecture de fichiers Wav 32 bits
javax.sound.sampled.UnsupportedAudioFileException: could not get audio input stream from input file
at javax.sound.sampled.AudioSystem.getAudioInputStream(AudioSystem.java:1170)
...
le fichier de test de 32 bits est codé manuellement de la même manière que les autres (PCM linéaire). Je me demande si AudioSystem ne supporte pas les Wavs 32 bits, ou s'il pourrait y avoir une solution de contournement. Pour référence, voici ma classe:
import java.io.*;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
public class soundUtility {
public static double getWavDuration(File filename)
{
AudioInputStream stream = null;
try
{
stream = AudioSystem.getAudioInputStream(filename);
AudioFormat format = stream.getFormat();
return filename.length()/format.getSampleRate()/(format.getSampleSizeInBits()/8.0)/format.getChannels();
}
catch (Exception e)
{
e.printStackTrace();
return -1;
}
finally
{
try { stream.close(); } catch (Exception ex) { }
}
}
public static void main(String[] args) {
try {
// ===== TESTS: toggle these calls to test the included files =====
// File soundFile = new File("16bit.mono.441k.30secs.wav");
// File soundFile = new File("24bit.48k.11secs.stereo.wav");
File soundFile = new File("32bit.Floating.Stereo.48k.wav");
// ===========
System.out.println(getWavDuration(soundFile));
} catch (Exception e) {
e.printStackTrace();
}
}
}
Merci pour toute perspicacité.