Module java.desktop

Class AudioInputStream

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

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

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

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

    Fields
    Modifier and Type
    Field
    Description
    protected AudioFormat
    流中包含的音频数据的格式。
    protected long
    该流的长度,以采样帧为单位。
    protected long
    该流中的当前位置,以采样帧为单位(从零开始)。
    protected int
    每帧的大小,以字节为单位。
  • Constructor Summary

    Constructors
    Constructor
    Description
    AudioInputStream(InputStream stream, AudioFormat format, long length)
    使用指定输入流中的音频数据,构造具有请求格式和采样帧长度的音频输入流。
    从指定的目标数据行读取数据的音频输入流。
  • Method Summary

    Modifier and Type
    Method
    Description
    int
    返回可以从该音频输入流中读取(或跳过)的最大字节数,而不会阻塞。
    void
    close()
    关闭此音频输入流并释放与该流相关的任何系统资源。
    获取此音频输入流中声音数据的音频格式。
    long
    获取流的长度,以采样帧而不是字节表示。
    void
    mark(int readlimit)
    在此音频输入流中标记当前位置。
    boolean
    检查此音频输入流是否支持markreset方法。
    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.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • format

      protected AudioFormat format
      流中包含的音频数据的格式。
    • frameLength

      protected long frameLength
      该流的长度,以采样帧为单位。
    • frameSize

      protected int frameSize
      每帧的大小,以字节为单位。
    • framePos

      protected long framePos
      该流中的当前位置,以采样帧为单位(从零开始)。
  • Constructor Details

    • AudioInputStream

      public AudioInputStream(InputStream stream, AudioFormat format, long length)
      使用指定输入流中的音频数据,构造具有请求格式和采样帧长度的音频输入流。
      参数:
      stream - 此AudioInputStream对象基于的流
      format - 此流的音频数据的格式
      length - 此流中数据的采样帧长度
    • AudioInputStream

      public AudioInputStream(TargetDataLine line)
      从指定目标数据行读取其数据的音频输入流。流的格式与目标数据行的格式相同,长度为AudioSystem#NOT_SPECIFIED
      参数:
      line - 此流获取数据的目标数据行
      参见:
  • Method Details

    • 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
      返回:
      如果此流支持markreset方法,则返回true; 否则返回false
      参见: