我使用下面的代码将音频文件转换为8000 Hz,16位和单声道的wav格式 使用JAVE
File source = new File("file.mp3");
File target = new File("soundfile\\file2.wav");
AudioAttributes audio = new AudioAttributes();
audio.setCodec("pcm_s16le");
audio.setBitRate(new Integer(16));
audio.setChannels(new Integer(1));
audio.setSamplingRate(new Integer(8000));
EncodingAttributes attrs = new EncodingAttributes();
attrs.setFormat("wav");
attrs.setAudioAttributes(audio);
Encoder encoder = new Encoder();
try {
encoder.encode(source, target, attrs);
System.out.println("Successfully created");
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InputFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (EncoderException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
它转换但该文件无法在媒体播放器中播放。任何人都可以帮我检测我的代码中的问题。
答案 0 :(得分:0)
我刚用随机mp3尝试了你的代码,结果wav播放得很好。
这是一个黑暗中的镜头,但我遇到了一个场景,其中源mp3的两个通道彼此相反。当它被转换为单个通道时,它们相互抵消,从而产生一个无声的wav。
您可以通过将转换设置为保留2个频道来快速检查
audio.setChannels(new Integer(2));