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