模块  java.desktop
软件包  javax.sound.sampled

Class AudioInputStream

  • 实现的所有接口
    CloseableAutoCloseable

    public class AudioInputStream
    extends InputStream
    音频输入流是具有指定音频格式和长度的输入流。 长度以样本帧表示,而不是以字节表示。 提供了几种方法用于从流中读取一定数量的字节,或者指定未指定数量的字节。 音频输入流跟踪读取的最后一个字节。 您可以跳过任意数量的字节以进入稍后的位置进行读取。 音频输入流可以支持标记。 设置标记时,会记住当前位置,以便稍后返回。

    AudioSystem类包含许多操作AudioInputStream对象的方法。 例如,这些方法可以让您:

    • 从外部音频文件,流或URL获取音频输入流
    • 从音频输入流中写入外部文件
    • 将音频输入流转换为不同的音频格式
    从以下版本开始:
    1.3
    另请参见:
    AudioSystemClip.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)
      跳过并从此音频输入流中丢弃指定数量的字节。
    • 字段详细信息

      • 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
        返回可以从此音频输入流中无阻塞地读取(或跳过)的最大字节数。 此限制仅适用于此音频输入流的下一次readskip方法调用; 每次调用这些方法时,限制都会有所不同。 根据基础流,如果关闭此流,则可能会抛出IOException
        重写:
        available在类 InputStream
        结果
        可以从此音频输入流中无阻塞地读取的字节数
        异常
        IOException - 如果发生输入或输出错误
        另请参见:
        read(byte[], int, int)read(byte[])read()skip(long)
      • mark

        public void mark​(int readlimit)
        标记此音频输入流中的当前位置。
        重写:
        mark在类 InputStream
        参数
        readlimit - 标记位置变为无效之前可以读取的最大字节数
        另请参见:
        reset()markSupported()
      • markSupported

        public boolean markSupported()
        测试此音频输入流是否支持 markreset方法。
        重写:
        markSupported在类 InputStream
        结果
        true如果此流支持markreset方法; 否则为false
        另请参见:
        mark(int)reset()