|
JavaTM 2 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.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.ALAWpublic float getSampleRate()
AudioSystem.isConversionSupported)或功能(如 DataLine.Info.getFormats)時,AudioSystem.NOT_SPECIFIED 的樣本速率意味著可以接受任何樣本速率。當沒有為此音頻格式定義樣本速率時,還會返回 AudioSystem.NOT_SPECIFIED。
AudioSystem.NOT_SPECIFIEDgetFrameRate(),
AudioSystem.NOT_SPECIFIEDpublic int getSampleSizeInBits()
AudioSystem.isConversionSupported)或功能(如 DataLine.Info.getFormats)時,AudioSystem.NOT_SPECIFIED 的樣本大小意味著可以接受任何樣本大小。當沒有為此音頻格式定義樣本大小時,還會返回 AudioSystem.NOT_SPECIFIED。
AudioSystem.NOT_SPECIFIEDgetFrameSize(),
AudioSystem.NOT_SPECIFIEDpublic int getChannels()
AudioSystem.isConversionSupported)或功能(如 DataLine.Info.getFormats)時,AudioSystem.NOT_SPECIFIED 的返回值意味著可以接受任何(正)數量的通道。
AudioSystem.NOT_SPECIFIEDAudioSystem.NOT_SPECIFIEDpublic int getFrameSize()
AudioSystem.isConversionSupported)或功能(如 DataLine.Info.getFormats)時,AudioSystem.NOT_SPECIFIED 的幀大小意味著可以接受任何幀大小。當沒有為此音頻格式定義幀大小時,還會返回 AudioSystem.NOT_SPECIFIED。
AudioSystem.NOT_SPECIFIEDgetSampleSizeInBits(),
AudioSystem.NOT_SPECIFIEDpublic float getFrameRate()
AudioSystem.isConversionSupported)或功能(如 DataLine.Info.getFormats)時,AudioSystem.NOT_SPECIFIED 的幀速率意味著可以接受任何幀速率。當沒有為此音頻格式定義幀速率時,還會返回 AudioSystem.NOT_SPECIFIED。
AudioSystem.NOT_SPECIFIEDgetSampleRate(),
AudioSystem.NOT_SPECIFIEDpublic boolean isBigEndian()
true;如果按 little-endian 順序,則返回 falsepublic Map<String,Object> properties()
類別描述進一步解釋。
Map<String,Object> 物件。如果無法識別任何屬性,則返回空映射。getProperty(String)public Object getProperty(String key)
類別描述進一步解釋。
如果指定屬性不是為特定檔案格式定義的,則此方法返回 null。
key - 所需屬性的鍵
null。propertiespublic boolean matches(AudioFormat format)
AudioSystem.NOT_SPECIFIED(表示任何採樣速率均比對),則這兩種格式還必須具有相同的採樣速率。如果指定格式的幀速率不為 AudioSystem.NOT_SPECIFIED,則二者的幀速率必須大致相等。如果樣本大小大於一個位元組,則位元組存儲順序(big-endian 或 little-endian)必須比對。
format - 要測試是否比對的格式
true;否則,返回 false。public String toString()
Object 中的 toString
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
| 上一個類別 下一個類別 | 框架 無框架 | |||||||||
| 摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 | |||||||||
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。