所有类


javax.sound.sampled
类 AudioSystem

java.lang.Object
  继承者 javax.sound.sampled.AudioSystem

public class AudioSystem
   
   
   
   
   
extends Object

AudioSystem 类充当取样音频系统资源的入口点。此类允许查询和访问安装在系统上的混频器。AudioSystem 包括许多在不同格式间转换音频数据的方法,以及在音频文件和流之间进行转换的方法。它还提供不用显式处理混频器即可直接从 AudioSystem 获得 Line 的方法。

属性可用于指定特定行类型的默认混频器。系统属性和属性文件都要考虑。在 Sun 引用实现中,属性文件是 JRE 目录中的 "lib/sound.properties"。如果存在作为系统属性的属性并且存在于属性文件中,则优先使用系统属性。如果未指定任何属性,则在可用的设备中选择适当的默认值。属性文件的语法在 Properties.load 中指定。下表列出了可用的属性键和获取它们的方法:

属性键接口起作用的方法
javax.sound.sampled.ClipClipgetLine(javax.sound.sampled.Line.Info), getClip()
javax.sound.sampled.PortPortgetLine(javax.sound.sampled.Line.Info)
javax.sound.sampled.SourceDataLineSourceDataLinegetLine(javax.sound.sampled.Line.Info), getSourceDataLine(javax.sound.sampled.AudioFormat)
javax.sound.sampled.TargetDataLineTargetDataLinegetLine(javax.sound.sampled.Line.Info), getTargetDataLine(javax.sound.sampled.AudioFormat)
属性值由提供程序类名称和混频器名称组成,通过哈希标记 ("#") 进行分隔。提供程序类名称是具体 mixer provider 类的完全限定名。混频器名称是与由 Mixer.InfogetName 方法返回的 String 匹配。可以省略类名称或混频器名称。如果只指定类名称,则尾部哈希标记是可选的。

如果指定了提供程序类,并且可以从已安装的提供程序成功地检索到它,则可从该提供程序检索 Mixer.Info 对象的列表。否则,当这些混频器不提供后续匹配时,从包含所有可用 Mixer.Info 对象的 getMixerInfo() 中检索列表。

如果指定了混频器名称,则搜索所产生的 Mixer.Info 对象的列表:返回第一个具有匹配名称且其 Mixer 提供相应行接口的对象。如果未找到匹配的 Mixer.Info 对象,或未指定混频器名称,则返回得到的列表中提供相应行接口的第一个混频器。 例如,在调用 getLine 请求 Clip 实例时,值为 "com.sun.media.sound.MixerProvider#SunClip" 的属性 javax.sound.sampled.Clip 将具有以下结果:如果在已安装的混频器提供程序列表中存在类 com.sun.media.sound.MixerProvider,则返回第一个具有名称 "SunClip" 的混频器中的第一个 Clip。如果无法找到,则返回指定提供程序的第一个混频器中的第一个 Clip,不管名称如何。如果不存在,则返回所有混频器(由 getMixerInfo 返回)列表中具有名称 "SunClip" 的第一个 Mixer 中的第一个 Clip;或者,如果这个也找不到,则返回可以从所有混频器列表中找到的第一个 Mixer 的第一个 Clip。如果还是失败,则抛出 IllegalArgumentException

从以下版本开始:
1.3
另请参见:
AudioFormat, AudioInputStream, Mixer, Line, Line.Info

字段摘要
static intNOT_SPECIFIED
          代表未知数字值的整数。
 
方法摘要
static AudioFileFormatgetAudioFileFormat(File file)
          获得指定 File 的音频文件格式。
static AudioFileFormatgetAudioFileFormat(InputStream stream)
          获得提供的音频输入流的音频文件格式。
static AudioFileFormatgetAudioFileFormat(URL url)
          获得指定 URL 的音频文件格式。
static AudioFileFormat.Type[]getAudioFileTypes()
          获得由系统为其提供文件写入支持的文件类型。
static AudioFileFormat.Type[]getAudioFileTypes(AudioInputStream stream)
          获得系统可从指定音频输入流写入的文件类型。
static AudioInputStreamgetAudioInputStream(AudioFormat.Encoding targetEncoding, AudioInputStream sourceStream)
          通过转换提供的音频输入流,获得所指示编码的音频输入流。
