java

位置:IT落伍者 >> java >> 浏览文章

如何在Java应用程序中播放声音文件


发布日期:2020年04月16日
 
如何在Java应用程序中播放声音文件

简介

现有的在 Java applet 中对声音播放的支持使得声音播放任务变得很简单但是在应用程序中缺少这样的支持此篇小技巧将告诉你如何在 Java 应用程序中播放声音文件( 字)

在 Java 应用程序中播放声音文件在现有发行的 Java 版本中都没有正式的支持但别担心我们还是有办法的此篇小技巧将告诉你怎么做我们从 applet 中播放声音文件所需的基本步骤开始讲述然后慢慢转到讲述 Java 应用程序中的支持

在 applet 中播放声音文件非常简单一般需要以下步骤

创建一个 AudioClip 对象

装入 au 声音文件到 AudioClip 对象

一次播放或者不停循环播放声音

停止播放

下面是相应的代码

import javaapplet*;

AudioClip ac = getAudioClip(getCodeBase() soundFile);

acplay(); //play once

acstop(); //stop playing

acloop(); //play continuously

看起来在 Java 应用程序中用相同的代码来播放声音文件似乎也是可行的但很不幸如果你真这样做编译器就会报错为什么呢?因为 AudioClip 对象及其方法 getAudioClip() 属于javaapplet 包 而不属于应用程序包的可喜的是我们还可以自己做些改变来实现声音播放功能

解决这个问题的窍门是利用由 Sun 及 其JDK 提供的某些 undocumented 的特征先看看 Sun JDK 中的文件 classeszip (使用任何解压工具即可)发现其中不仅包含标准的 Java 包如 javaapplet 而且还存在包 sunaudio (在 sun/audio 的目录下)

包 sunaudio 中包含了用于播放声音文件所需的所有东西!下面是示例代码

import sunaudio*; //import the sunaudio package

import javaio*;

//** 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

AudioPlayerplayerstart(as);

// Similarly to stop the audio

AudioPlayerplayerstop(as);

如果要用一个 URL 做为声音流的源(source)则用下面的代码所示替换输入流来创建声音流

AudioStream as = new AudioStream (urlopenStream());

如果需要持续播放声音文件则要稍稍复杂一点

// Create audio stream as discussed previously

// Create AudioData source

AudioData data = asgetData();

// Create ContinuousAudioDataStream

ContinuousAudioDataStream cas = new ContinuousAudioDataStream (data);

// Play audio

AudioPlayerplayerplay (cas);

// Similarly to stop the audio

AudioPlayerplayerstop (cas);

上一篇:Java代码调用JavaFX的例子

下一篇:Java操作Excel完美解决方案