java.lang.Object javax.sound.sampled.AudioSystem
public class AudioSystem
AudioSystem
类充当取样音频系统资源的入口点。此类允许查询和访问安装在系统上的混频器。AudioSystem
包括许多在不同格式间转换音频数据的方法,以及在音频文件和流之间进行转换的方法。它还提供不用显式处理混频器即可直接从 AudioSystem
获得
的方法。 Line
属性可用于指定特定行类型的默认混频器。系统属性和属性文件都要考虑。在 Sun 引用实现中,属性文件是 JRE 目录中的 "lib/sound.properties"。如果存在作为系统属性的属性并且存在于属性文件中,则优先使用系统属性。如果未指定任何属性,则在可用的设备中选择适当的默认值。属性文件的语法在 Properties.load
中指定。下表列出了可用的属性键和获得它们的方法:
属性键 | 接口 | 起作用的方法 |
---|---|---|
javax.sound.sampled.Clip |
Clip |
getLine(javax.sound.sampled.Line.Info) , getClip() |
javax.sound.sampled.Port |
Port |
getLine(javax.sound.sampled.Line.Info) |
javax.sound.sampled.SourceDataLine |
SourceDataLine |
getLine(javax.sound.sampled.Line.Info) , getSourceDataLine(javax.sound.sampled.AudioFormat) |
javax.sound.sampled.TargetDataLine |
TargetDataLine |
getLine(javax.sound.sampled.Line.Info) , getTargetDataLine(javax.sound.sampled.AudioFormat) |
mixer provider
类的完全限定名。混频器名称是与由
Mixer.Info
的
getName
方法返回的
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
。
AudioFormat
,
AudioInputStream
,
Mixer
,
Line
,
Line.Info
字段摘要 | |
---|---|
static int |
NOT_SPECIFIED 代表未知数字值的整数。 |
方法摘要 | |
---|---|
static AudioFileFormat |
getAudioFileFormat(File file) 获得指定 File 的音频文件格式。 |
static AudioFileFormat |
getAudioFileFormat(InputStream stream) 获得提供的音频输入流的音频文件格式。 |
static AudioFileFormat |
getAudioFileFormat(URL url) 获得指定 URL 的音频文件格式。 |
static AudioFileFormat.Type[] |
getAudioFileTypes() 获得由系统为其提供文件写入支持的文件类型。 |
static AudioFileFormat.Type[] |
getAudioFileTypes(AudioInputStream stream) 获得系统可从指定音频输入流写入的文件类型。 |
static AudioInputStream |
getAudioInputStream(AudioFormat.Encoding targetEncoding, AudioInputStream sourceStream) 通过转换提供的音频输入流,获得所指示编码的音频输入流。 |
static AudioInputStream |
getAudioInputStream(AudioFormat targetFormat, AudioInputStream sourceStream) 通过转换提供的音频输入流,获得所指示格式的音频输入流。 |
static AudioInputStream |
getAudioInputStream(File file) 从提供的 File 获得音频输入流。 |
static AudioInputStream |
getAudioInputStream(InputStream stream) 从提供的输入流获得音频输入流。 |
static AudioInputStream |
getAudioInputStream(URL url) 从提供的 URL 获得音频输入流。 |
static Clip |
getClip() 获得可用于回放音频文件或音频流的剪辑。 |
static Clip |
getClip(Mixer.Info mixerInfo) 从指定混频器获得可用于回放音频文件或音频流的剪辑。 |
static Line |
getLine(Line.Info info) 获得与指定 Line.Info 对象中的描述匹配的行。 |
static Mixer |
getMixer(Mixer.Info info) 获得请求的音频混频器。 |
static Mixer.Info[] |
getMixerInfo() 获得混频器信息对象的数组,该数组表示当前安装在系统上的音频混频器的集合。 |
static SourceDataLine |
getSourceDataLine(AudioFormat format) 获得一个源数据行,该行可用于以 AudioFormat 对象指定的格式回放音频数据。 |
static SourceDataLine |
getSourceDataLine(AudioFormat format, Mixer.Info mixerinfo) 获得一个源数据行,该行可用于以 AudioFormat 对象(通过由 Mixer.Info 对象指定的混频器提供)指定的格式回放音频数据。 |
static Line.Info[] |
getSourceLineInfo(Line.Info info) 获得关于已安装混频器所支持特定类型的全部源行的信息。 |
static TargetDataLine |
getTargetDataLine(AudioFormat format) 获得一个目标数据行,该行可用于以 AudioFormat 对象指定的格式记录音频数据。 |
static TargetDataLine |
getTargetDataLine(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 boolean |
isConversionSupported(AudioFormat.Encoding targetEncoding, AudioFormat sourceFormat) 指示是否可以从具有指定格式的音频输入流获得指定编码的音频输入流。 |
static boolean |
isConversionSupported(AudioFormat targetFormat, AudioFormat sourceFormat) 指示是否可从另一指定格式的音频输入流获得指定格式的音频输入流。 |
static boolean |
isFileTypeSupported(AudioFileFormat.Type fileType) 指示系统是否提供指定文件类型的文件写入支持。 |
static boolean |
isFileTypeSupported(AudioFileFormat.Type fileType, AudioInputStream stream) 指示是否可以从指示的音频输入流写入指定文件类型的音频文件。 |
static boolean |
isLineSupported(Line.Info info) 指示系统是否支持与指定 Line.Info 对象匹配的行。 |
static int |
write(AudioInputStream stream, AudioFileFormat.Type fileType, File out) 将表示指定文件类型的音频文件的字节流写入所提供的外部文件。 |
static int |
write(AudioInputStream stream, AudioFileFormat.Type fileType, OutputStream out) 将表示指定文件类型的音频文件的字节流写入所提供的输出流。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
字段详细信息 |
---|
public static final int NOT_SPECIFIED
NOT_SPECIFIED
值。据文档记录,其他方法可能也接受或返回此值。
方法详细信息 |
---|
public static Mixer.Info[] getMixerInfo()
getMixer(javax.sound.sampled.Mixer.Info)
public static Mixer getMixer(Mixer.Info info)
info
- 表示所需混频器的
Mixer.Info
对象,或者为
null
,表示系统默认混频器
SecurityException
- 如果因为安全限制请求的混频器不可用
IllegalArgumentException
- 如果信息对象不表示安装在系统上的混频器
getMixerInfo()
public static Line.Info[] getSourceLineInfo(Line.Info info)
info
- 指定请求其信息的行种类的
Line.Info
对象
Line.Info
对象的数组,这些对象描述与请求的类型匹配的源行。如果所有的匹配源行都不受支持,则返回长度为 0 的数组。
Mixer.getSourceLineInfo(Line.Info)
public static Line.Info[] getTargetLineInfo(Line.Info info)
info
- 指定请求其信息的行种类的
Line.Info
对象
Line.Info
对象的数组,这些对象描述与请求的类型匹配的目标行。如果所有的匹配目标行都不受支持,则返回长度为 0 的数组。
Mixer.getTargetLineInfo(Line.Info)
public static boolean isLineSupported(Line.Info info)
Line.Info
对象匹配的行。如果所有已安装的混频器都支持行,则说明行受支持。
info
- 描述查询其支持的行的
Line.Info
对象
true
;否则返回
false
Mixer.isLineSupported(Line.Info)
public static Line getLine(Line.Info info) throws LineUnavailableException
Line.Info
对象中的描述匹配的行。
如果请求 DataLine
,且 info
是 DataLine.Info
的实例(至少指定一种完全限定的音频格式),则上一个数据行将用作返回的 DataLine
的默认格式。
如果定义了系统属性 javax.sound.sampled.Clip
、javax.sound.sampled.Port
、javax.sound.sampled.SourceDataLine
和 javax.sound.sampled.TargetDataLine
,或在文件 "sound.properties" 中定义它们,则使用它们检索默认行。有关详细信息,请参阅类描述
。 如果未设置相应属性,或尚未安装属性中请求的混频器,或不提供请求的行,则在所有安装的混频器中查询请求的行类型。从提供请求的行类型的第一个混频器中返回行。
info
- 描述所需种类的行的
Line.Info
对象
LineUnavailableException
- 如果由于资源限制匹配行不可用
SecurityException
- 如果由于安全限制匹配行不可用
IllegalArgumentException
- 如果系统不是通过所有安装的混频器至少支持一个匹配
Line.Info
对象的行
public static Clip getClip() throws LineUnavailableException
Clip
对象的任何其他混频器提供。
返回的剪辑必须用 open(AudioFormat)
或 open(AudioInputStream)
方法打开。
这是在内部使用 getMixer
和 getLine
的高级方法。
如果定义了系统属性 javax.sound.sampled.Clip
,或在文件 "sound.properties" 中定义了它,则使用它检索默认剪辑。有关详细信息,请参阅类描述
。
LineUnavailableException
- 如果由于资源限制剪辑对象不可用
SecurityException
- 如果由于安全限制剪辑对象不可用
IllegalArgumentException
- 如果不是通过所有安装的混频器至少支持一个剪辑实例
getClip(Mixer.Info)
public static Clip getClip(Mixer.Info mixerInfo) throws LineUnavailableException
返回的剪辑必须用 open(AudioFormat)
或 open(AudioInputStream)
方法打开。
这是在内部使用 getMixer
和 getLine
的高级方法。
mixerInfo
- 表示所需混频器的
Mixer.Info
对象,或者为
null
,表示系统默认混频器
LineUnavailableException
- 如果由于资源限制此混频器不提供剪辑
SecurityException
- 如果由于安全限制此混频器不提供剪辑
IllegalArgumentException
- 如果系统不是通过所有安装的混频器至少支持一个剪辑
getClip()
public static SourceDataLine getSourceDataLine(AudioFormat format) throws LineUnavailableException
AudioFormat
对象指定的格式回放音频数据。返回的行将通过默认系统混频器提供,如果有可能,则通过安装在系统中的支持匹配
SourceDataLine
对象的任何其他混频器提供。
返回的行应该用 open(AudioFormat)
或 open(AudioFormat, int)
方法打开。
这是在内部使用 getMixer
和 getLine
的高级方法。
返回的 SourceDataLine
的默认音频格式将使用 format
进行初始化。
如果定义了系统属性 javax.sound.sampled.SourceDataLine
,或在文件 "sound.properties" 中定义了它,则使用它检索默认的源数据行。有关详细信息,请参阅类描述
。
format
- 指定返回行的受支持格式的
AudioFormat
对象,或者为
null
,表示任何音频格式
SourceDataLine
对象
LineUnavailableException
- 如果由于资源限制匹配的源数据行不可用
SecurityException
- 如果由于安全限制匹配的源数据行不可用
IllegalArgumentException
- 如果系统不是通过所有安装的混频器至少支持一个支持指定音频格式的源数据行
getSourceDataLine(AudioFormat, Mixer.Info)
public static SourceDataLine getSourceDataLine(AudioFormat format, Mixer.Info mixerinfo) throws LineUnavailableException
AudioFormat
对象(通过由
Mixer.Info
对象指定的混频器提供)指定的格式回放音频数据。
返回的行应该用 open(AudioFormat)
或 open(AudioFormat, int)
方法打开。
这是在内部使用 getMixer
和 getLine
的高级方法。
返回的 SourceDataLine
的默认音频格式将使用 format
进行初始化。
format
- 指定返回行的受支持音频格式的
AudioFormat
对象,或者为
null
,表示任何音频格式
mixerinfo
- 表示所需混频器的
Mixer.Info
对象,或者为
null
,表示系统默认混频器
SourceDataLine
对象
LineUnavailableException
- 如果由于资源限制指定混频器中的匹配源数据行不可用
SecurityException
- 如果由于安全限制指定混频器中的匹配源数据行不可用
IllegalArgumentException
- 如果指定的混频器不至少支持一个支持指定音频格式的源数据行
getSourceDataLine(AudioFormat)
public static TargetDataLine getTargetDataLine(AudioFormat format) throws LineUnavailableException
AudioFormat
对象指定的格式记录音频数据。返回的行将通过默认系统混频器提供,如果有可能,则通过安装在系统中的支持匹配
TargetDataLine
对象的任何其他混频器提供。
返回的行应该用 open(AudioFormat)
或 open(AudioFormat, int)
方法打开。
这是在内部使用 getMixer
和 getLine
的高级方法。
返回的 TargetDataLine
的默认音频格式将使用 format
进行初始化。
format
- 指定返回行的受支持格式的
AudioFormat
对象,或者为
null
,表示任何音频格式
TargetDataLine
对象
LineUnavailableException
- 如果由于资源限制匹配的目标数据行不可用
SecurityException
- 如果由于安全限制匹配的目标数据行不可用
IllegalArgumentException
- 如果系统不是通过所有安装的混频器至少支持一个支持指定音频格式的目标数据行
getTargetDataLine(AudioFormat, Mixer.Info)
,
AudioPermission
public static TargetDataLine getTargetDataLine(AudioFormat format, Mixer.Info mixerinfo) throws LineUnavailableException
AudioFormat
对象(该对象通过由
Mixer.Info
对象指定的混频器提供)指定的格式记录音频数据。
返回的行应该用 open(AudioFormat)
或 open(AudioFormat, int)
方法打开。
这是在内部使用 getMixer
和 getLine
的高级方法。
返回的 TargetDataLine
的默认音频格式将使用 format
进行初始化。
如果定义了系统属性 javax.sound.sampled.TargetDataLine
,或在文件 "sound.properties" 中定义了它,则使用它检索默认的源数据行。有关详细信息,请参阅类描述
。
format
- 指定返回行的受支持音频格式的
AudioFormat
对象,或者为
null
,表示任何音频格式
mixerinfo
- 表示所需混频器的
Mixer.Info
对象,或者为
null
,表示系统默认混频器
TargetDataLine
对象
LineUnavailableException
- 如果由于资源限制指定混频器中的匹配目标数据行不可用
SecurityException
- 如果由于安全限制指定混频器中的匹配目标数据行不可用
IllegalArgumentException
- 如果指定的混频器不至少支持一个支持指定音频格式的目标数据行
getTargetDataLine(AudioFormat)
,
AudioPermission
public static AudioFormat.Encoding[] getTargetEncodings(AudioFormat.Encoding sourceEncoding)
sourceEncoding
- 查询其转换支持的编码
sourceEncoding
,则返回长度为 0 的数组。否则,数组长度将至少为 1,表示
sourceEncoding
(不转换)。
public static AudioFormat.Encoding[] getTargetEncodings(AudioFormat sourceFormat)
sourceFormat
- 查询其转换的音频格式
sourceFormat
,则返回长度为 0 的数组。否则,数组长度将至少为 1,表示
sourceFormat
的编码(不转换)。
public static boolean isConversionSupported(AudioFormat.Encoding targetEncoding, AudioFormat sourceFormat)
targetEncoding
- 转换后所需的编码
sourceFormat
- 转换前的音频格式
true
;否则返回
false
public static AudioInputStream getAudioInputStream(AudioFormat.Encoding targetEncoding, AudioInputStream sourceStream)
targetEncoding
- 转换后所需的编码
sourceStream
- 要转换的流
IllegalArgumentException
- 如果不支持转换
getTargetEncodings(AudioFormat.Encoding)
,
getTargetEncodings(AudioFormat)
,
isConversionSupported(AudioFormat.Encoding, AudioFormat)
,
getAudioInputStream(AudioFormat, AudioInputStream)
public static AudioFormat[] getTargetFormats(AudioFormat.Encoding targetEncoding, AudioFormat sourceFormat)
targetE