所有类


javax.sound.sampled
类 AudioFormat

java.lang.Object
  继承者 javax.sound.sampled.AudioFormat

public class AudioFormat
   
   
   
   
   
extends Object

AudioFormat 是在声音流中指定特定数据安排的类。通过检查以音频格式存储的信息,可以发现在二进制声音数据中解释位的方式。

每个数据行都有与其数据流相关的音频格式。源(回放)数据行的音频格式指示数据行期望接收输出的数据类型。对于目标(捕获)数据行,音频格式指定可以从该行读取的数据种类。当然,声音文件也有音频格式。AudioFileFormat 类封装 AudioFormat 以及其他特定于文件的信息。类似地,AudioInputStream 具有 AudioFormat

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

鼓励服务提供程序(插件)的供应商寻找关于其他已经在第三方插件中建立的属性的信息,并遵循相同的约定。

从以下版本开始:
1.3
另请参见:
DataLine.getFormat(), AudioInputStream.getFormat(), AudioFileFormat, FormatConversionProvider

嵌套类摘要
static classAudioFormat.Encoding
          Encoding 类命名用于音频流的数据表示形式的特定类型。
 
字段摘要
protected  booleanbigEndian
          指示是以 big-endian 顺序还是 little-endian 顺序存储音频数据。
protected  intchannels
          使用此格式的音频信道数(单声道为 1,立体声为 2)。
protected  AudioFormat.Encodingencoding
          此格式使用的音频编码技术。
protected  floatframeRate
          具有此格式的声音每秒播放和录制的帧数。
protected  intframeSize
          每个具有此格式的声音帧包含的字节数。
protected  floatsampleRate
          具有此格式的声音每秒播放或录制的样本数。
protected  intsampleSizeInBits
          每个具有此格式的声音样本中的位数。
 
构造方法摘要
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
 
方法摘要
 intgetChannels()
          获取信道数。
 AudioFormat.EncodinggetEncoding()
          获取此格式声音的编码类型。
 floatgetFrameRate()
          获取以帧每秒为单位的帧速率。
 intgetFrameSize()
          获取以字节为单位的帧大小。
 ObjectgetProperty(String key)
          获取键指定的属性值。
 floatgetSampleRate()
          获取样本速率。
 intgetSampleSizeInBits()
          获取样本的大小。
 booleanisBigEndian()
          指示是以 big-endian 顺序还是以 little-endian 顺序存储音频数据。
 booleanmatches(AudioFormat format)
          指示此格式是否与指定格式匹配。
 Map<String,Object>properties()
          获取不可修改的属性映射。
 StringtoString()
          返回描述格式的字符串,如:"PCM SIGNED 22050 Hz 16 bit mono big-endian"。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

字段详细信息

encoding

protected AudioFormat.Encoding encoding
此格式使用的音频编码技术。


sampleRate

protected float sampleRate
具有此格式的声音每秒播放或录制的样本数。


sampleSizeInBits

protected int sampleSizeInBits
每个具有此格式的声音样本中的位数。


channels

protected int channels
使用此格式的音频信道数(单声道为 1,立体声为 2)。


frameSize

protected int frameSize
每个具有此格式的声音帧包含的字节数。


frameRate

protected float frameRate
具有此格式的声音每秒播放和录制的帧数。


bigEndian

protected boolean bigEndian
指示是以 big-endian 顺序还是 little-endian 顺序存储音频数据。

构造方法详细信息

AudioFormat

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)。