Получить существующий формат файла из вашего AudioInputStream
:
путь к файлу String
с путем к вашему файлу, который вы получите, например:
String filename="x.y";
File file = new File(filename);
String filepath=file.getCanonicalPath();
Затем основное преобразование выполняется:
AudioInputStream inputStream = AudioSystem.getAudioInputStream(new File(filepath));
AudioFormat format = inputStream.getFormat();
AudioInputStream convertedInputStream;
После этого ставьте условие, которое проверяет, является ли кодировка вашего файла alaw или ulaw, и конвертирует его в PCM, который может воспроизводиться SoundCard:
if ((format.getEncoding() == AudioFormat.Encoding.ULAW) || (format.getEncoding() == AudioFormat.Encoding.ALAW))
AudioFormat tmp = new AudioFormat(
AudioFormat.Encoding.PCM_SIGNED,
format.getSampleRate(),
format.getSampleSizeInBits() * 2,
format.getChannels(),
format.getFrameSize() * 2,
format.getFrameRate(), true);
convertedInputStream = AudioSystem.getAudioInputStream(tmp,inputStream);
format = tmp;}
Этот код преобразует формат ALAW / ULAW вашего AudioInputStream
в PCM_SIGNED