模块  java.desktop
软件包  javax.sound.sampled

Class AudioSystem


  • public class AudioSystem
    extends Object
    AudioSystem类充当采样音频系统资源的入口点。 此类允许您查询和访问系统上安装的混音器。 AudioSystem包括许多用于在不同格式之间转换音频数据以及用于在音频文件和流之间进行转换的方法。 它还提供了一种获取方法Line直接从AudioSystem而不搅拌机明确处理。

    属性可用于指定特定线型的默认混合器。 系统属性和属性文件都被考虑在内。 “sound.properties”属性文件是从特定于实现的位置读取的(通常是Java安装目录中的conf目录)。 可选的“javax.sound.config.file”系统属性可用于指定将作为初始配置读取的属性文件。 如果属性同时存在于系统属性和属性文件中,则系统属性优先。 如果未指定,则在可用设备中选择合适的默认值。 属性文件的语法在Properties.load指定。 下表列出了可用的属性键以及考虑它们的方法:

    Audio System Property Keys Property Key Interface Affected Method(s) 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从提供程序中检索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

    从以下版本开始:
    1.3
    另请参见:
    AudioFormatAudioInputStreamMixerLineLine.Info
    • 字段详细信息

      • 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 - 如果info对象不代表系统上安装的混音器
        另请参见:
        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请求,并info是实例DataLine.Info至少指定一个完全合格的音频格式,最后一个将被用作返回的默认格式DataLine

        如果系统属性javax.sound.sampled.Clipjavax.sound.sampled.Portjavax.sound.sampled.SourceDataLinejavax.sound.sampled.TargetDataLine定义或者在文件“sound.properties”定义的,它们被用来获取默认的行。 有关详细信息,请参阅class description 如果未设置相应的属性,或者未安装属性中请求的混合器或未提供请求的行,则会查询所有已安装的混合器以获取所请求的行类型。 将从提供所请求的线型的第一个混合器返回一条线。

        参数
        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”中定义了它,则它用于检索默认剪辑。 有关详细信息,请参阅class description

        结果
        所需的剪辑对象
        异常
        LineUnavailableException - 如果剪辑对象由于资源限制而不可用
        SecurityException - 如果由于安全限制而无法使用剪辑对象
        IllegalArgumentException - 如果系统通过任何已安装的混音器不支持至少一个剪辑实例
        从以下版本开始:
        1.5
        另请参见:
        getClip(Mixer.Info)
      • getClip

        public static Clip getClip​(Mixer.Info mixerInfo)
                            throws LineUnavailableException
        从指定的混音器获取可用于播放音频文件或音频流的剪辑。

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

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

        参数
        mixerInfo - 表示所需混频器的 Mixer.Info对象,或系统默认混频器的 null
        结果
        来自指定混音器的剪辑对象
        异常
        LineUnavailableException - 如果由于资源限制而无法从此混音器获得剪辑
        SecurityException - 如果由于安全限制,此混音器无法提供剪辑
        IllegalArgumentException - 如果系统不支持通过指定混音器的至少一个剪辑
        从以下版本开始:
        1.5
        另请参见:
        getClip()
      • getSourceDataLine

        public static SourceDataLine getSourceDataLine​(AudioFormat format)
                                                throws LineUnavailableException
        获得可用于以AudioFormat对象指定的格式播放音频数据的源数据行。 返回的行将由默认系统混合器提供,或者,如果不可能,由系统中安装的任何其他混合器提供,该混合器支持匹配的SourceDataLine对象。

        应使用open(AudioFormat)open(AudioFormat, int)方法打开返回的行。

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

        返回的SourceDataLine的默认音频格式将使用format进行初始化。

        如果定义了系统属性javax.sound.sampled.SourceDataLine ,或者在文件“sound.properties”中定义了该属性,则它用于检索默认源数据行。 有关详细信息,请参阅class description

        参数
        format - 指定返回行支持的音频格式的 AudioFormat对象,或任何音频格式的 null
        结果
        所需的 SourceDataLine对象
        异常
        LineUnavailableException - 如果由于资源限制,匹配的源数据行不可用
        SecurityException - 如果由于安全限制,匹配的源数据行不可用
        IllegalArgumentException - 如果系统不支持通过任何已安装的混音器支持指定音频格式的至少一个源数据行
        从以下版本开始:
        1.5
        另请参见:
        getSourceDataLine(AudioFormat, Mixer.Info)
      • getSourceDataLine

        public static SourceDataLine getSourceDataLine​(AudioFormat format,
                                                       Mixer.Info mixerinfo)
                                                throws LineUnavailableException
        获得可用于在由指定的格式回放音频数据的源数据线AudioFormat对象,通过由指定的混频器提供Mixer.Info对象。

        应使用open(AudioFormat)open(AudioFormat, int)方法打开返回的行。

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

        返回的SourceDataLine的默认音频格式将使用format进行初始化。

        参数
        format - 指定返回行支持的音频格式的 AudioFormat对象,或任何音频格式的 null
        mixerinfo - 表示所需混频器的 Mixer.Info对象,或系统默认混频器的 null
        结果
        所需的 SourceDataLine对象
        异常
        LineUnavailableException - 如果由于资源限制,指定的混频器中没有匹配的源数据行
        SecurityException - 如果由于安全限制,指定的混频器中没有匹配的源数据线
        IllegalArgumentException - 如果指定的混音器不支持至少一个支持指定音频格式的源数据行
        从以下版本开始:
        1.5
        另请参见:
        getSourceDataLine(AudioFormat)
      • getTargetDataLine

        public static TargetDataLine getTargetDataLine​(AudioFormat format)
                                                throws LineUnavailableException
        获得可用于以AudioFormat对象指定的格式记录音频数据的目标数据行。 返回的行将由默认系统混音器提供,或者,如果不可能,由系统中安装的任何其他混音器提供,该混音器支持匹配的TargetDataLine对象。

        应使用open(AudioFormat)open(AudioFormat, int)方法打开返回的行。

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

        返回的TargetDataLine的默认音频格式将使用format进行初始化。

        如果定义了系统属性javax.sound.sampled.TargetDataLine ,或者在文件“sound.properties”中定义了该属性,则它用于检索默认目标数据行。 有关详细信息,请参阅class description

        参数
        format - 指定返回行支持的音频格式的 AudioFormat对象,或任何音频格式的 null
        结果
        所需的 TargetDataLine对象
        异常
        LineUnavailableException - 如果由于资源限制,匹配的目标数据行不可用
        SecurityException - 如果由于安全限制,匹配的目标数据行不可用
        IllegalArgumentException - 如果系统不支持通过任何已安装的混音器支持指定音频格式的至少一个目标数据线
        从以下版本开始:
        1.5
        另请参见:
        getTargetDataLine(AudioFormat, Mixer.Info)AudioPermission
      • getTargetDataLine

        public static TargetDataLine getTargetDataLine​(AudioFormat format,
                                                       Mixer.Info mixerinfo)
                                                throws LineUnavailableException
        获得可用于在由指定的格式记录音频数据的目标数据线AudioFormat对象,通过由指定的混频器提供Mixer.Info对象。

        应使用open(AudioFormat)open(AudioFormat, int)方法打开返回的行。

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

        返回的TargetDataLine的默认音频格式将使用format进行初始化。

        参数
        format - 一个 AudioFormat对象,指定返回行的支持音频格式,或 null用于任何音频格式
        mixerinfo - 表示所需混频器的 Mixer.Info对象,或系统默认混频器的 null
        结果
        所需的 TargetDataLine对象
        异常
        LineUnavailableException - 如果由于资源限制,指定的混频器中没有匹配的目标数据线
        SecurityException - 如果由于安全限制,指定的混频器中没有匹配的目标数据线
        IllegalArgumentException - 如果指定的混音器不支持至少一个支持指定音频格式的目标数据行
        从以下版本开始:
        1.5
        另请参见:
        getTargetDataLine(AudioFormat)AudioPermission
      • getTargetEncodings

        public static AudioFormat.Encoding[] getTargetEncodings​(AudioFormat.Encoding sourceEncoding)
        获得系统可以使用已安装的格式转换器从具有指定编码的音频输入流获得的编码。
        参数
        sourceEncoding - 查询转换支持的编码
        结果
        编码数组。 如果不支持sourceEncoding ,则返回长度为0的数组。 否则,数组的长度至少为1,表示sourceEncoding (无转换)。
        异常
        NullPointerException - 如果 sourceEncodingnull
      • getTargetEncodings

        public static AudioFormat.Encoding[] getTargetEncodings​(AudioFormat sourceFormat)
        获得系统可以使用已安装的格式转换器从具有指定格式的音频输入流获取的编码。
        参数
        sourceFormat - 查询转换的音频格式
        结果
        编码数组。 如果不支持sourceFormat ,则返回长度为0的数组。 否则,数组的长度至少为1,表示编码为sourceFormat (无转换)。
        异常
        NullPointerException - 如果 sourceFormatnull
      • isConversionSupported

        public static boolean isConversionSupported​(AudioFormat.Encoding targetEncoding,
                                                    AudioFormat sourceFormat)
        指示是否可以从具有指定格式的音频输入流中获取指定编码的音频输入流。
        参数
        targetEncoding - 转换后所需的编码
        sourceFormat - 转换前的音频格式
        结果
        true如果支持转换,否则为 false
        异常
        NullPointerException - 如果 targetEncodingsourceFormatnull
      • getTargetFormats

        public static AudioFormat[] getTargetFormats​(AudioFormat.Encoding targetEncoding,
                                                     AudioFormat sourceFormat)
        获得具有特定编码的格式,系统可以使用已安装的格式转换器从指定格式的流中获取这些格式。
        参数
        targetEncoding - 转换后所需的编码
        sourceFormat - 转换前的音频格式
        结果
        格式数组。 如果不支持指定编码的格式,则返回长度为0的数组。
        异常
        NullPointerException - 如果 targetEncodingsourceFormatnull
      • isConversionSupported

        public static boolean isConversionSupported​(AudioFormat targetFormat,
                                                    AudioFormat sourceFormat)
        指示是否可以从另一个指定格式的音频输入流中获取指定格式的音频输入流。
        参数
        targetFormat - 转换后所需的音频格式
        sourceFormat - 转换前的音频格式
        结果
        true如果支持转换,否则为 false
        异常
        NullPointerException - 如果 targetFormatsourceFormatnull
      • getAudioFileFormat

        public static AudioFileFormat getAudioFileFormat​(InputStream stream)
                                                  throws UnsupportedAudioFileException,
                                                         IOException
        获得提供的输入流的音频文件格式。 流必须指向有效的音频文件数据。 此方法的实现可能需要多个解析器检查流以确定它们是否支持它。 这些解析器必须能够标记流,读取足够的数据以确定它们是否支持流,并将流的读指针重置为其原始位置。 如果输入流不支持这些操作,则此方法可能会失败,并显示IOException
        参数
        stream - 应从中提取文件格式信息的输入流
        结果
        描述流的音频文件格式的 AudioFileFormat对象
        异常
        UnsupportedAudioFileException - 如果流未指向系统识别的有效音频文件数据
        IOException - 如果发生输入/输出异常
        NullPointerException - 如果 streamnull
        另请参见:
        InputStream.markSupported()InputStream.mark(int)
      • getAudioInputStream

        public static AudioInputStream getAudioInputStream​(InputStream stream)
                                                    throws UnsupportedAudioFileException,
                                                           IOException
        从提供的输入流中获取音频输入流。 流必须指向有效的音频文件数据。 此方法的实现可能需要多个解析器检查流以确定它们是否支持它。 这些解析器必须能够标记流,读取足够的数据以确定它们是否支持流,并将流的读指针重置为其原始位置。 如果输入流不支持这些操作,则此方法可能会失败,并显示IOException
        参数
        stream -从该输入流 AudioInputStream应当被构造
        结果
        基于输入流中包含的音频文件数据的 AudioInputStream对象
        异常
        UnsupportedAudioFileException - 如果流未指向系统识别的有效音频文件数据
        IOException - 如果发生I / O异常
        NullPointerException - 如果 streamnull
        另请参见:
        InputStream.markSupported()InputStream.mark(int)
      • getAudioFileTypes

        public static AudioFileFormat.Type[] getAudioFileTypes()
        获取系统提供文件写入支持的文件类型。
        结果
        唯一文件类型的数组。 如果不支持任何文件类型,则返回长度为0的数组。
      • isFileTypeSupported

        public static boolean isFileTypeSupported​(AudioFileFormat.Type fileType)
        指示系统是否提供对指定文件类型的文件写入支持。
        参数
        fileType - 要查询其写入功能的文件类型
        结果
        true如果支持文件类型,否则为 false
        异常
        NullPointerException - 如果 fileTypenull
      • getAudioFileTypes

        public static AudioFileFormat.Type[] getAudioFileTypes​(AudioInputStream stream)
        获取系统可以从指定的音频输入流写入的文件类型。
        参数
        stream - 查询音频文件类型支持的音频输入流
        结果
        文件类型数组。 如果不支持任何文件类型,则返回长度为0的数组。
        异常
        NullPointerException - 如果 streamnull
      • isFileTypeSupported

        public static boolean isFileTypeSupported​(AudioFileFormat.Type fileType,
                                                  AudioInputStream stream)
        指示是否可以从指示的音频输入流写入指定文件类型的音频文件。
        参数
        fileType - 要查询其写入功能的文件类型
        stream - 查询文件写入支持的流
        结果
        true如果此音频输入流支持该文件类型,否则为 false
        异常
        NullPointerException - 如果 fileTypestreamnull