- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在学习如何使用jlgui(使用swt对其进行控制)构建一个简单的MP3播放器。当我相处得很好的时候,有一件事确实让我发狂,那就是控制计算机发出的声音的音量和声相。
我有一个创建BasicPlayer对象和BasicController的类。我尝试使用BasicController.setGain方法,但是如果我在其中输入任何值,它所做的全部事情就是将音量设置为静音,并且在播放歌曲时似乎无法更改此值。如果有人能给我一些帮助,我真的很感激,因为它使我发疯:-(
还考虑过尝试以下建议
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(new File("C:\\Kasabian.mp3"));
Clip clip = AudioSystem.getClip();
clip.open(audioInputStream);
FloatControl gainControl = (FloatControl) clip.getControl(FloatControl.Type.MASTER_GAIN);
最佳答案
“滚动自己的”解决方案:
Java声音教程的页面末尾“处理带有控件的音频”的部分非常少,称为“直接处理音频数据”。
http://docs.oracle.com/javase/tutorial/sound/controls.html
我放弃了“控件”,而是自己做。如果有人有一个使用Java控件进行音量和平移的有效解决方案,我将很高兴听到它。
要自己控制音量,您需要进入从AudioInputLine读取的数据的“缓冲区”,将数据转换为PCM帧,将PCM值乘以1的分数(其中1.0是完整音量,而0是静音),将其转换回字节,然后最后写入SourceDataLine。
此外,(如果您不灰心),如果volume变量是松散耦合且易失的,它会有所帮助;如果您指定的volume是“目标”,并且缓冲区循环内的变量逐渐接近目标,它会有所帮助。每帧的基础上。这是为了避免可能产生点击的音量跳跃。
并且(如果这还不够的话)有助于将0到1.0的范围映射到更好地匹配可听度水平的方程式(例如指数或对数)。
关于java - 使用JLGui更改系统音量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14666459/
我是一名优秀的程序员,十分优秀!