|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
| 上一個類別 下一個類別 | 框架 無框架 | |||||||||
| 摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 | |||||||||
public interface TargetDataLine
目標資料行是可以從中讀取音頻資料的某種型別的 。最常見的範例是從音頻捕獲設備獲取其資料的資料行。(該設備被實作為寫入目標資料行的混頻器。)
DataLine
注意,此介面的命名約定反映了行及其混頻器之間的關係。從應用程序的角度來看,目標資料行可以充當音頻資料的源。
可以通過使用適當 物件調用 DataLine.InfoMixer 的 方法從混頻器獲得目標資料行。
getLine
該 TargetDataLine 介面提供從目標資料行的緩衝區讀取所捕獲資料的方法。錄製音頻的應用程序應該以足夠快的速度從該目標資料行讀取資料,以防緩衝區溢位,溢位可能導致單擊時所捕獲資料中出現可感知的間斷。應用程序可以使用 DataLine 介面中定義的 方法來確定資料行緩衝區中已列隊的當前資料量。如果緩衝區發生溢位,則時間最長的列隊資料被丟棄並由新的資料替換。
available
Mixer,
DataLine,
SourceDataLine| 巢狀類別摘要 |
|---|
| 從介面 javax.sound.sampled.DataLine 繼承的巢狀類別/介面 |
|---|
DataLine.Info |
| 方法摘要 | |
|---|---|
void |
open(AudioFormat format)
打開具有指定格式的行,這樣可使行獲得所有所需的系統資源並變得可操作。 |
void |
open(AudioFormat format,
int bufferSize)
打開具有指定格式和請求緩衝區大小的行,這樣可使行獲得所有所需的系統資源並變得可操作。 |
int |
read(byte[] b,
int off,
int len)
從資料行的輸入緩衝區讀取音頻資料。 |
| 從介面 javax.sound.sampled.DataLine 繼承的方法 |
|---|
available, drain, flush, getBufferSize, getFormat, getFramePosition, getLevel, getLongFramePosition, getMicrosecondPosition, isActive, isRunning, start, stop |
| 從介面 javax.sound.sampled.Line 繼承的方法 |
|---|
addLineListener, close, getControl, getControls, getLineInfo, isControlSupported, isOpen, open, removeLineListener |
| 方法詳細資訊 |
|---|
void open(AudioFormat format,
int bufferSize)
throws LineUnavailableException
以位元組為單位指定緩衝區大小,但該大小必須表示整數形式的樣本幀數。使用不滿足此要求的所請求緩衝區大小調用此方法可能導致 IllegalArgumentException。已打開的行實際緩衝區大小可能與請求的緩衝區大小不同。實際設置的值可以通過後續調用 來查詢
DataLine.getBufferSize()
如果此操作成功,則將該行標記為 open,並向行的偵聽器指派一個 事件。
OPEN
在已經打開的行上調用此方法是非法的,並且可能導致 IllegalStateException。
有些行一旦關閉就不能重新打開。試圖重新打開這樣的行總是導致 LineUnavailableException。
format - 所需的音頻格式bufferSize - 所需的緩衝區大小,以位元組為單位。
LineUnavailableException - 如果由於資源限制而無法打開行
IllegalArgumentException - 如果緩衝區大小不表示整數形式的樣本幀數,或者 format 未完全指定或是無效的
IllegalStateException - 如果行已經打開
SecurityException - 如果由於安全限制而無法打開行open(AudioFormat),
Line.open(),
Line.close(),
Line.isOpen(),
LineEvent
void open(AudioFormat format)
throws LineUnavailableException
該實作選擇緩衝區大小,此大小是以位元組為單位來測量的,但它不包括整數形式的樣本幀數。系統選擇的緩衝區大小可以通過後續調用 來查詢
DataLine.getBufferSize()
如果此操作成功,則將該行標記為 open,並向行的偵聽器指派一個 事件。
OPEN
在已經打開的行上調用此方法是非法的,並且可能導致 IllegalStateException。
有些行一旦關閉就無法重新打開。試圖重新打開這樣的行總是導致 LineUnavailableException。
format - 所需音頻格式
LineUnavailableException - 如果由於資源限制而無法打開行
IllegalArgumentException - 如果 format 未完全指定或是無效的
IllegalStateException - 如果行已經打開
SecurityException - 如果由於安全限制而無法打開行open(AudioFormat, int),
Line.open(),
Line.close(),
Line.isOpen(),
LineEvent
int read(byte[] b,
int off,
int len)
可以使用 DataLine 介面的 方法確認可不受阻塞地讀取的位元組數。(在保證可以不受阻塞地讀取此位元組數時,不保證試圖讀取其他資料不會發生阻塞。)
available
要讀取的位元組數必須表示整數形式的樣本幀數,比如:
[ bytes read ] % [frame size in bytes ] == 0
b - 將在此方法返回時包含所請求輸入資料的位元組陣列off - 陣列開始處的偏移量,以位元組為單位len - 請求的讀取位元組數
IllegalArgumentException - 如果所請求的位元組數不表示整數形式的樣本幀數,或者 len 為負。
ArrayIndexOutOfBoundsException - 如果 off 為負,或者 off+len 大於陣列 b 的長度。SourceDataLine.write(byte[], int, int),
DataLine.available()
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
| 上一個類別 下一個類別 | 框架 無框架 | |||||||||
| 摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 | |||||||||
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。