在java中转换音频文件

时间:2014-01-30 10:39:16

标签: java audio

我使用下面的代码将音频文件转换为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();
    }

它转换但该文件无法在媒体播放器中播放。任何人都可以帮我检测我的代码中的问题。

1 个答案:

答案 0 :(得分:0)

我刚用随机mp3尝试了你的代码,结果wav播放得很好。

这是一个黑暗中的镜头,但我遇到了一个场景,其中源mp3的两个通道彼此相反。当它被转换为单个通道时,它们相互抵消,从而产生一个无声的wav。

您可以通过将转换设置为保留2个频道来快速检查

audio.setChannels(new Integer(2));