-6

我正在用java制作一个音频播放器,一个运行.wav文件的小代码片段是:

AudioInputStream ais = AudioSystem.getAudioInputStream(new File("C:\\path\\c4.wav").getAbsoluteFile());
    Clip clip = AudioSystem.getClip();
    clip.open(ais);
    clip.start();

我想知道一些关于java声音的事情

首先,混音器、线路、端口在java声音中有什么用。

其次,如何包含其他格式,例如mp2,mp3......或者是否有一个通用的方法可以包含任何格式。

第三,如何添加音量控制。

第四,我在 Net Beans 中制作这个播放器,所以如何使用滑块进行音量控制和搜索栏。

...我想使用基本的 java 声音 api 制作音频播放器,我正在阅读http://docs.oracle.com/javase/tutorial/sound/TOC.html的教程,所以请不要给出解决方案包含 javafx 或其他媒体文件...

4

1 回答 1

3

首先,如果您想播放不循环且长度超过几秒的声音,则不应使用 Clips。

您将需要使用 SourceDataLines,它可以通过流读取多种不同格式的音频数据(请参阅 AudioFileFormat.Type 了解详情)。

至于你的问题:

  1. 混音器、线路和端口都用于在声音数据离开或进入 Java 程序时对其进行修改。这可能意味着改变音高、平移、幅度等。

  2. 为了将 MP3 解码添加到您的程序中,您将不得不使用外部库。Java 媒体框架 (JMF) 就是一个例子。

  3. 如果要添加音量控制,可以使用 FloatControl.Type.VOLUME。SourceDataLines 与它们兼容。

  4. 要使用滑块控制音量,只需从滑块中获取一个整数值并将其传递给 FloatControl.Type.VOLUME。这可能需要一些技巧,因为 FloatControl.Types 通常具有精确的边界和乘数。至于搜索栏,您可能会在 JMF 中找到答案。不过,没有保证。

于 2013-08-10T02:40:38.213 回答