public class javax.sound.sampled
AudioSystem


Show All Login
Java SE 6
  
Details
The 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. In the Sun reference implementation, the properties file is "lib/sound.properties" in the JRE 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, #getClip
javax.sound.sampled.Port Port #getLine
javax.sound.sampled.SourceDataLine SourceDataLine #getLine, #getSourceDataLine
javax.sound.sampled.TargetDataLine TargetDataLine #getLine, #getTargetDataLine
The property value consists of the provider class name and the mixer name, separated by the hash mark ("#"). The provider class name is the fully-qualified name of a concrete 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 successully 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.
version1.83, 06/04/07
since1.3
See also javax.sound.sampled.AudioFormat, javax.sound.sampled.AudioInputStream, javax.sound.sampled.Mixer, javax.sound.sampled.Line, javax.sound.sampled.Line.Info


Fields
final public static int NOT_SPECIFIED
An integer that stands for an unknown numeric value. This value is appropriate only for signed quantities that do not normally take negative values. Examples include file sizes, frame sizes, buffer sizes, and sample rates. A number of Java Sound constructors accept a value of NOT_SPECIFIED for such parameters. Other methods may also accept or return this value, as documented.

Methods
public static int write(AudioInputStream stream, AudioFileFormat.Type fileType, OutputStream out) throws IOException Details
Writes a stream of bytes representing an audio file of the specified file type to the output stream provided. Some file types require that the length be written into the file header; such files cannot be written from start to finish unless the length is known in advance. An attempt to write a file of such a type will fail with an IOException if the length in the audio file type is AudioSystem.NOT_SPECIFIED.
streamthe audio input stream containing audio data to be written to the file
fileTypethe kind of audio file to write
outthe stream to which the file data should be written
returnthe number of bytes written to the output stream
ThrowsIOException: if an input/output exception occurs
ThrowsIllegalArgumentException: if the file type is not supported by the system
See also isFileTypeSupported, getAudioFileTypes
public static int write(AudioInputStream stream, AudioFileFormat.Type fileType, File out) throws IOException Details
Writes a stream of bytes representing an audio file of the specified file type to the external file provided.
streamthe audio input stream containing audio data to be written to the file
fileTypethe kind of audio file to write
outthe external file to which the file data should be written
returnthe number of bytes written to the file
ThrowsIOException: if an I/O exception occurs
ThrowsIllegalArgumentException: if the file type is not supported by the system
See also isFileTypeSupported, getAudioFileTypes

