Module  java.desktop
软件包  javax.sound.sampled

Class AudioInputStream

  • All Implemented Interfaces:
    CloseableAutoCloseable


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

    AudioSystem类包含许多操纵AudioInputStream对象的方法。 例如,方法让你:

    • 从外部音频文件,流或URL获取音频输入流
    • 从音频输入流写入一个外部文件
    • 将音频输入流转换为不同的音频格式
    从以下版本开始:
    1.3
    另请参见:
    AudioSystemClip.open(AudioInputStream)
    • Field Summary

      Fields  
      Modifier and Type Field 描述
      protected AudioFormat format
      流中包含的音频数据的格式。
      protected long frameLength
      这个流的长度,采样帧。
      protected long framePos
      这个流中的当前位置,在采样帧中(从零开始)。
      protected int frameSize
      每个帧的大小,以字节为单位。
    • 构造方法摘要

      构造方法  
      Constructor 描述
      AudioInputStream​(InputStream stream, AudioFormat format, long length)
      使用来自指定输入流的音频数据构建音频输入流,该音频输入流在采样帧中具有请求的格式和长度。
      AudioInputStream​(TargetDataLine line)
      构建从所指示的目标数据线读取其数据的音频输入流。
    • 方法摘要

      所有方法  接口方法  具体的方法 
      Modifier and Type 方法 描述
      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:
        readInputStream
        结果
        数据的下一个字节,如果达到流的结尾,则为-1
        异常
        IOException - 如果发生输入或输出错误
        另请参见:
        read(byte[], int, int)read(byte[])available()
      • read

        public int read​(byte[] b)
                 throws IOException
        从音频输入流读取一些字节数,并将它们存储到缓冲器阵列b 实际读取的字节数作为整数返回。 该方法阻塞直到输入数据可用,检测到流的结尾,或抛出异常。

        该方法将始终读取整数个帧。 如果阵列的长度不是整数帧,则最多读取b.length - (b.length % frameSize)字节。

        重写:
        readInputStream
        参数
        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)字节。

        重写:
        readInputStream
        参数
        b - 读取数据的缓冲区
        off - 从阵列 b开始的数据将被写入的偏移量
        len - 要读取的最大字节数
        结果
        读取到缓冲区中的总字节数,如果没有更多的数据,因为已经到达流的末尾,则为-1
        异常
        IOException - 如果发生输入或输出错误
        另请参见:
        read(byte[])read()skip(long)available()
      • skip

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

        该方法将始终跳过整数帧。 如果n未指定整数帧,则最多跳过n - (n % frameSize)个字节。

        重写:
        skipInputStream
        参数
        n - 要跳过的请求的字节数
        结果
        实际跳过的字节数
        异常
        IOException - 如果发生输入或输出错误
        另请参见:
        read()available()
      • available

        public int available​()
                      throws IOException
        返回从该音频输入流中可以读取(或跳过)的最大字节数,而不会阻塞。 此限制仅适用于下一次调用此音频输入流的readskip方法; 每次调用这些方法时,限制可能会有所不同。 根据底层流,如果此流已关闭,则可能会抛出IOException。
        重写:
        availableInputStream
        结果
        可以从该音频输入流中读取而不阻塞的字节数
        异常
        IOException - 如果发生输入或输出错误
        另请参见:
        read(byte[], int, int)read(byte[])read()skip(long)
      • mark

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

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