java - JLayer播放时更改音量(JavaZoom)

标签 java audio audio-player jlayer

我构建了一个JLayer,它播放网络音乐流,除了音量外,它都能正常工作。我无法改变它。

我已经尝试了以下方法,但是卷始终保持不变,没有错误:

public synchronized void setVolume(float vol) {
    Line.Info source = Port.Info.SPEAKER;

    if (AudioSystem.isLineSupported(source)) {
        try {
            Port outline = (Port) AudioSystem.getLine(source);
            outline.open();

            FloatControl volumeControl = (FloatControl) outline.getControl(FloatControl.Type.VOLUME);
            System.out.println("volume: " + volumeControl.getValue());

            volumeControl.setValue(vol);
            System.out.println("new volume: " + volumeControl.getValue());

        } catch (LineUnavailableException ex) {
            System.err.println("source not supported");
            ex.printStackTrace();
        }
    }
}


/*public synchronized void setVolume(double vol) {
    try {
        Mixer.Info[] infos = AudioSystem.getMixerInfo();
        for (Mixer.Info info : infos) {
            Mixer mixer = AudioSystem.getMixer(info);
            if (mixer.isLineSupported(Port.Info.SPEAKER)) {
                Port port = (Port) mixer.getLine(Port.Info.SPEAKER);
                port.open();
                if (port.isControlSupported(FloatControl.Type.VOLUME)) {
                    FloatControl volume = (FloatControl) port.getControl(FloatControl.Type.VOLUME);
                    volume.setValue((float) (vol / 100));
                }
                port.close();
            }
        }
    } catch (Exception ex) {
        ex.printStackTrace();
    }
}*/

最佳答案

我的经验是,Java支持的各种Controls的实现有些失败。我不清楚为什么会这样。也许与操作系统或特定机器支持的功能有关?

无论如何,对于音量而言,MASTER_GAIN通常是音量最佳的选择。

Java Tutorials section on using Controls的结尾部分讨论如何直接处理音频数据。我建议使用此选项,但是在使用JavaZoom代码时获取数据可能会出现问题,并且可能涉及调整库的源代码。

关于java - JLayer播放时更改音量(JavaZoom),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62350578/

相关文章:

android - Android的任何音频降噪技术?

c# - 有没有办法在不安装 DirectX SDK 的情况下在 C# 中播放音频片段?

java - Android Socket 客户端问题

java - Jasper Report PDF 中未显示乌克兰(西里尔文)字符

java - 尽管将 'disableCNCheck' 设置为 true,但 https URL 主机名与通用名称 (CN) 不匹配

Java类问题(一对多-多对一)?

java - java将mp3转换为wav 16位单声道

Java 播放声音。有默认的系统声音吗?

ios - 即使应用程序正在播放音乐,应用程序也会从后台状态暂停

ios - 如何跟踪歌曲何时完成 AVAudioPlayer