我需要能够在Java(桌面)应用程序中播放ALAW文件。 我试图按照以下示例进行操作:
How to play audio in Java Application
我已经从ALAW文件创建了一个File对象(根据检查存在)并将该文件发送到一个方法,其中首先发生的是:
AudioInputStream ais = AudioSystem.getAudioInputStream(file);
但这是执行停止的地方,因为我得到了这个例外:
javax.sound.sampled.UnsupportedAudioFileException: could not get audio input stream from input file
我看到如果检查 (ais.getFormat().getEncoding() == AudioFormat.Encoding.ALAW)
是true
,有一种方法可以转换ALAW文件,但是如果甚至无法创建AudioInputStream,我怎么能到达那里?
任何使用ALAW文件并了解我应该做什么的人?
有没有办法在调用AudioSystem.getAudioInputStream(file)
之前以编程方式转换ALAW文件?
我真的需要做这个工作!
答案 0 :(得分:1)
从AudioInputStream
获取现有文件格式:
filepath是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,并将其转换为可以由SoundCard播放的PCM:
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;}
此代码会将AudioInputStream
的ALAW / ULAW格式转换为PCM_SIGNED
答案 1 :(得分:0)