加载音频文件并在java中的特定位置播放它们

时间:2012-04-02 09:35:30

标签: java audio javasound

我的文件夹中有一组音频文件。现在,我想使用Java将所有这些音频文件加载到内存中,以便以后节省读取时间。此外,用户可以选择他想要播放的音频文件以及位置。

有人可以向我推荐合适的API吗

  1. 将所有音频文件加载到内存中
  2. 在正确的位置播放音频文件。
  3. 我听说过Clip库,但我听说它只存储了价值1秒的音频。有什么建议吗?

    如果有帮助,我的情况下的音频文件每个长4分钟,我有40个。

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

对于可以使用可用(对应用)RAM的Clip,请参阅BigClip

  

.. BigClip类通过outof memory异常。

它将在带有标准内存的JRE中。我有一个DukeBox用于我的音乐收藏。它在分配给应用程序的512 Meg内存中播放长达20分钟的典型MP3(立体声,16位,44.1KHz)。

你仍然没有指定声音的格式,因此无法说出160分钟的音频需要多少内存,超出“很多”。

OTOH,您可能会发现每个BigClip单独加载所需的时间,时间不是很长。我的软件旨在直接从本地磁盘加载,并包含在默认的ProgressMonitorInputStream中。进度对话框很少出现 - 仅适用于播放时间超过12-14分钟的曲目。 “一次一个”可能会在标准内存中为您的声音样本工作。


  

..每个4分钟,我有40 ..

包含160分钟音频所需的内存大小将相差(BOTE)16 - 在高(44100 KHz)/低(11025 KHz)采样率,单声道/立体声和8/16位之间表示音频格式。

分辨率较低

160 min * 
60 SecPerMin * 
11025 KHz * 
1 mono * 
1 byte (8 bit) 
= 
105,840,000 bytes 
对于较低限制,

大约 105 meg

答案 2 :(得分:0)

有一个Java API,称为 Java Media Framework JMF )。 官方页面说:

  

Java Media Framework API(JMF)支持将音频,视频和其他基于时间的媒体添加到基于Java技术构建的应用程序和applet中。该可选包可以捕获,回放,流式处理和转码多种媒体格式,通过提供功能强大的工具包来开发可扩展的跨平台技术,为多媒体开发人员扩展了Java 2平台标准版(J2SE)。

以下是其他资源:

  1. Official overview

  2. Article: Process multimedia with the Java Media Framework API 作者:Peter Mikhalenko