Properties
public static AudioFileFormat getAudioFileFormat(InputStream stream) throws UnsupportedAudioFileException, IOException Details
Obtains the audio file format of the provided input stream. The stream must point to valid audio file data. The implementation of this method may require multiple parsers to examine the stream to determine whether they support it. These parsers must be able to mark the stream, read enough data to determine whether they support the stream, and, if not, reset the stream's read pointer to its original position. If the input stream does not support these operations, this method may fail with an IOException.
streamthe input stream from which file format information should be extracted
returnan AudioFileFormat object describing the stream's audio file format
ThrowsUnsupportedAudioFileException: if the stream does not point to valid audio file data recognized by the system
ThrowsIOException: if an input/output exception occurs
See also markSupported, mark
public static AudioFileFormat getAudioFileFormat(URL url) throws UnsupportedAudioFileException, IOException Details
Obtains the audio file format of the specified URL. The URL must point to valid audio file data.
urlthe URL from which file format information should be extracted
returnan AudioFileFormat object describing the audio file format
ThrowsUnsupportedAudioFileException: if the URL does not point to valid audio file data recognized by the system
ThrowsIOException: if an input/output exception occurs
public static AudioFileFormat getAudioFileFormat(File file) throws UnsupportedAudioFileException, IOException Details
Obtains the audio file format of the specified File. The File must point to valid audio file data.
filethe File from which file format information should be extracted
returnan AudioFileFormat object describing the audio file format
ThrowsUnsupportedAudioFileException: if the File does not point to valid audio file data recognized by the system
ThrowsIOException: if an I/O exception occurs
public static AudioFileFormat.Type[] getAudioFileTypes() Details
Obtains the file types for which file writing support is provided by the system.
returnarray of unique file types. If no file types are supported, an array of length 0 is returned.
public static AudioFileFormat.Type[] getAudioFileTypes(AudioInputStream stream) Details
Obtains the file types that the system can write from the audio input stream specified.
streamthe audio input stream for which audio file type support is queried
returnarray of file types. If no file types are supported, an array of length 0 is returned.
public static AudioInputStream getAudioInputStream(AudioFormat.Encoding targetEncoding, AudioInputStream sourceStream) Details
Obtains an audio input stream of the indicated encoding, by converting the provided audio input stream.
targetEncodingthe desired encoding after conversion
sourceStreamthe stream to be converted
returnan audio input stream of the indicated encoding
ThrowsIllegalArgumentException: if the conversion is not supported
See also getTargetEncodings(AudioFormat.Encoding), getTargetEncodings(AudioFormat), isConversionSupported(AudioFormat.Encoding, AudioFormat), getAudioInputStream(AudioFormat, AudioInputStream)
public static AudioInputStream getAudioInputStream(AudioFormat targetFormat, AudioInputStream sourceStream) Details
Obtains an audio input stream of the indicated format, by converting the provided audio input stream.
targetFormatthe desired audio format after conversion
sourceStreamthe stream to be converted
returnan audio input stream of the indicated format
ThrowsIllegalArgumentException: if the conversion is not supported #see #getTargetEncodings(AudioFormat)
See also getTargetFormats(AudioFormat.Encoding, AudioFormat), isConversionSupported(AudioFormat, AudioFormat), getAudioInputStream(AudioFormat.Encoding, AudioInputStream)
public static AudioInputStream getAudioInputStream(InputStream stream) throws UnsupportedAudioFileException, IOException Details
Obtains an audio input stream from the provided input stream. The stream must point to valid audio file data. The implementation of this method may require multiple parsers to examine the stream to determine whether they support it. These parsers must be able to mark the stream, read enough data to determine whether they support the stream, and, if not, reset the stream's read pointer to its original position. If the input stream does not support these operation, this method may fail with an IOException.
streamthe input stream from which the AudioInputStream should be constructed
returnan AudioInputStream object based on the audio file data contained in the input stream.
ThrowsUnsupportedAudioFileException: if the stream does not point to valid audio file data recognized by the system
ThrowsIOException: if an I/O exception occurs
See also markSupported, mark
public static AudioInputStream getAudioInputStream(URL url) throws UnsupportedAudioFileException, IOException Details
Obtains an audio input stream from the URL provided. The URL must point to valid audio file data.
urlthe URL for which the AudioInputStream should be constructed
returnan AudioInputStream object based on the audio file data pointed to by the URL
ThrowsUnsupportedAudioFileException: if the URL does not point to valid audio file data recognized by the system
ThrowsIOException: if an I/O exception occurs
public static AudioInputStream getAudioInputStream(File file) throws UnsupportedAudioFileException, IOException Details
Obtains an audio input stream from the provided File. The File must point to valid audio file data.
filethe File for which the AudioInputStream should be constructed
returnan AudioInputStream object based on the audio file data pointed to by the File
ThrowsUnsupportedAudioFileException: if the File does not point to valid audio file data recognized by the system
ThrowsIOException: if an I/O exception occurs
public static Clip getClip() throws LineUnavailableException Details
Obtains a clip that can be used for playing back an audio file or an audio stream. The returned clip will be provided by the default system mixer, or, if not possible, by any other mixer installed in the system that supports a 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.
returnthe desired clip object
ThrowsLineUnavailableException: if a clip object is not available due to resource restrictions
ThrowsSecurityException: if a clip object is not available due to security restrictions
ThrowsIllegalArgumentException: if the system does not support at least one clip instance through any installed mixer
since1.5
See also getClip(Mixer.Info)

