【问题标题】:Extract gain of audio using java使用java提取音频增益
【发布时间】:2019-08-02 16:53:32
【问题描述】:

我想知道 wav 音频文件的增益/分贝和其他可能的参数。但是 Clip.getLevel() 方法总是以 -0.1 的值返回增益。

public void prepareAudio() {
    try {
        Line.Info linfo = new Line.Info(Clip.class);
        Line line = AudioSystem.getLine(linfo);
        clip = (Clip) line;
        clip.addLineListener(this);
        AudioInputStream ais = AudioSystem.getAudioInputStream(file);
        clip.open(ais);
        clip.start();
        do {
            Thread.sleep(300);
        } while (clip.isActive());
        clip.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

public void update(LineEvent event) {
    LineEvent.Type type = event.getType();
    if (type == LineEvent.Type.OPEN) {
        System.out.println("OPEN");
    } else if (type == LineEvent.Type.CLOSE) {
        System.out.println("CLOSE");
    } else if (type == LineEvent.Type.START) {
        System.out.println("START");
        while (clip.isActive()) {
            System.out.println(clip.getLevel()); // get gain
        }
    } else if (type == LineEvent.Type.STOP) {
        System.out.println("STOP");
        clip.close();
    }
}

}

【问题讨论】:

  • 您必须放弃剪辑。好吗?

标签: java audio sampling javasound


【解决方案1】:

getLevel() 方法为您提供DataLine 的(线性)增益,用于播放,不是音频文件的某些属性。到目前为止,JavaSE 中没有内置方法来确定这样的事情。为了衡量文件中的内容,请考虑研究ReplayGainEBU R128。 EBU R128 的免费开放实现是 libebur128,但它不是 Java 版本。

【讨论】:

    猜你喜欢
    • 2012-12-12
    • 2017-01-16
    • 2016-05-01
    • 1970-01-01
    • 2015-08-10
    • 2011-05-17
    • 1970-01-01
    • 2012-01-30
    • 1970-01-01
    相关资源
    最近更新 更多