- java.lang.Object
-
- java.io.InputStream
-
- javax.sound.sampled.AudioInputStream
-
- All Implemented Interfaces:
-
Closeable
,AutoCloseable
public class AudioInputStream extends InputStream
音频输入流是具有指定音频格式和长度的输入流。 长度以采样帧而不是字节表示。 提供了几种从流中读取一定数量的字节的方法,或者是未指定的字节数。 音频输入流跟踪读取的最后一个字节。 您可以跳过任意数量的字节以获得稍后的位置进行阅读。 音频输入流可以支持标记。 设置标记时,会记住当前的位置,以便以后可以返回。AudioSystem
类包含许多操纵AudioInputStream
对象的方法。 例如,方法让你:- 从外部音频文件,流或URL获取音频输入流
- 从音频输入流写入一个外部文件
- 将音频输入流转换为不同的音频格式
- 从以下版本开始:
- 1.3
- 另请参见:
-
AudioSystem
,Clip.open(AudioInputStream)
-
-
Field Summary
Fields Modifier and Type Field 描述 protected AudioFormat
format
流中包含的音频数据的格式。protected long
frameLength
这个流的长度,采样帧。protected long
framePos
这个流中的当前位置,在采样帧中(从零开始)。protected int
frameSize
每个帧的大小,以字节为单位。
-
构造方法摘要
构造方法 Constructor 描述 AudioInputStream(InputStream stream, AudioFormat format, long length)
使用来自指定输入流的音频数据构建音频输入流,该音频输入流在采样帧中具有请求的格式和长度。AudioInputStream(TargetDataLine line)
构建从所指示的目标数据线读取其数据的音频输入流。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 int
available()
返回从该音频输入流中可以读取(或跳过)的最大字节数,而不会阻塞。void
close()
关闭此音频输入流并释放与流相关联的任何系统资源。AudioFormat
getFormat()
获取此音频输入流中声音数据的音频格式。long
getFrameLength()
获取流的长度,以采样帧而不是字节表示。void
mark(int readlimit)
标记此音频输入流中的当前位置。boolean
markSupported()
测试此音频输入流是否支持mark
和reset
方法。int
read()
从音频输入流读取数据的下一个字节。int
read(byte[] b)
从音频输入流读取一些字节数,并将它们存储到缓冲器阵列b
。int
read(byte[] b, int off, int len)
从音频流读取指定的最大数据字节数,将它们放入给定的字节数组。void
reset()
将此音频输入流重新定位到上次调用其mark
方法时的位置。long
skip(long n)
跳过并丢弃该音频输入流中指定数量的字节。-
Methods inherited from class java.io.InputStream
readAllBytes, readNBytes, transferTo
-
-
-
-
字段详细信息
-
format
protected AudioFormat format
流中包含的音频数据的格式。
-
frameLength
protected long frameLength
这个流的长度,采样帧。
-
frameSize
protected int frameSize
每个帧的大小,以字节为单位。
-
framePos
protected long framePos
这个流中的当前位置,在采样帧中(从零开始)。
-
-
构造方法详细信息
-
AudioInputStream
public AudioInputStream(InputStream stream, AudioFormat format, long length)
使用来自指定输入流的音频数据构建音频输入流,该音频输入流在采样帧中具有请求的格式和长度。- 参数
-
stream
- 此AudioInputStream
对象所基于的流 -
format
- 此流的音频数据的格式 -
length
- 此流中数据的采样帧中的长度
-
AudioInputStream
public AudioInputStream(TargetDataLine line)
构建从所指示的目标数据线读取其数据的音频输入流。 流的格式与目标数据行的格式相同,长度为AudioSystem#NOT_SPECIFIED。- 参数
-
line
- 此流获取其数据的目标数据行 - 另请参见:
-
AudioSystem.NOT_SPECIFIED
-
-
方法详细信息
-
getFormat
public AudioFormat getFormat()
获取此音频输入流中声音数据的音频格式。- 结果
- 描述此流格式的音频格式对象
-
getFrameLength
public long getFrameLength()
获取流的长度,以采样帧而不是字节表示。- 结果
- 样品框架中的长度
-
read
public int read() throws IOException
从音频输入流读取数据的下一个字节。 音频输入流的帧大小必须是一个字节,否则将抛出IOException
。- Specified by:
-
read
在InputStream
- 结果
- 数据的下一个字节,如果达到流的结尾,则为-1
- 异常
-
IOException
- 如果发生输入或输出错误 - 另请参见:
-
read(byte[], int, int)
,read(byte[])
,available()
-
read
public int read(byte[] b) throws IOException
从音频输入流读取一些字节数,并将它们存储到缓冲器阵列b
。 实际读取的字节数作为整数返回。 该方法阻塞直到输入数据可用,检测到流的结尾,或抛出异常。该方法将始终读取整数个帧。 如果阵列的长度不是整数帧,则最多读取
b.length - (b.length % frameSize)
字节。- 重写:
-
read
在InputStream
- 参数
-
b
- 读取数据的缓冲区 - 结果
- 读取到缓冲区中的总字节数,如果没有更多的数据,因为已经到达流的末尾,则为-1
- 异常
-
IOException
- 如果发生输入或输出错误 - 另请参见:
-
read(byte[], int, int)
,read()
,available()
-
read
public int read(byte[] b, int off, int len) throws IOException
从音频流读取指定的最大数据字节数,将它们放入给定的字节数组。该方法将始终读取整数个帧。 如果
len
未指定整数帧,则最多读取len - (len % frameSize)
字节。- 重写:
-
read
在InputStream
- 参数
-
b
- 读取数据的缓冲区 -
off
- 从阵列b
开始的数据将被写入的偏移量 -
len
- 要读取的最大字节数 - 结果
- 读取到缓冲区中的总字节数,如果没有更多的数据,因为已经到达流的末尾,则为-1
- 异常
-
IOException
- 如果发生输入或输出错误 - 另请参见:
-
read(byte[])
,read()
,skip(long)
,available()
-
skip
public long skip(long n) throws IOException
跳过并丢弃该音频输入流中指定数量的字节。该方法将始终跳过整数帧。 如果
n
未指定整数帧,则最多跳过n - (n % frameSize)
个字节。- 重写:
-
skip
在InputStream
- 参数
-
n
- 要跳过的请求的字节数 - 结果
- 实际跳过的字节数
- 异常
-
IOException
- 如果发生输入或输出错误 - 另请参见:
-
read()
,available()
-
available
public int available() throws IOException
返回从该音频输入流中可以读取(或跳过)的最大字节数,而不会阻塞。 此限制仅适用于下一次调用此音频输入流的read
或skip
方法; 每次调用这些方法时,限制可能会有所不同。 根据底层流,如果此流已关闭,则可能会抛出IOException。- 重写:
-
available
在InputStream
- 结果
- 可以从该音频输入流中读取而不阻塞的字节数
- 异常
-
IOException
- 如果发生输入或输出错误 - 另请参见:
-
read(byte[], int, int)
,read(byte[])
,read()
,skip(long)
-
close
public void close() throws IOException
关闭此音频输入流并释放与流相关联的任何系统资源。- Specified by:
-
close
在接口AutoCloseable
- Specified by:
-
close
在接口Closeable
- 重写:
-
close
在InputStream
- 异常
-
IOException
- 如果发生输入或输出错误
-
mark
public void mark(int readlimit)
标记此音频输入流中的当前位置。- 重写:
-
mark
在InputStream
- 参数
-
readlimit
- 标记位置无效之前可以读取的最大字节数 - 另请参见:
-
reset()
,markSupported()
-
reset
public void reset() throws IOException
将此音频输入流重新定位到其最后一次调用其mark
方法时的位置。- 重写:
-
reset
在InputStream
- 异常
-
IOException
- 如果发生输入或输出错误 - 另请参见:
-
mark(int)
,markSupported()
-
markSupported
public boolean markSupported()
测试此音频输入流是否支持mark
和reset
方法。- 重写:
-
markSupported
在InputStream
- 结果
-
true
如果此流支持mark
和reset
方法; 否则为false
- 另请参见:
-
mark(int)
,reset()
-
-