|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
public interface TargetDataLine
目標資料行是可以從中讀取音頻資料的某種型別的
。最常見的範例是從音頻捕獲設備獲取其資料的資料行。(該設備被實作為寫入目標資料行的混頻器。)
DataLine
注意,此介面的命名約定反映了行及其混頻器之間的關係。從應用程序的角度來看,目標資料行可以充當音頻資料的源。
可以通過使用適當
物件調用 DataLine.Info
Mixer
的
方法從混頻器獲得目標資料行。
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。