|
JavaTM Platform Standard Ed. 6 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.lang.Object javax.sound.sampled.AudioFormat
public class AudioFormat
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 |
鼓励服务提供者(插件)的供应商寻找关于其他已经在第三方插件中建立的属性的信息,并遵循相同的约定。
DataLine.getFormat()
,
AudioInputStream.getFormat()
,
AudioFileFormat
,
FormatConversionProvider
嵌套类摘要 | |
---|---|
static class |
AudioFormat.Encoding
Encoding 类命名用于音频流的数据表示形式的特定类型。 |
字段摘要 | |
---|---|
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. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。