java.lang.Object java.io.InputStream javax.sound.sampled.AudioInputStream
public class AudioInputStream
音频输入流是具有指定音频格式和长度的输入流。长度用示例帧表示,不用字节表示。提供几种方法,用于从流读取一定数量的字节,或未指定数量的字节。音频输入流跟踪所读取的最后一个字节。可以跳过任意数量的字节以到达稍后的读取位置。音频输入流可支持标记。设置标记时,会记住当前位置,以便可以稍后返回到该位置。
AudioSystem
类包括许多操作 AudioInputStream
对象的方法。例如,这些方法可以让您:
AudioSystem
,
Clip.open(AudioInputStream)
字段摘要 | |
---|---|
protected AudioFormat |
format 流中包含的音频数据的格式。 |
protected long |
frameLength 此流的长度,以示例帧为单位。 |
protected long |
framePos 此流中的当前位置,以示例帧为单位(从零开始)。 |
protected int |
frameSize 每帧的大小,以字节为单位。 |
构造方法摘要 | |
---|---|
AudioInputStream(InputStream stream, AudioFormat format, long length) 使用指定输入流中的音频数据构造具有请求的格式和长度(以示例帧为单位)的音频输入流。 |
|
AudioInputStream(TargetDataLine line) 构造从指示的目标数据行读取数据的音频输入流。 |
方法摘要 | |
---|---|
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) 跳过并丢弃此音频输入流中指定数量的字节。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
字段详细信息 |
---|
protected AudioFormat format
protected long frameLength
protected int frameSize
protected long framePos
构造方法详细信息 |
---|
public AudioInputStream(InputStream stream, AudioFormat format, long length)
stream
- 流,
AudioInputStream
对象以该为基础
format
- 此流的音频数据格式
length
- 在此流中的数据长度(以示例帧为单位)
public AudioInputStream(TargetDataLine line)
line
- 此流从中获得数据的目标数据行。
AudioSystem.NOT_SPECIFIED
方法详细信息 |
---|
public AudioFormat getFormat()
public long getFrameLength()
public int read() throws IOException
IOException
。
InputStream
中的
read
IOException
- 如果发生输入或输出错误
read(byte[], int, int)
,
read(byte[])
,
public int read(byte[] b) throws IOException
b
中。以整数形式返回实际读取的字节数。在输入数据可用、检测到流末尾或抛出异常之前,此方法将一直阻塞。
此方法将总是读取整数帧。如果数组的长度不是整数帧,则读取最大数量的 b.length - (b.length % frameSize)
字节。
InputStream
中的
read
b
- 将数据读入的缓冲区
IOException
- 如果发生输入或输出错误
read(byte[], int, int)
,
read()
,
available()
public int read(byte[] b, int off, int len) throws IOException
此方法将总是读取整数帧。如果 len
未指定整数帧,则读取最大数量的 len - (len % frameSize)
字节。
InputStream
中的
read
b
- 将数据读入的缓冲区
off
- 从数组
b
的开头开始的偏移量,将从此处写入数据
len
- 要读取的最大数量的字节
IOException
- 如果发生输入或输出错误
read(byte[])
,
read()
,
skip(long)
,
available()
public long skip(long n) throws IOException
InputStream
中的
skip
n
- 要跳过的请求数量的字节
IOException
- 如果发生输入或输出错误
read()
,
available()
public int available() throws IOException
read
或
skip
方法的下一个调用;每次调用这些方法时该限制都可以有所不同。如果关闭此流,则可能抛出 IOException,这一点取决于基础流。
InputStream
中的
available
IOException
- 如果发生输入或输出错误
read(byte[], int, int)
,
read(byte[])
,
read()
,
skip(long)
public void close() throws IOException
Closeable
中的
close
InputStream
中的
close
IOException
- 如果发生输入或输出错误
public void mark(int readlimit)
InputStream
中的
mark
readlimit
- 在标记位置变得无效之前可以读取的最大字节数。
reset()
,
markSupported()
public void reset() throws IOException
mark
方法时的位置。
InputStream
中的
reset
IOException
- 如果发生输入或输出错误。
mark(int)
,
markSupported()
public boolean markSupported()
mark
和
reset
方法。
InputStream
中的
markSupported