public class AudioSystem extends Object
AudioSystem类作为采样音频系统资源的入口点。
此类允许您查询和访问系统上安装的混音器。
AudioSystem包括用于在不同格式之间转换音频数据以及用于在音频文件和流之间进行转换的多种方法。
它还提供了一种从Line直接获取AudioSystem而不用混合器AudioSystem处理的方法。
属性可用于指定特定行类型的默认调音台。 考虑系统属性和属性文件。 该sound.properties性文件从具体实现的位置读取(通常它是lib在Java安装目录的目录)。 如果属性既作为系统属性又在属性文件中存在,则系统属性优先。 如果没有指定,则在可用设备中选择合适的默认值。 属性文件的语法在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类的完全限定名称。
混音器名称与String的getName方法返回的getName相Mixer.Info 。
可以省略类名称或混音器名称。
如果仅指定了类名称,则尾部哈希标记是可选的。
如果指定了提供程序类,并且可以从已安装的提供程序成功检索,则可以从提供程序Mixer.Info对象的列表。 否则,或者当这些混音器不提供后续匹配时,该列表将从getMixerInfo()检索到包含所有可用的Mixer.Info对象。
如果指定了混音器名称,则会搜索所得到的Mixer.Info对象的列表:第一个具有匹配名称的对象,其Mixer提供相应的行界面将被返回。 如果找不到匹配的Mixer.Info对象,或者未指定混合器名称,将返回提供相应行界面的结果列表中的第一个混合器。 例如,财产javax.sound.sampled.Clip一个值"com.sun.media.sound.MixerProvider#SunClip"将产生以下后果时getLine被称为请求Clip实例:如果类com.sun.media.sound.MixerProvider在安装的混频器提供者列表存在,则第Clip从第一混频器与名"SunClip"将被退回。 如果无法找到,第Clip从指定的供应商的第一混频器将被退回,无论名称。 如果没有,第Clip从第一Mixer名称为"SunClip"在所有混合器(如返回列表getMixerInfo )将被退回,或者,如果没有找到,第Clip第一Mixer ,可以在找到返回所有混音器的列表。 如果失败,也会抛出一个IllegalArgumentException 。
AudioFormat , AudioInputStream , Mixer , Line , Line.Info
| Modifier and Type | Field and Description |
|---|---|
static int |
NOT_SPECIFIED
一个代表未知数值的整数。
|
| Modifier and Type | Method and Description |
|---|---|
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)
将指定文件类型的音频文件的字节流写入提供的输出流。
|
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 - 如果info对象不表示系统上安装的混音器
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支持被查询的行的
Line.Info对象
true如果至少一个匹配线被支撑,否则
false
Mixer.isLineSupported(Line.Info)
public static Line getLine(Line.Info info) throws LineUnavailableException
Line.Info对象中的描述匹配的行。
如果DataLine DataLine,并且info是指定至少一个完全限定音频格式的DataLine.Info的实例,则最后一个将被用作返回的DataLine的默认格式。
如果系统属性javax.sound.sampled.Clip , javax.sound.sampled.Port , javax.sound.sampled.SourceDataLine和javax.sound.sampled.TargetDataLine被定义或者在文件“sound.properties”定义的,它们被用来获取默认的行。 详情请参考class description 。 如果没有设置相应的属性,或者没有安装属性中要求的混音器或不提供所请求的线路,则会根据请求的线路类型查询所有安装的混音器。 一条线将从提供所请求线路类型的第一台混音器返回。
info -
Line.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”中定义了它,则用于检索默认剪辑。 详情请参考class description 。
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 format 。
如果系统属性javax.sound.sampled.SourceDataLine已被定义,或者在文件“sound.properties”中定义,则用于检索默认的源数据行。 详情请参阅class description 。
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 。
如果定义了系统属性javax.sound.sampled.TargetDataLine ,或者在文件“sound.properties”中定义了它,则用于检索默认目标数据行。 详情请参考class description 。
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 。
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)
targetEncoding - 转换后的所需编码
sourceFormat - 转换前的音频格式
public static boolean isConversionSupported(AudioFormat targetFormat, AudioFormat sourceFormat)
targetFormat - 转换后所需的音频格式
sourceFormat - 转换前的音频格式
true如果转换支持,否则
false
public static AudioInputStream getAudioInputStream(AudioFormat targetFormat, AudioInputStream sourceStream)
targetFormat - 转换后所需的音频格式
sourceStream - 要转换的流
IllegalArgumentException - 如果不支持转换#see #getTargetEncodings(AudioFormat)
getTargetFormats(AudioFormat.Encoding, AudioFormat) ,
isConversionSupported(AudioFormat, AudioFormat) ,
getAudioInputStream(AudioFormat.Encoding, AudioInputStream)
public static AudioFileFormat getAudioFileFormat(InputStream stream) throws UnsupportedAudioFileException, IOException
IOException 。
stream - 应提取文件格式信息的输入流
AudioFileFormat流的音频文件格式的
AudioFileFormat对象
UnsupportedAudioFileException - 如果流不指向系统识别的有效音频文件数据
IOException - 如果输入/输出异常发生
InputStream.markSupported() ,
InputStream.mark(int)
public static AudioFileFormat getAudioFileFormat(URL url) throws UnsupportedAudioFileException, IOException
url - 应提取文件格式信息的URL
AudioFileFormat音频文件格式的
AudioFileFormat对象
UnsupportedAudioFileException - 如果URL不指向系统识别的有效音频文件数据
IOException - 如果输入/输出异常发生
public static AudioFileFormat getAudioFileFormat(File file) throws UnsupportedAudioFileException, IOException
File 。
File必须指向有效的音频文件数据。
file -
File提取文件格式信息的File
AudioFileFormat音频文件格式的
AudioFileFormat对象
UnsupportedAudioFileException - 如果
File未指向系统识别的有效音频文件数据
IOException - 如果发生I / O异常
public static AudioInputStream getAudioInputStream(InputStream stream) throws UnsupportedAudioFileException, IOException
IOException 。
stream -从该输入流
AudioInputStream应当被构造
AudioInputStream对象。
UnsupportedAudioFileException - 如果流不指向系统识别的有效音频文件数据
IOException - 如果发生I / O异常
InputStream.markSupported() ,
InputStream.mark(int)
public static AudioInputStream getAudioInputStream(URL url) throws UnsupportedAudioFileException, IOException
url -对于其中的URL
AudioInputStream应当建立
AudioInputStream对象
UnsupportedAudioFileException - 如果URL不指向系统识别的有效音频文件数据
IOException - 如果发生I / O异常
public static AudioInputStream getAudioInputStream(File file) throws UnsupportedAudioFileException, IOException
File获取音频输入流。
File必须指向有效的音频文件数据。
file -所述
File的量,
AudioInputStream应当被构造
AudioInputStream基于音频文件数据对象指向的
File
UnsupportedAudioFileException - 如果
File未指向系统识别的有效音频文件数据
IOException - 如果发生I / O异常
public static AudioFileFormat.Type[] getAudioFileTypes()
public static boolean isFileTypeSupported(AudioFileFormat.Type fileType)
fileType - 查询写入功能的文件类型
true如果文件类型是支持,否则
false
public static AudioFileFormat.Type[] getAudioFileTypes(AudioInputStream stream)
stream - 查询音频文件类型支持的音频输入流
public static boolean isFileTypeSupported(AudioFileFormat.Type fileType, AudioInputStream stream)
fileType - 查询写入功能的文件类型
stream - 查询文件支持的流
true如果此音频输入流支持该文件类型,否则为
false
public static int write(AudioInputStream stream, AudioFileFormat.Type fileType, OutputStream out) throws IOException
AudioSystem.NOT_SPECIFIED 。
stream - 包含要写入文件的音频数据的音频输入流
fileType - 要写的音频文件的种类
out - 应写入文件数据的流
IOException - 如果输入/输出异常发生
IllegalArgumentException - 如果系统不支持文件类型
isFileTypeSupported(javax.sound.sampled.AudioFileFormat.Type) ,
getAudioFileTypes()
public static int write(AudioInputStream stream, AudioFileFormat.Type fileType, File out) throws IOException
stream - 包含要写入文件的音频数据的音频输入流
fileType - 要写的音频文件的种类
out - 应写入文件数据的外部文件
IOException - 如果发生I / O异常
IllegalArgumentException - 如果系统不支持文件类型
isFileTypeSupported(javax.sound.sampled.AudioFileFormat.Type) ,
getAudioFileTypes()
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.