| 
 | JavaTM Platform Standard Ed. 6 | |||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | |||||||||
java.lang.Objectjavax.sound.sampled.AudioFormat
public class AudioFormat
      AudioFormat 是在声音流中指定特定数据安排的类。通过检查以音频格式存储的信息,可以发现在二进制声音数据中解释位的方式。 
 每个数据行都有与其数据流相关的音频格式。源(回放)数据行的音频格式指示数据行期望接收输出的数据类型。对于目标(捕获)数据行,音频格式指定可以从该行读取的数据种类。当然,声音文件也有音频格式。AudioFileFormatAudioFormat 以及其他特定于文件的信息。类似地,AudioInputStreamAudioFormat。 
 AudioFormat 类适应多种常见声音文件编码技术,包括脉冲编码调制 (PCM)、mu-law 编码和 a-law 编码。这些编码技术是预先定义的,但服务提供者可以创建新的编码类型。特定格式使用的编码通过其 encoding 字段命名。 
除编码外,音频格式还包括进一步指定具体数据安排的其他属性。这些属性包括信道数、采样速率、样本大小、字节顺序、帧速率和帧大小。声音可以有不同数量的音频信道:单声道有一个信道,立体声有两个信道。样本速率测量每信道、每秒钟采用的声压“快照”(样本)数。(如果声音是立体声,而不是单声道,则在每个瞬间实际测量两个样本:一个是左声道,另一个是右声道;不过,样本速率仍测量每个声道的数量,所以不管声道数是多少,速率都一样。这是该术语的标准用途。)样本大小指示用于存储每个快照的位数;典型值是 8 和 16。对于 16 位样本(或大于一个字节大小的任何其他样本),字节顺序很重要;每个样本中的字节要么以 "little-endian" 样式排列,要么以 "big-endian" 样式排列。对于类似 PCM 的编码,帧由在给定时间点上所有声道的样本集合组成,因此帧的大小(以字节为单位)总是等于样本大小(以字节为单位)乘以声道数。不过,使用其他种类的编码,帧可以包含整个系列样本的压缩数据包,以及其他非样本数据。对于这些编码,样本速率和样本大小在将数据解码到 PCM 之后引用该数据,所以它们与帧速率和帧大小完全不同。
AudioFormat 对象可以包括属性的集合。属性是一个键值对:键属于 String 类型,相关属性值可为任意对象。属性指定其他格式规范,如压缩格式的比特率。属性主要用作传送往返于服务提供者的其他音频格式信息的方法。因此,属性在 matches(AudioFormat) 方法中被忽略。不过,依靠已安装的服务提供者的方法(如 (AudioFormat, AudioFormat) isConversionSupported)可以考虑使用属性,具体取决于各自的服务提供者实现。 
下表列出了服务提供者应该使用的一些常见属性(如果适用):
| 属性键 | 值类型 | 描述 | 
|---|---|---|
| “比特率” | Integer | 以位每秒为单位的平均比特率 | 
| “可变比特率” | Boolean | 如果文件采用可变比特率 (VBR) 进行编码,则为 true | 
| “音质” | Integer | 编码/转换质量,1 到 100 | 
鼓励服务提供者(插件)的供应商寻找关于其他已经在第三方插件中建立的属性的信息,并遵循相同的约定。
DataLine.getFormat(), 
    AudioInputStream.getFormat(), 
    AudioFileFormat, 
    FormatConversionProvider
   | 嵌套类摘要 | |
