模块 java.desktop

类 AudioInputStream

java.lang.Object
java.io.InputStream
javax.sound.sampled.AudioInputStream
所有已实现的接口:
Closeable , AutoCloseable

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

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

  • 从外部音频文件、流或URL获取音频输入流
  • 从音频输入流写入外部文件
  • 将音频输入流转换为不同的音频格式
自从:
1.3
参见:
  • 字段摘要

    字段
    修饰符和类型
    Field
    描述
    protected AudioFormat
    流中包含的音频数据的格式。
    protected long
    此流的长度,以样本帧为单位。
    protected long
    此流中的当前位置,以样本帧(从零开始)为单位。
    protected int
    每个帧的大小,以字节为单位。
  • 构造方法总结

    构造方法
    构造方法
    描述
    AudioInputStream(InputStream stream, AudioFormat format, long length)
    使用来自指定输入流的音频数据构造一个音频输入流,该流在样本帧中具有请求的格式和长度。
    构造一个音频输入流,该流从指示的目标数据行读取其数据。
  • 方法总结

    修饰符和类型
    方法
    描述
    int
    返回可以从此音频输入流读取(或跳过)而不阻塞的最大字节数。
    void
    关闭此音频输入流并释放与该流关联的任何系统资源。
    获取此音频输入流中声音数据的音频格式。
    long
    获取流的长度,以样本帧而不是字节表示。
    void
    mark(int readlimit)
    标记此音频输入流中的当前位置。
    boolean
    测试此音频输入流是否支持 markreset 方法。
    int
    read()
    从音频输入流中读取下一个数据字节。
    int
    read(byte[] b)
    从音频输入流中读取一定数量的字节并将它们存储到缓冲区数组 b 中。
    int
    read(byte[] b, int off, int len)
    从音频流中读取指定最大字节数的数据,并将它们放入给定的字节数组中。
    void
    将此音频输入流重新定位到上次调用其 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 - 此流从中获取数据的目标数据行
      参见:
  • 方法详情

    • getFormat

      public AudioFormat  getFormat()
      获取此音频输入流中声音数据的音频格式。
      返回:
      描述此流格式的音频格式对象
    • getFrameLength

      public long getFrameLength()
      获取流的长度,以样本帧而不是字节表示。
      返回:
      样本帧的长度
    • read

      public int read() throws IOException
      从音频输入流中读取下一个数据字节。音频输入流的帧大小必须是一个字节,否则将抛出 IOException
      指定者:
      read 在类 InputStream
      返回:
      下一个数据字节,如果到达流的末尾则为 -1
      抛出:
      IOException - 如果发生输入或输出错误
      参见:
    • read

      public int read(byte[] b) throws IOException
      从音频输入流中读取一定数量的字节并将它们存储到缓冲区数组 b 中。实际读取的字节数作为整数返回。此方法会阻塞,直到输入数据可用、检测到流结束或抛出异常为止。

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

      重写:
      read 在类 InputStream
      参数:
      b - 读取数据的缓冲区。
      返回:
      读入缓冲区的字节总数,如果因为已到达流的末尾而没有更多数据,则为 -1
      抛出:
      IOException - 如果发生输入或输出错误
      参见:
    • read

      public int read(byte[] b, int off, int len) throws IOException
      从音频流中读取指定最大字节数的数据,并将它们放入给定的字节数组中。

      此方法将始终读取整数帧。如果 len 未指定整数帧,则最多读取 len - (len % frameSize) 字节。

      重写:
      read 在类 InputStream
      参数:
      b - 读取数据的缓冲区。
      off - 写入数据的数组 b 中的起始偏移量。
      len - 要读取的最大字节数。
      返回:
      读入缓冲区的字节总数,如果因为已到达流的末尾而没有更多数据,则为 -1
      抛出:
      IOException - 如果发生输入或输出错误
      参见:
    • skip

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

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

      重写:
      skip 在类 InputStream
      参数:
      n - 请求跳过的字节数
      返回:
      实际跳过的字节数
      抛出:
      IOException - 如果发生输入或输出错误
      参见:
    • available

      public int available() throws IOException
      返回可以从此音频输入流读取(或跳过)而不阻塞的最大字节数。此限制仅适用于此音频输入流的 readskip 方法的下一次调用;每次调用这些方法时,限制可能会有所不同。根据底层流,如果此流关闭,可能会抛出 IOException
      重写:
      available 在类 InputStream
      返回:
      可以从这个音频输入流中读取而不阻塞的字节数
      抛出:
      IOException - 如果发生输入或输出错误
      参见:
    • close

      public void close() throws IOException
      关闭此音频输入流并释放与该流关联的任何系统资源。
      指定者:
      close 在接口 AutoCloseable
      指定者:
      close 在接口 Closeable
      重写:
      close 在类 InputStream
      抛出:
      IOException - 如果发生输入或输出错误
    • mark

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

      public void reset() throws IOException
      将此音频输入流重新定位到上次调用其 mark 方法时的位置。
      重写:
      reset 在类 InputStream
      抛出:
      IOException - 如果发生输入或输出错误
      参见:
    • markSupported

      public boolean markSupported()
      测试此音频输入流是否支持 markreset 方法。
      重写:
      markSupported 在类 InputStream
      返回:
      true 如果此流支持 markreset 方法; false否则
      参见: