java.lang.Object
java.io.InputStream
javax.sound.sampled.AudioInputStream
- 所有已实现的接口:
-
Closeable
,AutoCloseable
音频输入流是具有指定音频格式和长度的输入流。长度以采样帧而不是字节表示。提供了几种方法用于从流中读取一定数量的字节,或者未指定数量的字节。音频输入流会跟踪上次读取的最后一个字节。您可以跳过任意数量的字节以便后续读取。音频输入流可能支持标记。设置标记时,会记住当前位置,以便稍后返回到该位置。
AudioSystem
类包含许多操作AudioInputStream
对象的方法。例如,这些方法允许您:
- 从外部音频文件、流或
URL
获取音频输入流 - 从音频输入流中写入外部文件
- 将音频输入流转换为不同的音频格式
- 自从:
- 1.3
- 参见:
-
Field Summary
Modifier and TypeFieldDescriptionprotected AudioFormat
流中包含的音频数据的格式。protected long
该流的长度,以采样帧为单位。protected long
该流中的当前位置,以采样帧为单位(从零开始)。protected int
每帧的大小,以字节为单位。 -
Constructor Summary
ConstructorDescriptionAudioInputStream
(InputStream stream, AudioFormat format, long length) 使用指定输入流中的音频数据,构造具有请求格式和采样帧长度的音频输入流。从指定的目标数据行读取数据的音频输入流。 -
Method Summary
Modifier and TypeMethodDescriptionint
返回可以从该音频输入流中读取(或跳过)的最大字节数,而不会阻塞。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) 跳过并丢弃此音频输入流中指定数量的字节。Methods declared in class java.io.InputStream
nullInputStream, readAllBytes, readNBytes, readNBytes, skipNBytes, transferTo
-
Field Details
-
format
流中包含的音频数据的格式。 -
frameLength
protected long frameLength该流的长度,以采样帧为单位。 -
frameSize
protected int frameSize每帧的大小,以字节为单位。 -
framePos
protected long framePos该流中的当前位置,以采样帧为单位(从零开始)。
-
-
Constructor Details
-
AudioInputStream
使用指定输入流中的音频数据,构造具有请求格式和采样帧长度的音频输入流。- 参数:
-
stream
- 此AudioInputStream
对象基于的流 -
format
- 此流的音频数据的格式 -
length
- 此流中数据的采样帧长度
-
AudioInputStream
从指定目标数据行读取其数据的音频输入流。流的格式与目标数据行的格式相同,长度为AudioSystem#NOT_SPECIFIED
。- 参数:
-
line
- 此流获取数据的目标数据行 - 参见:
-
-
Method Details
-
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
- 返回:
-
如果此流支持
mark
和reset
方法,则返回true
; 否则返回false
- 参见:
-