|---|---|
| static class | AudioFormat.EncodingEncoding类命名用于音频流的数据表示形式的特定类型。 | 
| 字段摘要 | |
|---|---|
| protected  boolean | bigEndian指示是以 big-endian 顺序还是 little-endian 顺序存储音频数据。 | 
| protected  int | channels使用此格式的音频信道数(单声道为 1,立体声为 2)。 | 
| protected  AudioFormat.Encoding | encoding此格式使用的音频编码技术。 | 
| protected  float | frameRate具有此格式的声音每秒播放和录制的帧数。 | 
| protected  int | frameSize每个具有此格式的声音帧包含的字节数。 | 
| protected  float | sampleRate具有此格式的声音每秒播放或录制的样本数。 | 
| protected  int | sampleSizeInBits每个具有此格式的声音样本中的位数。 | 
| 构造方法摘要 | |
|---|---|
| AudioFormat(AudioFormat.Encoding encoding, float sampleRate, int sampleSizeInBits, int channels, int frameSize, float frameRate, boolean bigEndian)构造具有给定参数的 AudioFormat。 | |
| AudioFormat(AudioFormat.Encoding encoding, float sampleRate, int sampleSizeInBits, int channels, int frameSize, float frameRate, boolean bigEndian, Map<String,Object> properties)构造具有给定参数的 AudioFormat。 | |
| AudioFormat(float sampleRate, int sampleSizeInBits, int channels, boolean signed, boolean bigEndian)构造具有线性 PCM 编码和给定参数的 AudioFormat。 | |
| 方法摘要 | |
|---|---|
|  int | getChannels()获取信道数。 | 
|  AudioFormat.Encoding | getEncoding()获取此格式声音的编码类型。 | 
|  float | getFrameRate()获取以帧每秒为单位的帧速率。 | 
|  int | getFrameSize()获取以字节为单位的帧大小。 | 
|  Object | getProperty(String key)获取键指定的属性值。 | 
|  float | getSampleRate()获取样本速率。 | 
|  int | getSampleSizeInBits()获取样本的大小。 | 
|  boolean | isBigEndian()指示是以 big-endian 顺序还是以 little-endian 顺序存储音频数据。 | 
|  boolean | matches(AudioFormat format)指示此格式是否与指定格式匹配。 | 
|  Map<String,Object> | properties()获取不可修改的属性映射。 | 
|  String | toString()返回描述格式的字符串,如:"PCM SIGNED 22050 Hz 16 bit mono big-endian"。 | 
| 从类 java.lang.Object 继承的方法 | 
|---|
| clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait | 
| 字段详细信息 | 
|---|
protected AudioFormat.Encoding encoding
protected float sampleRate
protected int sampleSizeInBits
protected int channels
protected int frameSize
protected float frameRate
protected boolean bigEndian
| 构造方法详细信息 | 
|---|
public AudioFormat(AudioFormat.Encoding encoding,
                   float sampleRate,
                   int sampleSizeInBits,
                   int channels,
                   int frameSize,
                   float frameRate,
                   boolean bigEndian) 
  AudioFormat。该编码指定用于表示数据的约定。其他参数在
    类描述中进一步解释。 
    
encoding - 音频编码技术
     sampleRate - 每秒的样本数
     sampleSizeInBits - 每个样本中的位数
     channels - 声道数(单声道 1 个,立体声 2 个,等等)
     frameSize - 每帧中的字节数
     frameRate - 每秒的帧数
     bigEndian - 指示是否以 big-endian 字节顺序存储单个样本中的数据(
      false 意味着 little-endian)。
     
public AudioFormat(AudioFormat.Encoding encoding,
                   float sampleRate,
                   int sampleSizeInBits,
                   int channels,
                   int frameSize,
                   float frameRate,
                   boolean bigEndian,
                   Map<String,Object> properties) 
  AudioFormat。该编码指定用于表示数据的约定。其他参数在
    类描述中进一步解释。 
    
encoding - 音频编码技术
     sampleRate - 每秒样本数
     sampleSizeInBits - 每个样本中的位数
     channels - 声道数(单声道为 1,立体声为 2,等等)
     frameSize - 每帧包含的字节数
     frameRate - 每秒帧数
     bigEndian - 指示是否以 big-endian 字节顺序存储数据(
      false 意味着 little-endian)
     properties - 包含格式属性的 
      Map<String,Object> 对象
     
public AudioFormat(float sampleRate,
                   int sampleSizeInBits,
                   int channels,
                   boolean signed,
                   boolean bigEndian) 
  AudioFormat。将帧大小设置为包含每个声道一个样本所需的字节数,将帧速率设置为样本速率。 
    
