Module java.desktop

Interface Mixer

所有超级接口:
AutoCloseable, Line

public interface Mixer extends Line
混音器是一个具有一个或多个线路的音频设备。它不一定设计用于混合音频信号。实际混合音频的混音器具有多个输入(源)线路和至少一个输出(目标)线路。前者通常是实现SourceDataLine的类的实例,后者是TargetDataLinePort对象也可以是源线路或目标线路。混音器可以接受预先录制的、可循环的声音作为输入,方法是使其一些源线路是实现Clip接口的对象的实例。

通过扩展的Mixer接口的方法,混音器可能提供一组对混音器全局的控制。例如,混音器可以有一个主增益控制。这些全局控件与属于混音器各个单独线路的控件是不同的。

一些混音器,特别是具有内部数字混音功能的混音器,可能通过实现DataLine接口提供附加功能。

混音器可以支持其线路的同步。当同步组中的一个线路启动或停止时,组中的其他线路会自动与明确受影响的线路同时启动或停止。

自版本:
1.3
  • Method Details

    • getMixerInfo

      Mixer.Info getMixerInfo()
      获取有关此混音器的信息,包括产品名称、版本、供应商等。
      返回:
      描述此混音器的混音器信息对象
      参见:
    • getSourceLineInfo

      Line.Info[] getSourceLineInfo()
      获取此混音器支持的源线路集合的信息。某些源线路可能仅在此混音器打开时才可用。
      返回:
      表示此混音器的源线路的Line.Info对象数组。如果不支持源线路,则返回长度为0的数组。
    • getTargetLineInfo

      Line.Info[] getTargetLineInfo()
      获取此混音器支持的目标线路集合的信息。某些目标线路可能仅在此混音器打开时才可用。
      返回:
      表示此混音器的目标线路的Line.Info对象数组。如果不支持目标线路,则返回长度为0的数组。
    • getSourceLineInfo

      Line.Info[] getSourceLineInfo(Line.Info info)
      获取此混音器支持的特定类型源线路的信息。某些源线路可能仅在此混音器打开时才可用。
      参数:
      info - 描述要查询信息的线路的Line.Info对象
      返回:
      描述匹配请求类型的源线路的Line.Info对象数组。如果不支持匹配的源线路,则返回长度为0的数组。
    • getTargetLineInfo

      Line.Info[] getTargetLineInfo(Line.Info info)
      获取此混音器支持的特定类型目标线路的信息。某些目标线路可能仅在此混音器打开时才可用。
      参数:
      info - 描述要查询信息的线路的Line.Info对象
      返回:
      描述匹配请求类型的目标线路的Line.Info对象数组。如果不支持匹配的目标线路,则返回长度为0的数组。
    • isLineSupported

      boolean isLineSupported(Line.Info info)
      指示混音器是否支持与指定的Line.Info对象匹配的线路(或线路)。某些线路可能仅在此混音器打开时才支持。
      参数:
      info - 描述要查询支持的线路
      返回:
      如果支持至少一个匹配线路,则返回true,否则返回false
    • getLine

      Line getLine(Line.Info info) throws LineUnavailableException
      获取一个可供使用且与指定Line.Info对象中的描述匹配的线路。

      如果请求一个DataLine,并且info是指定至少一个完全限定音频格式的DataLine.Info实例,则最后一个将被用作返回的DataLine的默认格式。

      参数:
      info - 描述所需线路的对象
      返回:
      一个可供使用且与指定Line.Info对象中的描述匹配的线路
      抛出:
      LineUnavailableException - 如果由于资源限制而无法获得匹配的线路
      IllegalArgumentException - 如果此混音器不支持与描述匹配的任何线路
      SecurityException - 如果由于安全限制而无法获得匹配的线路
    • getMaxLines

      int getMaxLines(Line.Info info)
      获取可以同时打开的请求类型线路的近似最大数量。

      某些类型的混音器没有硬性限制,可能允许打开更多线路。由于某些线路是共享资源,如果另一个进程已经打开了此混音器的线路,混音器可能无法打开最大数量的线路。

      请求的类型是与提供的Line.Info对象中的描述匹配的任何线路。例如,如果信息对象表示扬声器端口,并且混音器仅支持一个扬声器端口,此方法应返回1。如果信息对象表示源数据线路,并且混音器支持同时使用32个源数据线路,返回值应为32。如果没有限制,此函数返回AudioSystem.NOT_SPECIFIED

      参数:
      info - 描述要查询支持的实例数量的线路的Line.Info
      返回:
      支持的匹配线路的最大数量,或AudioSystem.NOT_SPECIFIED
    • getSourceLines

      Line[] getSourceLines()
      获取当前对此混音器打开的所有源线路的集合。
      返回:
      当前对混音器打开的源线路。如果当前对此混音器没有打开源线路,则返回长度为0的数组。
      抛出:
      SecurityException - 如果由于安全限制而无法获得匹配的线路
    • getTargetLines

      Line[] getTargetLines()
      获取当前从此混音器打开的所有目标线路的集合。
      返回:
      从混音器打开的目标线路。如果当前从此混音器没有打开目标线路,则返回长度为0的数组。
      抛出:
      SecurityException - 如果由于安全限制而无法获得匹配的线路
    • synchronize

      void synchronize(Line[] lines, boolean maintainSync)
      同步两个或多个线路。对这些线路中的一个执行开始或停止音频播放或捕获的任何后续命令将对组中的其他线路产生相同的效果,以便它们同时开始或停止播放或捕获数据。
      参数:
      lines - 应该同步的线路
      maintainSync - 如果必须精确保持同步(即,在操作期间始终保持同步必须是样本精确的),则为true,或者如果仅在开始和停止操作期间需要精确同步,则为false
      抛出:
      IllegalArgumentException - 如果无法同步线路。如果线路类型不同或具有此混音器不支持同步的不同格式,或者指定的所有线路不属于此混音器,则可能会发生这种情况。
    • unsynchronize

      void unsynchronize(Line[] lines)
      释放指定线路的同步。数组必须与已经建立同步的数组相同;否则可能会抛出异常。但是,可以指定null,在这种情况下,所有当前与此混音器同步的线路将被取消同步。
      参数:
      lines - 应释放同步的线路,或者为null表示释放所有该混音器的同步线路
      抛出:
      IllegalArgumentException - 如果无法取消同步线路。如果指定的参数与已经建立同步的线路集合不完全匹配,则可能会发生这种情况。
    • isSynchronizationSupported

      boolean isSynchronizationSupported(Line[] lines, boolean maintainSync)
      报告此混音器是否支持指定一组线路的同步。
      参数:
      lines - 查询同步支持的线路集合
      maintainSync - 如果同步必须精确保持(即,同步必须在线路操作期间始终保持采样精确),则为true,如果仅在启动和停止操作期间需要精确同步,则为false
      返回:
      如果线路可以同步,则返回true,否则返回false