java - 我需要将音频文件从 μ-law 转换为 PCM

标签 java audio javasound pcm jmf

我需要将 wav 文件从 FORMAT 1 转换为 FORMAT 2

格式 1: μ-law,8000Hz,64 kbps,单声道

格式 2: 容器WAV 编码PCM 评分 16K 样本格式 16 位 channel 单声道

以下是代码片段:

File file = new File("audio_before_conversion.wav");
AudioFormat audioFormat = new AudioFormat(16000, 16, 1, true , true);
AudioInputStream audioInputStream1 = new AudioInputStream(
     new FileInputStream(file), audioFormat, numFrames);
AudioSystem.write(audioInputStream1, Type.WAVE, 
     new File("audio_after_conversion.wav"));

问题: 但是,这不起作用。它会播放一些噪音并减少我的音频文件长度。

编辑 1:mu-Law 到 μ-law

最佳答案

以下代码对我有用--

File sourceFile = new File("<Source_Path>.wav");

        File targetFile = new File("<Destination_Path>.wav");

        AudioInputStream sourceAudioInputStream = AudioSystem.getAudioInputStream(sourceFile);


        AudioInputStream targetAudioInputStream=AudioSystem.getAudioInputStream(AudioFormat.Encoding.PCM_SIGNED, sourceAudioInputStream);
        System.out.println("Sample Rate1 "+targetAudioInputStream.getFormat().getFrameRate());
    AudioFormat targetFormat = new AudioFormat(new AudioFormat.Encoding("PCM_SIGNED"), 16000, 16, 1, 2, 8000, false);



        AudioInputStream targetAudioInputStream1 = AudioSystem.getAudioInputStream(targetFormat, targetAudioInputStream);
        System.out.println("Sample Rate "+targetAudioInputStream1.getFormat().getFrameRate());

        try {
            AudioSystem.write(targetAudioInputStream1, AudioFileFormat.Type.WAVE, targetFile);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

关于java - 我需要将音频文件从 μ-law 转换为 PCM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44954593/

相关文章:

java - Tapestry 中的确认对话框

android - 音频在 Android 4.0.3 中无法正常播放

java - 常规 "clicking"与 javax.sound.sampled

java - 如何在android中的java文件中设置新添加的radioButton的Id?

java - 使用 xssf 库在 excel 中绘制带箭头的线

java - 创建新类对象时出现另一个 'cannot find symbol' 错误

c# - 如何从音频文件中获取 musicbrainz 轨道信息

javascript - SoundManager2 onplay 事件配置不起作用

java - 无法导入javax.media.*; (包不存在)为什么这么说呢?

java - 我想制作一个java程序,其中有一个组合框,显示文件夹中所有可用文件的标题