sampleRate - 每秒的样本数
     sampleSizeInBits - 每个样本中的位数
     channels - 声道数(单声道 1 个,立体声 2 个)
     signed - 指示数据是有符号的,还是无符号的
     bigEndian - 指示是否以 big-endian 字节顺序存储单个样本中的数据(
      false 意味着 little-endian)。
     | 方法详细信息 | 
|---|
public AudioFormat.Encoding getEncoding()
AudioFormat.Encoding.PCM_SIGNED, 
      AudioFormat.Encoding.PCM_UNSIGNED, 
      AudioFormat.Encoding.ULAW, 
      AudioFormat.Encoding.ALAW
     public float getSampleRate()
AudioSystem.isConversionSupported)或功能(如 
    DataLine.Info.getFormats)时,
    AudioSystem.NOT_SPECIFIED 的样本速率意味着可以接受任何样本速率。当没有为此音频格式定义样本速率时,还会返回 
    AudioSystem.NOT_SPECIFIED。 
    
AudioSystem.NOT_SPECIFIED
     getFrameRate(), 
      AudioSystem.NOT_SPECIFIED
     public int getSampleSizeInBits()
AudioSystem.isConversionSupported)或功能(如 
    DataLine.Info.getFormats)时,
    AudioSystem.NOT_SPECIFIED 的样本大小意味着可以接受任何样本大小。当没有为此音频格式定义样本大小时,还会返回 
    AudioSystem.NOT_SPECIFIED。 
    
AudioSystem.NOT_SPECIFIED
     getFrameSize(), 
      AudioSystem.NOT_SPECIFIED
     public int getChannels()
AudioSystem.isConversionSupported)或功能(如 
    DataLine.Info.getFormats)时,
    AudioSystem.NOT_SPECIFIED 的返回值意味着可以接受任何(正)数量的信道。 
    
AudioSystem.NOT_SPECIFIED
     AudioSystem.NOT_SPECIFIED
     public int getFrameSize()
AudioSystem.isConversionSupported)或功能(如 
    DataLine.Info.getFormats)时,
    AudioSystem.NOT_SPECIFIED 的帧大小意味着可以接受任何帧大小。当没有为此音频格式定义帧大小时,还会返回 
    AudioSystem.NOT_SPECIFIED。 
    
AudioSystem.NOT_SPECIFIED
     getSampleSizeInBits(), 
      AudioSystem.NOT_SPECIFIED
     public float getFrameRate()
AudioSystem.isConversionSupported)或功能(如 
    DataLine.Info.getFormats)时,
    AudioSystem.NOT_SPECIFIED 的帧速率意味着可以接受任何帧速率。当没有为此音频格式定义帧速率时,还会返回 
    AudioSystem.NOT_SPECIFIED。 
    
AudioSystem.NOT_SPECIFIED
     getSampleRate(), 
      AudioSystem.NOT_SPECIFIED
     public boolean isBigEndian()
true;如果按 little-endian 顺序,则返回 
      false
     public Map<String,Object> properties()
类描述进一步解释。 
    
Map<String,Object> 对象。如果无法识别任何属性,则返回空映射。
     getProperty(String)
     public Object getProperty(String key)
类描述进一步解释。 
    如果指定属性不是为特定文件格式定义的,则此方法返回 null。 
key - 所需属性的键 
     null。
     properties
     public boolean matches(AudioFormat format)
AudioSystem.NOT_SPECIFIED(表示任何采样速率均匹配),则这两种格式还必须具有相同的采样速率。如果指定格式的帧速率不为 
    AudioSystem.NOT_SPECIFIED,则二者的帧速率必须大致相等。如果样本大小大于一个字节,则字节存储顺序(big-endian 或 little-endian)必须匹配。 
    
format - 要测试是否匹配的格式 
     true;否则,返回 
      false。
     public String toString()
Object 中的 
      toString
     | 
 | JavaTM Platform Standard Ed. 6 | |||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | |||||||||
版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。