java - Opus 音频文件到 Wav 转换

标签 java wav opus

早上好,

我正在尝试在 Java 上将 opus 音频文件转换为 wav 文件。

我一直在寻找不同库的不同解决方案,最后我找到了一个可能的解决方案。我的问题是输出的 wav 音频文件有很多噪音,比如失真,我不知道如何解决这个问题。

这是我的代码:

public void OpusToWav() {

    JOpusFile inFile = new JOpusFile(input_File);
    AudioFormat sourceFormat = inFile.format;
    JOpusDecodable decoder; // com.glester.jopus.JOpusDecodable
    ByteBuffer sampleBuffer;
    WaveFileWriter wavWriter; // net.sourceforge.jaad.util.wav.WaveFileWriter

    byte [] buf;
    int bytesRead = 0;

    try {
        decoder = JOpusBufferFile.loadFromFile(input_File);
        sampleBuffer = decoder.getSampleBuffer();
        wavWriter = new WaveFileWriter(outputFile, 44100, sourceFormat.getChannels(), sourceFormat.getSampleSizeInBits());

        buf = new byte[sampleBuffer.capacity()];

        while(true) {
            bytesRead = decoder.read();
            if(bytesRead <= 0) break;
            sampleBuffer.get(buf);

            // Its needed to reduce sample volume in byte array??

            wavWriter.write(buf, 0, bytesRead);
        }

        wavWriter.close();
        decoder.close();
        inFile.close();
    } catch(URISyntaxException | IOException e) {
        System.out.println("Error decoding opus file --> " +  e.getMessage());
    }
}

我尝试修改输出字节数组中的样本量,但问题仍然存在。

知道如何解决这个问题吗?

P.D:我尝试过 Concentus库也是如此,但没有区别。

最佳答案

试试这个:https://github.com/louisyonge/opus_android

从 opus 编码为 wav

OpusTool oTool = new OpusTool();
oTool.decode(fileName,fileNameOut, null);
oTool.encode(fileName, fileNameOut, null);

关于java - Opus 音频文件到 Wav 转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45690603/

相关文章:

android - 在 Android 上的 PJSIP 2.5.1 上启用和配置 OPUS 编解码器

java - Eclipse - 将排除的 java 文件返回到构建路径

java - 如何以 Media Recorder 不支持的格式进行编码?

java - 如何验证Java 8 Stream中是否包含两个特定元素?

visual-c++ - 两种音频文件波形对比

java - 尝试将原始PCM写入WAV并且仅获取 header

audio - SoX 不适用于 Opus 音频文件

python - 尽管已安装,但不会导入 Opus

java - 通配符类型与有界类型之间的区别

java - 在 Activemq 队列中搜索特定消息