- java.lang.Object
-
- java.io.InputStream
-
- javax.sound.sampled.AudioInputStream
-
- 实现的所有接口
-
Closeable
,AutoCloseable
public class AudioInputStream extends InputStream
音频输入流是具有指定音频格式和长度的输入流。 长度以样本帧表示,而不是以字节表示。 提供了几种方法用于从流中读取一定数量的字节,或者指定未指定数量的字节。 音频输入流跟踪读取的最后一个字节。 您可以跳过任意数量的字节以进入稍后的位置进行读取。 音频输入流可以支持标记。 设置标记时,会记住当前位置,以便稍后返回。AudioSystem
类包含许多操作AudioInputStream
对象的方法。 例如,这些方法可以让您:- 从外部音频文件,流或
URL
获取音频输入流 - 从音频输入流中写入外部文件
- 将音频输入流转换为不同的音频格式
- 从以下版本开始:
- 1.3
- 另请参见:
-
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.io.InputStream
nullInputStream, readAllBytes, readNBytes, 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()
-
-