扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
import javax.sound.sampled.*;
创新互联建站是一家专业提供青岛企业网站建设,专注与网站建设、成都网站建设、HTML5、小程序制作等业务。10年已为青岛众多企业、政府机构等服务。创新互联专业网站制作公司优惠进行中。
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(new File("some_file.wav")); //some_file.wav是你需要修改的文件名
Clip clip = AudioSystem.getClip();
clip.open(audioInputStream);
FloatControl gainControl = (FloatControl)
clip.getControl(FloatControl.Type.MASTER_GAIN);
long dbValue=gainControl.getValue();//获取原音量值 ,你要获取所有的话,自己写循环,每次循环都把样本音量放到集合或者数组去
gainControl.setValue(-10.0f); // -10.0f就是减少10分贝的意思,自己看需要调整
clip.start();
设置音量的方法也很简单,AudioManager提供了方法:publicvoidsetStreamVolume(intstreamType,intindex,intflags)其中streamType有内置的常量,去文档里面就可以看到。JAVA代码:AudioManagermAudioManager=(AudioManager)getSystemServi
这句话是错的!AudioClip clip=new AudioClip();
AudioClip 是接口是不能new。应为AudioClip clip=null;
AudioClip 好像只能支持.au格式的!
调试中,getAudioClip返回的AppletAudioClip对象中,AudioClip 属性为空,所以这里根本无法播放。
建议到sun公司下载JMF包,它支持多媒体。
在 applet 中播放声音文件非常简单,一般需要以下步骤:创建一个 AudioClip 对象
装入 .au 声音文件到 AudioClip 对象
一次播放或者不停循环播放声音
停止播放
下面是相应的代码:import java.applet.*;AudioClip ac = getAudioClip(getCodeBase(), soundFile);
ac.play(); //play once
ac.stop(); //stop playing
解决这个问题的窍门是利用由 Sun 及 其JDK 提供的某些 undocumented 的特征。先看看 Sun JDK 中的文件 classes.zip (使用任何解压工具即可),发现其中不仅包含标准的 Java 包如 java.applet 而且还存在包 sun.audio. (在 sun/audio 的目录下.)
包 sun.audio 中包含了用于播放声音文件所需的所有东西!下面是示例代码:import sun.audio.*; //import the sun.audio package
import java.io.*;//** add this into your application code as appropriate// Open an input stream to the audio file.
InputStream in = new FileInputStream(Filename);// Create an AudioStream object from the input stream.
AudioStream as = new AudioStream(in);// Use the static class member "player" from class AudioPlayer to play
// clip.
AudioPlayer.player.start(as);// Similarly, to stop the audio.
AudioPlayer.player.stop(as);如果要用一个 URL 做为声音流的源(source),则用下面的代码所示替换输入流来创建声音流:AudioStream as = new AudioStream (url.openStream());如果需要持续播放声音文件,则要稍稍复杂一点:// Create audio stream as discussed previously.
// Create AudioData source.
AudioData data = as.getData();// Create ContinuousAudioDataStream.
ContinuousAudioDataStream cas = new ContinuousAudioDataStream (data);// Play audio.
java控制window系统音量有两种办法,一是JNA或者JNI调用,二是执行VBS脚本。
这里推荐使用第二种方式,它比较灵活,控制可以放在程序内,也可以将控制文件独立出来,便于后期维护更改。
核心代码如下:
public static void main(String[] args){
File file = File.createTempFile("ylkz_vba",".vbs");
file.deleteOnExit();
FileWriter fw = new FileWriter(file);
String vbs ="'以下命令实现音量减(用循环可以实现一直减):\n" +
"Set WshShell = CreateObject(\"WScript.Shell\")\n" +
"WshShell.SendKeys(chr(hAE))\n" +
"'音量增(用循环可以实现一直增):\n" +
"Set WshShell = CreateObject(\"WScript.Shell\")\n" +
"WshShell.SendKeys(chr(hAF))";
fw.write(vbs);
fw.close();
Runtime.getRuntime().exec("wscript " + file.getPath()).waitFor();
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流