近日刘畊宏的大火,不仅引起全民健身现象,还带火了《本草纲目》歌曲,开始成为无数男孩女孩的健身歌曲。那么今天我们来用Java语言实现播放本草纲目,希望能让小伙伴们健身下!
若是要实现Java流畅连续播放声音,需要用上Java提供的Clip和SourceDataLine声音API来进行编程。
1、Clip API
Clip API是Java的一个非缓冲或内存声音API,属于javax.sound.sampled包的部分,常应用在读取和播放短的声音文件。在播放前,需要将音频文件被加载到内存,用户可完全控制播放方式和随机播放。
①创建一个示例类:SoundPlayerWithClip,实现LineListener接口,以便接收播放的线事件(OPEN、CLOSE、START和STOP)。
public class SoundPlayerUsingClip implements LineListener {
boolean isPlaybackCompleted;
@Override
public void update(LineEvent event) {
if (LineEvent.Type.START == event.getType()) {
System.out.println("Playback started.");
} else if (LineEvent.Type.STOP == event.getType()) {
isPlaybackCompleted = true;
System.out.println("Playback completed.");
}
}
}
②从项目的资源文件夹中读取音频文件(我的资源文件夹包含三个不同格式的音频文件,即WAV、MP3和MPEG)。
nputStream inputStream = getClass().getClassLoader().getResourceAsStream(audioFilePath);
③在文件流中创建一个AudioInputStream。
AudioInputStream audioStream = AudioSystem.getAudioInputStream(inputStream);
④创建一个DataLine.Info对象。
AudioFormat audioFormat = audioStream.getFormat();
DataLine.Info info = new DataLine.Info(Clip.class, audioFormat);
⑤在DataLine.Info创建一个Clip对象,打开流,然后调用start来开始播放音频。
Clip audioClip = (Clip) AudioSystem.getLine(info);
audioClip.addLineListener(this);
audioClip.open(audioStream);
audioClip.start();
⑥关闭开放的资源
audioClip.close();
audioStream.close();
最后运行代码,即可实现播放本草纲目。
除此之外,还有一些其他使用技巧,具体如下:
①循环播放五次音频文件
audioClip.loop(4); //Java等编程语言是0-4
②无期限播放音频
audioClip.loop(Clip.LOOP_CONTINUUSLY);
③从上次播放位置开始播放
audioClip.setMicrosecondPosition(30_000_000);//从第30秒开始播放。
此外还有SourceDataLine API,由于文章篇幅所限,先放到下一篇文章,读者可点击我头像进行查找。