public static Clip getClip(Mixer.Info mixerInfo) throws LineUnavailableException Details
Obtains a clip from the specified mixer that can be used for playing back an audio file or an audio stream.

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.
mixerInfoa Mixer.Info object representing the desired mixer, or null for the system default mixer
returna clip object from the specified mixer
ThrowsLineUnavailableException: if a clip is not available from this mixer due to resource restrictions
ThrowsSecurityException: if a clip is not available from this mixer due to security restrictions
ThrowsIllegalArgumentException: if the system does not support at least one clip through the specified mixer
since1.5
See also getClip()

public static boolean isConversionSupported(AudioFormat.Encoding targetEncoding, AudioFormat sourceFormat) Details
Indicates whether an audio input stream of the specified encoding can be obtained from an audio input stream that has the specified format.
targetEncodingthe desired encoding after conversion
sourceFormatthe audio format before conversion
returntrue if the conversion is supported, otherwise false
public static boolean isConversionSupported(AudioFormat targetFormat, AudioFormat sourceFormat) Details
Indicates whether an audio input stream of a specified format can be obtained from an audio input stream of another specified format.
targetFormatthe desired audio format after conversion
sourceFormatthe audio format before conversion
returntrue if the conversion is supported, otherwise false
public static boolean isFileTypeSupported(AudioFileFormat.Type fileType) Details
Indicates whether file writing support for the specified file type is provided by the system.
fileTypethe file type for which write capabilities are queried
returntrue if the file type is supported, otherwise false
public static boolean isFileTypeSupported(AudioFileFormat.Type fileType, AudioInputStream stream) Details
Indicates whether an audio file of the specified file type can be written from the indicated audio input stream.
fileTypethe file type for which write capabilities are queried
streamthe stream for which file-writing support is queried
returntrue if the file type is supported for this audio input stream, otherwise false
public static Line getLine(Line.Info info) throws LineUnavailableException Details
Obtains a line that matches the description in the specified 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.
infoa Line.Info object describing the desired kind of line
returna line of the requested kind
ThrowsLineUnavailableException: if a matching line is not available due to resource restrictions
ThrowsSecurityException: if a matching line is not available due to security restrictions
ThrowsIllegalArgumentException: if the system does not support at least one line matching the specified Line.Info object through any installed mixer

public static boolean isLineSupported(Line.Info info) Details
Indicates whether the system supports any lines that match the specified Line.Info object. A line is supported if any installed mixer supports it.
infoa Line.Info object describing the line for which support is queried
returntrue if at least one matching line is supported, otherwise false
See also isLineSupported(Line.Info)
public static Mixer getMixer(Mixer.Info info) Details
Obtains the requested audio mixer.
infoa Mixer.Info object representing the desired mixer, or null for the system default mixer
returnthe requested mixer
ThrowsSecurityException: if the requested mixer is unavailable because of security restrictions
ThrowsIllegalArgumentException: if the info object does not represent a mixer installed on the system
See also getMixerInfo
public static Mixer.Info[] getMixerInfo() Details
Obtains an array of mixer info objects that represents the set of audio mixers that are currently installed on the system.
returnan array of info objects for the currently installed mixers. If no mixers are available on the system, an array of length 0 is returned.
See also getMixer
public static SourceDataLine getSourceDataLine(AudioFormat format) throws LineUnavailableException Details
Obtains a source data line that can be used for playing back audio data in the format specified by the 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.
formatan AudioFormat object specifying the supported audio format of the returned line, or null for any audio format
returnthe desired SourceDataLine object
ThrowsLineUnavailableException: if a matching source data line is not available due to resource restrictions
ThrowsSecurityException: if a matching source data line is not available due to security restrictions
ThrowsIllegalArgumentException: if the system does not support at least one source data line supporting the specified audio format through any installed mixer
since1.5
See also getSourceDataLine(AudioFormat, Mixer.Info)

