javax.sound.sampled

接口
异常
java.lang.Object
  继承者 java.io.InputStream
      继承者 javax.sound.sampled.AudioInputStream
所有已实现的接口:
Closeable

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()
          测试此音频输入流是否支持 markreset 方法。
 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
 

字段详细信息

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

指定者:
InputStream 中的 read
返回:
数据的下一个字节;如果已到达流的末尾,则返回 -1
抛出:
IOException - 如果发生输入或输出错误
另请参见:
read(byte[], int, int), read(byte[]),


read

public int read(byte[] b)
         throws IOException
从音频输入流读取一定数量的字节,并将其存储在缓冲区数组 b 中。以整数形式返回实际读取的字节数。在输入数据可用、检测到流末尾或抛出异常之前,此方法将一直阻塞。

此方法将总是读取整数帧。如果数组的长度不是整数帧,则读取最大数量的 b.length - (b.length % frameSize) 字节。

覆盖:
InputStream 中的 read
参数:
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) 字节。

覆盖:
InputStream 中的 read
参数:
b - 将数据读入的缓冲区
off - 从数组 b 的开头开始的偏移量,将从此处写入数据
len - 要读取的最大数量的字节
返回:
读入缓冲区的总字节数;如果因已到达流末尾而不再有更多数据,则返回 -1
抛出:
IOException - 如果发生输入或输出错误
另请参见:
read(byte[]), read(), skip(long), available()

skip

public long skip(long n)
          throws IOException
跳过并丢弃此音频输入流中指定数量的字节。

覆盖:
InputStream 中的 skip
参数:
n - 要跳过的请求数量的字节
返回:
跳过的实际字节数
抛出:
IOException - 如果发生输入或输出错误
另请参见:
read(), available()

available

public int available()
              throws IOException
返回可不受阻塞地从此音频输入流中读取(或跳过)的最大字节数。此限制只应用于对此音频输入流的 readskip 方法的下一个调用;每次调用这些方法时该限制都可以有所不同。如果关闭此流,则可能抛出 IOException,这一点取决于基础流。

覆盖:
InputStream 中的 available
返回:
可以不受阻塞地从此音频输入流中读取的字节数
抛出:
IOException - 如果发生输入或输出错误
另请参见:
read(byte[], int, int), read(byte[]), read(), skip(long)

close

public void close()
           throws IOException
关闭此音频输入流并释放与该流关联的所有系统资源。

指定者:
接口 Closeable 中的 close
覆盖:
InputStream 中的 close
抛出:
IOException - 如果发生输入或输出错误

mark

public void mark(int readlimit)
标记此音频输入流中的当前位置。

覆盖:
InputStream 中的 mark
参数:
readlimit - 在标记位置变得无效之前可以读取的最大字节数。
另请参见:
reset(), markSupported()

reset

public void reset()
           throws IOException
将此音频输入流重新定位到上一次调用其 mark 方法时的位置。

覆盖:
InputStream 中的 reset
抛出:
IOException - 如果发生输入或输出错误。
另请参见:
mark(int), markSupported()

markSupported

public boolean markSupported()
测试此音频输入流是否支持 markreset 方法。

覆盖:
InputStream 中的 markSupported
返回:
如果此流支持 markreset 方法,则返回 true;否则返回 false
另请参见:
mark(int), reset()