static AudioInputStreamgetAudioInputStream(AudioFormat targetFormat, AudioInputStream sourceStream)
          通过转换提供的音频输入流,获得所指示格式的音频输入流。
static AudioInputStreamgetAudioInputStream(File file)
          从提供的 File 获得音频输入流。
static AudioInputStreamgetAudioInputStream(InputStream stream)
          从提供的输入流获得音频输入流。
static AudioInputStreamgetAudioInputStream(URL url)
          从提供的 URL 获得音频输入流。
static ClipgetClip()
          获得可用于回放音频文件或音频流的剪辑。
static ClipgetClip(Mixer.Info mixerInfo)
          从指定混频器获得可用于回放音频文件或音频流的剪辑。
static LinegetLine(Line.Info info)
          获得与指定 Line.Info 对象中的描述匹配的行。
static MixergetMixer(Mixer.Info info)
          获得请求的音频混频器。
static Mixer.Info[]getMixerInfo()
          获得混频器信息对象的数组,该数组表示当前安装在系统上的音频混频器的集合。
static SourceDataLinegetSourceDataLine(AudioFormat format)
          获得一个源数据行,该行可用于以 AudioFormat 对象指定的格式回放音频数据。
static SourceDataLinegetSourceDataLine(AudioFormat format, Mixer.Info mixerinfo)
          获得一个源数据行,该行可用于以 AudioFormat 对象(通过由 Mixer.Info 对象指定的混频器提供)指定的格式回放音频数据。
static Line.Info[]getSourceLineInfo(Line.Info info)
          获得关于已安装混频器所支持特定类型的全部源行的信息。
static TargetDataLinegetTargetDataLine(AudioFormat format)
          获得一个目标数据行,该行可用于以 AudioFormat 对象指定的格式记录音频数据。
static TargetDataLinegetTargetDataLine(AudioFormat format, Mixer.Info mixerinfo)
          获得一个目标数据行,该可用于以 AudioFormat 对象(该对象通过由 Mixer.Info 对象指定的混频器提供)指定的格式记录音频数据。
static AudioFormat.Encoding[]getTargetEncodings(AudioFormat.Encoding sourceEncoding)
          使用已安装的格式转换器集合获得系统可以从具有指定编码的音频输入流中获得的编码。
static AudioFormat.Encoding[]getTargetEncodings(AudioFormat sourceFormat)
          使用已安装的格式转换器集合,获得系统可以从具有指定格式的音频输入流中获得的编码。
static AudioFormat[]getTargetFormats(AudioFormat.Encoding targetEncoding, AudioFormat sourceFormat)
          使用已安装的格式转换器,获得具有特定编码的格式,以及系统可以从指定格式的流中获得的格式。
static Line.Info[]getTargetLineInfo(Line.Info info)
          获得关于已安装混频器所支持特定类型的全部目标行的信息。
static booleanisConversionSupported(AudioFormat.Encoding targetEncoding, AudioFormat sourceFormat)
          指示是否可以从具有指定格式的音频输入流获得指定编码的音频输入流。
static booleanisConversionSupported(AudioFormat targetFormat, AudioFormat sourceFormat)
          指示是否可从另一指定格式的音频输入流获得指定格式的音频输入流。
static booleanisFileTypeSupported(AudioFileFormat.Type fileType)
          指示系统是否提供指定文件类型的文件写入支持。
static booleanisFileTypeSupported(AudioFileFormat.Type fileType, AudioInputStream stream)
          指示是否可以从指示的音频输入流写入指定文件类型的音频文件。
static booleanisLineSupported(Line.Info info)
          指示系统是否支持与指定 Line.Info 对象匹配的行。
static intwrite(AudioInputStream stream, AudioFileFormat.Type fileType, File out)
          将表示指定文件类型的音频文件的字节流写入所提供的外部文件。
static intwrite(AudioInputStream stream, AudioFileFormat.Type fileType, OutputStream out)
          将表示指定文件类型的音频文件的字节流写入所提供的输出流。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

字段详细信息

NOT_SPECIFIED

public static final int NOT_SPECIFIED
代表未知数字值的整数。此值只适用于通常不采用负值的有符号的量。示例包括文件大小、帧大小、缓冲区大小和样本速率。许多 Java Sound 构造方法接受这些参数的 NOT_SPECIFIED 值。据文档记录,其他方法可能也接受或返回此值。

