|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
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 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)。