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()