另请参见:
常量字段值
方法详细信息

getMixerInfo

public static Mixer.Info[] getMixerInfo()
获得混频器信息对象的数组,该数组表示当前安装在系统上的音频混频器的集合。

返回:
当前安装的混频器的信息对象的数组。如果系统上没有混频器可用,则返回长度为 0 的数组。
另请参见:
getMixer(javax.sound.sampled.Mixer.Info)

getMixer

public static Mixer getMixer(Mixer.Info info)
获得请求的音频混频器。

参数:
info - 表示所需混频器的 Mixer.Info 对象,或者为 null,表示系统默认混频器
返回:
请求的混频器
抛出:
SecurityException - 如果因为安全限制请求的混频器不可用
IllegalArgumentException - 如果信息对象不表示安装在系统上的混频器
另请参见:
getMixerInfo()

getSourceLineInfo

public static Line.Info[] getSourceLineInfo(Line.Info info)
获得关于已安装混频器所支持特定类型的全部源行的信息。

参数:
info - 指定请求其信息的行种类的 Line.Info 对象
返回:
Line.Info 对象的数组,这些对象描述与请求的类型匹配的源行。如果所有的匹配源行都不受支持,则返回长度为 0 的数组。
另请参见:
Mixer.getSourceLineInfo(Line.Info)

getTargetLineInfo

public static Line.Info[] getTargetLineInfo(Line.Info info)
获得关于已安装混频器所支持特定类型的全部目标行的信息。

参数:
info - 指定请求其信息的行种类的 Line.Info 对象
返回:
Line.Info 对象的数组,这些对象描述与请求的类型匹配的目标行。如果所有的匹配目标行都不受支持,则返回长度为 0 的数组。
另请参见:
Mixer.getTargetLineInfo(Line.Info)

isLineSupported

public static boolean isLineSupported(Line.Info info)
指示系统是否支持与指定 Line.Info 对象匹配的行。如果所有已安装的混频器都支持行,则说明行受支持。

参数:
info - 描述查询其支持的行的 Line.Info 对象
返回:
如果至少支持一个匹配行,则返回 true;否则返回 false
另请参见:
Mixer.isLineSupported(Line.Info)

getLine

public static Line getLine(Line.Info info)
                    throws LineUnavailableException
获得与指定 Line.Info 对象中的描述匹配的行。

如果请求 DataLine,且 infoDataLine.Info 的实例(至少指定一种完全限定的音频格式),则上一个数据行将用作返回的 DataLine 的默认格式。

如果定义了系统属性 javax.sound.sampled.Clipjavax.sound.sampled.Portjavax.sound.sampled.SourceDataLinejavax.sound.sampled.TargetDataLine,或在文件 "sound.properties" 中定义它们,则使用它们检索默认行。有关详细信息,请参阅类描述。 如果未设置相应属性,或尚未安装属性中请求的混频器,或不提供请求的行,则在所有安装的混频器中查询请求的行类型。从提供请求的行类型的第一个混频器中返回行。

参数:
info - 描述所需种类的行的 Line.Info 对象
返回:
请求的种类的行
抛出:
LineUnavailableException - 如果由于资源限制匹配行不可用
SecurityException - 如果由于安全限制匹配行不可用
IllegalArgumentException - 如果系统不是通过所有安装的混频器至少支持一个匹配 Line.Info 对象的行

getClip

public static Clip getClip()
                    throws LineUnavailableException
获得可用于回放音频文件或音频流的剪辑。返回的剪辑将通过默认系统混频器提供;如果不可能,则通过安装在系统中的支持 Clip 对象的任何其他混频器提供。

返回的剪辑必须用 open(AudioFormat)open(AudioInputStream) 方法打开。

这是在内部使用 getMixergetLine 的高级方法。

如果定义了系统属性 javax.sound.sampled.Clip,或在文件 "sound.properties" 中定义了它,则使用它检索默认剪辑。有关详细信息,请参阅类描述

返回:
所需的剪辑对象
抛出:
LineUnavailableException - 如果由于资源限制剪辑对象不可用
SecurityException - 如果由于安全限制剪辑对象不可用
IllegalArgumentException - 如果不是通过所有安装的混频器至少支持一个剪辑实例
从以下版本开始:
1.5
另请参见:
getClip(Mixer.Info)