public class AudioSystem extends Object
AudioSystem class acts as the entry point to the sampled-audio system resources. This class lets you query and access the mixers that are installed on the system.
AudioSystem includes a number of methods for converting audio data between different formats, and for translating between audio files and streams. It also provides a method for obtaining a
Line directly from the
AudioSystem without dealing explicitly with mixers.
Properties can be used to specify the default mixer for specific line types. Both system properties and a properties file are considered. The sound.properties properties file is read from an implementation-specific location (typically it is the lib directory in the Java installation directory). If a property exists both as a system property and in the properties file, the system property takes precedence. If none is specified, a suitable default is chosen among the available devices. The syntax of the properties file is specified in Properties.load. The following table lists the available property keys and which methods consider them:
| 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 class. The mixer name is matched against the
String returned by the
getName method of
Mixer.Info. Either the class name, or the mixer name may be omitted. If only the class name is specified, the trailing hash mark is optional.
If the provider class is specified, and it can be successfully retrieved from the installed providers, the list of Mixer.Info objects is retrieved from the provider. Otherwise, or when these mixers do not provide a subsequent match, the list is retrieved from getMixerInfo() to contain all available Mixer.Info objects.
If a mixer name is specified, the resulting list of Mixer.Info objects is searched: the first one with a matching name, and whose Mixer provides the respective line interface, will be returned. If no matching Mixer.Info object is found, or the mixer name is not specified, the first mixer from the resulting list, which provides the respective line interface, will be returned. For example, the property javax.sound.sampled.Clip with a value "com.sun.media.sound.MixerProvider#SunClip" will have the following consequences when getLine is called requesting a Clip instance: if the class com.sun.media.sound.MixerProvider exists in the list of installed mixer providers, the first Clip from the first mixer with name "SunClip" will be returned. If it cannot be found, the first Clip from the first mixer of the specified provider will be returned, regardless of name. If there is none, the first Clip from the first Mixer with name "SunClip" in the list of all mixers (as returned by getMixerInfo) will be returned, or, if not found, the first Clip of the first Mixerthat can be found in the list of all mixers is returned. If that fails, too, an IllegalArgumentException is thrown.
AudioFormat,
AudioInputStream,
Mixer,
Line,
Line.Info
| Modifier and Type | Field and Description |
|---|---|
static int |
NOT_SPECIFIED
An integer that stands for an unknown numeric value.
|
| Modifier and Type | Method and Description |
|---|---|
static AudioFileFormat |
getAudioFileFormat(File
Obtains the audio file format of the specified
File.
|
static AudioFileFormat |
getAudioFileFormat(InputStream
Obtains the audio file format of the provided input stream.
|
static AudioFileFormat |
getAudioFileFormat(URL
Obtains the audio file format of the specified URL.
|
static AudioFileFormat |
getAudioFileTypes()
Obtains the file types for which file writing support is provided by the system.
|
static AudioFileFormat |
getAudioFileTypes(AudioInputStream
Obtains the file types that the system can write from the audio input stream specified.
|
static AudioInputStream |
getAudioInputStream(AudioFormat
Obtains an audio input stream of the indicated encoding, by converting the provided audio input stream.
|
static AudioInputStream |
getAudioInputStream(AudioFormat
Obtains an audio input stream of the indicated format, by converting the provided audio input stream.
|
static AudioInputStream |
getAudioInputStream(File
Obtains an audio input stream from the provided
File.
|
static AudioInputStream |
getAudioInputStream(InputStream
Obtains an audio input stream from the provided input stream.
|
static AudioInputStream |
getAudioInputStream(URL
Obtains an audio input stream from the URL provided.
|
static Clip |
getClip()
Obtains a clip that can be used for playing back an audio file or an audio stream.
|
static Clip |
getClip(Mixer
Obtains a clip from the specified mixer that can be used for playing back an audio file or an audio stream.
|
static Line |
getLine(Line
Obtains a line that matches the description in the specified
Line.Info object.
|
static Mixer |
getMixer(Mixer
Obtains the requested audio mixer.
|
static Mixer |
getMixerInfo()
Obtains an array of mixer info objects that represents the set of audio mixers that are currently installed on the system.
|
static SourceDataLine |
getSourceDataLine(AudioFormat
Obtains a source data line that can be used for playing back audio data in the format specified by the
AudioFormat object.
|
static SourceDataLine |
getSourceDataLine(AudioFormat
Obtains a source data line that can be used for playing back audio data in the format specified by the
AudioFormat object, provided by the mixer specified by the
Mixer.Info object.
|
static Line |
getSourceLineInfo(Line
Obtains information about all source lines of a particular type that are supported by the installed mixers.
|
static TargetDataLine |
getTargetDataLine(AudioFormat
Obtains a target data line that can be used for recording audio data in the format specified by the
AudioFormat object.
|
static TargetDataLine |
getTargetDataLine(AudioFormat
Obtains a target data line that can be used for recording audio data in the format specified by the
AudioFormat object, provided by the mixer specified by the
Mixer.Info object.
|
static AudioFormat |
getTargetEncodings(AudioFormat
Obtains the encodings that the system can obtain from an audio input stream with the specified encoding using the set of installed format converters.
|
static AudioFormat |
getTargetEncodings(AudioFormat
Obtains the encodings that the system can obtain from an audio input stream with the specified format using the set of installed format converters.
|
static AudioFormat |
getTargetFormats(AudioFormat
Obtains the formats that have a particular encoding and that the system can obtain from a stream of the specified format using the set of installed format converters.
|
static Line |
getTargetLineInfo(Line
Obtains information about all target lines of a particular type that are supported by the installed mixers.
|
static boolean |
isConversionSupported(AudioFormat
Indicates whether an audio input stream of the specified encoding can be obtained from an audio input stream that has the specified format.
|
static boolean |
isConversionSupported(AudioFormat
Indicates whether an audio input stream of a specified format can be obtained from an audio input stream of another specified format.
|
static boolean |
isFileTypeSupported(AudioFileFormat
Indicates whether file writing support for the specified file type is provided by the system.
|
static boolean |
isFileTypeSupported(AudioFileFormat
Indicates whether an audio file of the specified file type can be written from the indicated audio input stream.
|
static boolean |
isLineSupported(Line
Indicates whether the system supports any lines that match the specified
Line.Info object.
|
static int |
write(AudioInputStream
Writes a stream of bytes representing an audio file of the specified file type to the external file provided.
|
static int |
write(AudioInputStream
Writes a stream of bytes representing an audio file of the specified file type to the output stream provided.
|
public static final int NOT_SPECIFIED
NOT_SPECIFIED for such parameters. Other methods may also accept or return this value, as documented.
public static Mixer.Info [] getMixerInfo()
getMixer(javax.sound.sampled.Mixer.Info)
public static MixergetMixer(Mixer .Info info)
info - a
Mixer.Info object representing the desired mixer, or
null for the system default mixer
SecurityException - if the requested mixer is unavailable because of security restrictions
IllegalArgumentException - if the info object does not represent a mixer installed on the system
getMixerInfo()
public static Line.Info [] getSourceLineInfo(Line .Info info)
info - a
Line.Info object that specifies the kind of lines about which information is requested
Line.Info objects describing source lines matching the type requested. If no matching source lines are supported, an array of length 0 is returned.
Mixer.getSourceLineInfo(Line.Info)
public static Line.Info [] getTargetLineInfo(Line .Info info)
info - a
Line.Info object that specifies the kind of lines about which information is requested
Line.Info objects describing target lines matching the type requested. If no matching target lines are supported, an array of length 0 is returned.
Mixer.getTargetLineInfo(Line.Info)
public static boolean isLineSupported(Line.Info info)
Line.Info object. A line is supported if any installed mixer supports it.
info - a
Line.Info object describing the line for which support is queried
true if at least one matching line is supported, otherwise
false
Mixer.isLineSupported(Line.Info)
public static LinegetLine(Line .Info info) throws LineUnavailableException
Line.Info object.
If a DataLine is requested, and info is an instance of DataLine.Info specifying at least one fully qualified audio format, the last one will be used as the default format of the returned DataLine.
If system properties javax.sound.sampled.Clip, javax.sound.sampled.Port, javax.sound.sampled.SourceDataLine and javax.sound.sampled.TargetDataLine are defined or they are defined in the file "sound.properties", they are used to retrieve default lines. For details, refer to the class description. If the respective property is not set, or the mixer requested in the property is not installed or does not provide the requested line, all installed mixers are queried for the requested line type. A Line will be returned from the first mixer providing the requested line type.
info - a
Line.Info object describing the desired kind of line
LineUnavailableException - if a matching line is not available due to resource restrictions
SecurityException - if a matching line is not available due to security restrictions
IllegalArgumentException - if the system does not support at least one line matching the specified
Line.Info object through any installed mixer
public static ClipgetClip() throws LineUnavailableException
Clip object.
The returned clip must be opened with the open(AudioFormat) or open(AudioInputStream) method.
This is a high-level method that uses getMixer and getLine internally.
If the system property javax.sound.sampled.Clip is defined or it is defined in the file "sound.properties", it is used to retrieve the default clip. For details, refer to the class description.
LineUnavailableException - if a clip object is not available due to resource restrictions
SecurityException - if a clip object is not available due to security restrictions
IllegalArgumentException - if the system does not support at least one clip instance through any installed mixer
getClip(Mixer.Info)
public static ClipgetClip(Mixer .Info mixerInfo) throws LineUnavailableException
The returned clip must be opened with the open(AudioFormat) or open(AudioInputStream) method.
This is a high-level method that uses getMixer and getLine internally.
mixerInfo - a
Mixer.Info object representing the desired mixer, or
null for the system default mixer
LineUnavailableException - if a clip is not available from this mixer due to resource restrictions
SecurityException - if a clip is not available from this mixer due to security restrictions
IllegalArgumentException - if the system does not support at least one clip through the specified mixer
getClip()
public static SourceDataLinegetSourceDataLine(AudioFormat format) throws LineUnavailableException
AudioFormat object. The returned line will be provided by the default system mixer, or, if not possible, by any other mixer installed in the system that supports a matching
SourceDataLine object.
The returned line should be opened with the open(AudioFormat) or open(AudioFormat, int) method.
This is a high-level method that uses getMixer and getLine internally.
The returned SourceDataLine's default audio format will be initialized with format.
If the system property javax.sound.sampled.SourceDataLine is defined or it is defined in the file "sound.properties", it is used to retrieve the default source data line. For details, refer to the class description.
format - an
AudioFormat object specifying the supported audio format of the returned line, or
null for any audio format
SourceDataLine object
LineUnavailableException - if a matching source data line is not available due to resource restrictions
SecurityException - if a matching source data line is not available due to security restrictions
IllegalArgumentException - if the system does not support at least one source data line supporting the specified audio format through any installed mixer
getSourceDataLine(AudioFormat, Mixer.Info)
public static SourceDataLinegetSourceDataLine(AudioFormat format, Mixer .Info mixerinfo) throws LineUnavailableException
AudioFormat object, provided by the mixer specified by the
Mixer.Info object.
The returned line should be opened with the open(AudioFormat) or open(AudioFormat, int) method.
This is a high-level method that uses getMixer and getLine internally.
The returned SourceDataLine's default audio format will be initialized with format.
format - an
AudioFormat object specifying the supported audio format of the returned line, or
null for any audio format
mixerinfo - a
Mixer.Info object representing the desired mixer, or
null for the system default mixer
SourceDataLine object
LineUnavailableException - if a matching source data line is not available from the specified mixer due to resource restrictions
SecurityException - if a matching source data line is not available from the specified mixer due to security restrictions
IllegalArgumentException - if the specified mixer does not support at least one source data line supporting the specified audio format
getSourceDataLine(AudioFormat)
public static TargetDataLinegetTargetDataLine(AudioFormat format) throws LineUnavailableException
AudioFormat object. The returned line will be provided by the default system mixer, or, if not possible, by any other mixer installed in the system that supports a matching
TargetDataLine object.
The returned line should be opened with the open(AudioFormat) or open(AudioFormat, int) method.
This is a high-level method that uses getMixer and getLine internally.
The returned TargetDataLine's default audio format will be initialized with format.
If the system property javax.sound.sampled.TargetDataLine is defined or it is defined in the file "sound.properties", it is used to retrieve the default target data line. For details, refer to the class description.
format - an
AudioFormat object specifying the supported audio format of the returned line, or
null for any audio format
TargetDataLine object
LineUnavailableException - if a matching target data line is not available due to resource restrictions
SecurityException - if a matching target data line is not available due to security restrictions
IllegalArgumentException - if the system does not support at least one target data line supporting the specified audio format through any installed mixer
getTargetDataLine(AudioFormat, Mixer.Info),
AudioPermission
public static TargetDataLinegetTargetDataLine(AudioFormat format, Mixer .Info mixerinfo) throws LineUnavailableException
AudioFormat object, provided by the mixer specified by the
Mixer.Info object.
The returned line should be opened with the open(AudioFormat) or open(AudioFormat, int) method.
This is a high-level method that uses getMixer and getLine internally.
The returned TargetDataLine's default audio format will be initialized with format.
format - an
AudioFormat object specifying the supported audio format of the returned line, or
null for any audio format
mixerinfo - a
Mixer.Info object representing the desired mixer, or
null for the system default mixer
TargetDataLine object
LineUnavailableException - if a matching target data line is not available from the specified mixer due to resource restrictions
SecurityException - if a matching target data line is not available from the specified mixer due to security restrictions
IllegalArgumentException - if the specified mixer does not support at least one target data line supporting the specified audio format
getTargetDataLine(AudioFormat),
AudioPermission
public static AudioFormat.Encoding [] getTargetEncodings(AudioFormat .Encoding sourceEncoding)
sourceEncoding - the encoding for which conversion support is queried
sourceEncodingis not supported, an array of length 0 is returned. Otherwise, the array will have a length of at least 1, representing
sourceEncoding (no conversion).
public static AudioFormat.Encoding [] getTargetEncodings(AudioFormat sourceFormat)
sourceFormat - the audio format for which conversion is queried
sourceFormatis not supported, an array of length 0 is returned. Otherwise, the array will have a length of at least 1, representing the encoding of
sourceFormat (no conversion).
public static boolean isConversionSupported(AudioFormat.Encoding targetEncoding, AudioFormat sourceFormat)
targetEncoding - the desired encoding after conversion
sourceFormat - the audio format before conversion
true if the conversion is supported, otherwise
false
public static AudioInputStreamgetAudioInputStream(AudioFormat .Encoding targetEncoding, AudioInputStream sourceStream)
targetEncoding - the desired encoding after conversion
sourceStream - the stream to be converted
IllegalArgumentException - if the conversion is not supported
getTargetEncodings(AudioFormat.Encoding),
getTargetEncodings(AudioFormat),
isConversionSupported(AudioFormat.Encoding, AudioFormat),
getAudioInputStream(AudioFormat, AudioInputStream)
public static AudioFormat[] getTargetFormats(AudioFormat .Encoding targetEncoding, AudioFormat sourceFormat)
targetEncoding - the desired encoding after conversion
sourceFormat - the audio format before conversion
public static boolean isConversionSupported(AudioFormattargetFormat, AudioFormat sourceFormat)
targetFormat - the desired audio format after conversion
sourceFormat - the audio format before conversion
true if the conversion is supported, otherwise
false
public static AudioInputStreamgetAudioInputStream(AudioFormat targetFormat, AudioInputStream sourceStream)
targetFormat - the desired audio format after conversion
sourceStream - the stream to be converted
IllegalArgumentException - if the conversion is not supported #see #getTargetEncodings(AudioFormat)
getTargetFormats(AudioFormat.Encoding, AudioFormat),
isConversionSupported(AudioFormat, AudioFormat),
getAudioInputStream(AudioFormat.Encoding, AudioInputStream)
public static AudioFileFormatgetAudioFileFormat(InputStream stream) throws UnsupportedAudioFileException , IOException
IOException.
stream - the input stream from which file format information should be extracted
AudioFileFormat object describing the stream's audio file format
UnsupportedAudioFileException - if the stream does not point to valid audio file data recognized by the system
IOException - if an input/output exception occurs
InputStream.markSupported() ,
InputStream.mark(int)
public static AudioFileFormatgetAudioFileFormat(URL url) throws UnsupportedAudioFileException , IOException
url - the URL from which file format information should be extracted
AudioFileFormat object describing the audio file format
UnsupportedAudioFileException - if the URL does not point to valid audio file data recognized by the system
IOException - if an input/output exception occurs
public static AudioFileFormatgetAudioFileFormat(File file) throws UnsupportedAudioFileException , IOException
File. The
File must point to valid audio file data.
file - the
File from which file format information should be extracted
AudioFileFormat object describing the audio file format
UnsupportedAudioFileException - if the
File does not point to valid audio file data recognized by the system
IOException - if an I/O exception occurs
public static AudioInputStreamgetAudioInputStream(InputStream stream) throws UnsupportedAudioFileException , IOException
IOException.
stream - the input stream from which the
AudioInputStream should be constructed
AudioInputStream object based on the audio file data contained in the input stream.
UnsupportedAudioFileException - if the stream does not point to valid audio file data recognized by the system
IOException - if an I/O exception occurs
InputStream.markSupported() ,
InputStream.mark(int)
public static AudioInputStreamgetAudioInputStream(URL url) throws UnsupportedAudioFileException , IOException
url - the URL for which the
AudioInputStream should be constructed
AudioInputStream object based on the audio file data pointed to by the URL
UnsupportedAudioFileException - if the URL does not point to valid audio file data recognized by the system
IOException - if an I/O exception occurs
public static AudioInputStreamgetAudioInputStream(File file) throws UnsupportedAudioFileException , IOException
File. The
File must point to valid audio file data.
file - the
File for which the
AudioInputStream should be constructed
AudioInputStream object based on the audio file data pointed to by the
File
UnsupportedAudioFileException - if the
File does not point to valid audio file data recognized by the system
IOException - if an I/O exception occurs
public static AudioFileFormat.Type [] getAudioFileTypes()
public static boolean isFileTypeSupported(AudioFileFormat.Type fileType)
fileType - the file type for which write capabilities are queried
true if the file type is supported, otherwise
false
public static AudioFileFormat.Type [] getAudioFileTypes(AudioInputStream stream)
stream - the audio input stream for which audio file type support is queried
public static boolean isFileTypeSupported(AudioFileFormat.Type fileType, AudioInputStream stream)
fileType - the file type for which write capabilities are queried
stream - the stream for which file-writing support is queried
true if the file type is supported for this audio input stream, otherwise
false
public static int write(AudioInputStreamstream, AudioFileFormat .Type fileType, OutputStream out) throws IOException
AudioSystem.NOT_SPECIFIED.
stream - the audio input stream containing audio data to be written to the file
fileType - the kind of audio file to write
out - the stream to which the file data should be written
IOException - if an input/output exception occurs
IllegalArgumentException - if the file type is not supported by the system
isFileTypeSupported(javax.sound.sampled.AudioFileFormat.Type),
getAudioFileTypes()
public static int write(AudioInputStreamstream, AudioFileFormat .Type fileType, File out) throws IOException
stream - the audio input stream containing audio data to be written to the file
fileType - the kind of audio file to write
out - the external file to which the file data should be written
IOException - if an I/O exception occurs
IllegalArgumentException - if the file type is not supported by the system
isFileTypeSupported(javax.sound.sampled.AudioFileFormat.Type),
getAudioFileTypes()