| JavaTM 2 Platform Standard Ed. 6 | |||||||||
上一个类 下一个类 | 框架 无框架 所有类 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
javax.sound.sampled
类 AudioFormat
java.lang.Objectjavax.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 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 |
字段详细信息 |
---|
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)。
-
AudioFormat
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>
对象
从以下版本开始:
- 1.5
-
AudioFormat
public AudioFormat(float sampleRate, int sampleSizeInBits, int channels, boolean signed, boolean bigEndian)
-
构造具有线性 PCM 编码和给定参数的
AudioFormat
。将帧大小设置为包含每个声道一个样本所需的字节数,将帧速率设置为样本速率。-
参数:
-
sampleRate
- 每秒的样本数 -
sampleSizeInBits
- 每个样本中的位数 -
channels
- 声道数(单声道 1 个,立体声 2 个) -
signed
- 指示数据是有符号的,还是无符号的 -
bigEndian
- 指示是否以 big-endian 字节顺序存储单个样本中的数据(false
意味着 little-endian)。
-
方法详细信息 |
---|
getEncoding
public AudioFormat.Encoding getEncoding()
- 获取此格式声音的编码类型。
getSampleRate
public float getSampleRate()
-
获取样本速率。对于压缩格式,返回值是未压缩音频数据的样本速率。当此 AudioFormat 用于查询(如
AudioSystem.isConversionSupported
)或功能(如DataLine.Info.getFormats
)时,AudioSystem.NOT_SPECIFIED
的样本速率意味着可以接受任何样本速率。当没有为此音频格式定义样本速率时,还会返回AudioSystem.NOT_SPECIFIED
。 -
-
返回:
-
每秒样本数,或
AudioSystem.NOT_SPECIFIED
另请参见:
-
getFrameRate()
,AudioSystem.NOT_SPECIFIED
-
每秒样本数,或
getSampleSizeInBits
public int getSampleSizeInBits()
-
获取样本的大小。对于压缩格式,返回值是未压缩音频数据的样本大小。当此 AudioFormat 用于查询(如
AudioSystem.isConversionSupported
)或功能(如DataLine.Info.getFormats
)时,AudioSystem.NOT_SPECIFIED
的样本大小意味着可以接受任何样本大小。当没有为此音频格式定义样本大小时,还会返回AudioSystem.NOT_SPECIFIED
。 -
-
返回:
-
每个样本中的位数,或
AudioSystem.NOT_SPECIFIED
另请参见:
-
getFrameSize()
,AudioSystem.NOT_SPECIFIED
-
每个样本中的位数,或
getChannels
public int getChannels()
-
获取信道数。当此 AudioFormat 用于查询(如
AudioSystem.isConversionSupported
)或功能(如DataLine.Info.getFormats
)时,AudioSystem.NOT_SPECIFIED
的返回值意味着可以接受任何(正)数量的信道。 -
-
返回:
-
信道数(单声道为 1,立体声为 2,等等),或
AudioSystem.NOT_SPECIFIED
另请参见:
-
AudioSystem.NOT_SPECIFIED
-
信道数(单声道为 1,立体声为 2,等等),或
getFrameSize
public int getFrameSize()
-
获取以字节为单位的帧大小。当此 AudioFormat 用于查询(如
AudioSystem.isConversionSupported
)或功能(如DataLine.Info.getFormats
)时,AudioSystem.NOT_SPECIFIED
的帧大小意味着可以接受任何帧大小。当没有为此音频格式定义帧大小时,还会返回AudioSystem.NOT_SPECIFIED
。 -
-
返回:
-
每帧字节数,或
AudioSystem.NOT_SPECIFIED
另请参见:
-
getSampleSizeInBits()
,AudioSystem.NOT_SPECIFIED
-
每帧字节数,或
getFrameRate
public float getFrameRate()
-
获取以帧每秒为单位的帧速率。当此 AudioFormat 用于查询(如
AudioSystem.isConversionSupported
)或功能(如DataLine.Info.getFormats
)时,AudioSystem.NOT_SPECIFIED
的帧速率意味着可以接受任何帧速率。当没有为此音频格式定义帧速率时,还会返回AudioSystem.NOT_SPECIFIED
。 -
-
返回:
-
每秒帧数,或
AudioSystem.NOT_SPECIFIED
另请参见:
-
getSampleRate()
,AudioSystem.NOT_SPECIFIED
-
每秒帧数,或
isBigEndian
public boolean isBigEndian()
- 指示是以 big-endian 顺序还是以 little-endian 顺序存储音频数据。如果样本大小不超过一个字节,则返回值没有实际意义。
-
-
返回:
-
如果按 big-endian 字节顺序存储数据,则返回
true
;如果按 little-endian 顺序,则返回false
-
如果按 big-endian 字节顺序存储数据,则返回
properties
public Map<String,Object> properties()
-
获取不可修改的属性映射。属性的概念在
类描述
进一步解释。 -
-
返回:
-
包含所有属性的
Map<String,Object>
对象。如果无法识别任何属性,则返回空映射。
从以下版本开始:
- 1.5 另请参见:
-
getProperty(String)
-
包含所有属性的
getProperty
public Object getProperty(String key)
-
获取键指定的属性值。属性的概念在
类描述
进一步解释。如果指定属性不是为特定文件格式定义的,则此方法返回
null
。 -
-
参数:
-
key
- 所需属性的键
返回:
-
具有指定键的属性值;如果属性不存在,则返回
null
。
从以下版本开始:
- 1.5 另请参见:
-
properties
-
matches
public boolean matches(AudioFormat format)
-
指示此格式是否与指定格式匹配。所谓匹配是指两种格式的编码、信道数、每个样本的位数以及每帧包含的字节数均必须相同。如果指定格式的采样速率值不为
AudioSystem.NOT_SPECIFIED
(表示任何采样速率均匹配),则这两种格式还必须具有相同的采样速率。如果指定格式的帧速率不为AudioSystem.NOT_SPECIFIED
,则二者的帧速率必须大致相等。如果样本大小大于一个字节,则字节存储顺序(big-endian 或 little-endian)必须匹配。 -
-
参数:
-
format
- 要测试是否匹配的格式
返回:
-
如果此格式与指定格式匹配,则返回
true
;否则,返回false
。
-
toString
public String toString()
- 返回描述格式的字符串,如:"PCM SIGNED 22050 Hz 16 bit mono big-endian"。字符串的内容可能会因 Java Sound 实现的不同而不同。
-
-
返回:
- 描述格式参数的字符串
| JavaTM 2 Platform Standard Ed. 6 | |||||||||
上一个类 下一个类 | 框架 无框架 所有类 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java 2 SDK SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。
版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。