public static SourceDataLine getSourceDataLine(AudioFormat format, Mixer.Info mixerinfo) throws LineUnavailableException Details
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.

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.
formatan AudioFormat object specifying the supported audio format of the returned line, or null for any audio format
mixerinfoa Mixer.Info object representing the desired mixer, or null for the system default mixer
returnthe desired SourceDataLine object
ThrowsLineUnavailableException: if a matching source data line is not available from the specified mixer due to resource restrictions
ThrowsSecurityException: if a matching source data line is not available from the specified mixer due to security restrictions
ThrowsIllegalArgumentException: if the specified mixer does not support at least one source data line supporting the specified audio format
since1.5
See also getSourceDataLine(AudioFormat)

public static Line.Info[] getSourceLineInfo(Line.Info info) Details
Obtains information about all source lines of a particular type that are supported by the installed mixers.
infoa Line.Info object that specifies the kind of lines about which information is requested
returnan array of Line.Info objects describing source lines matching the type requested. If no matching source lines are supported, an array of length 0 is returned.
See also getSourceLineInfo(Line.Info)
public static TargetDataLine getTargetDataLine(AudioFormat format) throws LineUnavailableException Details
Obtains a target data line that can be used for recording audio data in the format specified by the 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.
formatan AudioFormat object specifying the supported audio format of the returned line, or null for any audio format
returnthe desired TargetDataLine object
ThrowsLineUnavailableException: if a matching target data line is not available due to resource restrictions
ThrowsSecurityException: if a matching target data line is not available due to security restrictions
ThrowsIllegalArgumentException: if the system does not support at least one target data line supporting the specified audio format through any installed mixer
since1.5
See also getTargetDataLine(AudioFormat, Mixer.Info), javax.sound.sampled.AudioPermission

public static TargetDataLine getTargetDataLine(AudioFormat format, Mixer.Info mixerinfo) throws LineUnavailableException Details
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.

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.
formatan AudioFormat object specifying the supported audio format of the returned line, or null for any audio format
mixerinfoa Mixer.Info object representing the desired mixer, or null for the system default mixer
returnthe desired TargetDataLine object
ThrowsLineUnavailableException: if a matching target data line is not available from the specified mixer due to resource restrictions
ThrowsSecurityException: if a matching target data line is not available from the specified mixer due to security restrictions
ThrowsIllegalArgumentException: if the specified mixer does not support at least one target data line supporting the specified audio format
since1.5
See also getTargetDataLine(AudioFormat), javax.sound.sampled.AudioPermission

public static AudioFormat.Encoding[] getTargetEncodings(AudioFormat.Encoding sourceEncoding) Details
Obtains the encodings that the system can obtain from an audio input stream with the specified encoding using the set of installed format converters.
sourceEncodingthe encoding for which conversion support is queried
returnarray of encodings. If 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) Details
Obtains the encodings that the system can obtain from an audio input stream with the specified format using the set of installed format converters.
sourceFormatthe audio format for which conversion is queried
returnarray of encodings. If 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 AudioFormat[] getTargetFormats(AudioFormat.Encoding targetEncoding, AudioFormat sourceFormat) Details
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.
targetEncodingthe desired encoding after conversion
sourceFormatthe audio format before conversion
returnarray of formats. If no formats of the specified encoding are supported, an array of length 0 is returned.
public static Line.Info[] getTargetLineInfo(Line.Info info) Details
Obtains information about all target lines of a particular type that are supported by the installed mixers.
infoa Line.Info object that specifies the kind of lines about which information is requested
returnan array of Line.Info objects describing target lines matching the type requested. If no matching target lines are supported, an array of length 0 is returned.
See also getTargetLineInfo(Line.Info)