AudioEffectCapture

繼承: AudioEffect < Resource < RefCounted < Object

即時擷取音訊匯流排的音訊。

說明

AudioEffectCapture 會將附加匯流排的所有音訊影格複製到其內部環形緩衝區。

程式可透過 get_buffer() 從該緩衝區取出影格並自行處理,例如擷取 AudioStreamMicrophone 資料、實作自訂效果或透過網路傳輸。從麥克風擷取時,樣本格式為雙聲道 32 位元浮點 PCM。

AudioEffectRecord 不同,本效果僅回傳原始樣本,不會封裝成 AudioStream

教學

屬性

float

buffer_length

0.1

方法

bool

can_get_buffer(frames: int) const

void

clear_buffer()

PackedVector2Array

get_buffer(frames: int)

int

get_buffer_length_frames() const

int

get_discarded_frames() const

int

get_frames_available() const

int

get_pushed_frames() const


屬性說明

float buffer_length = 0.1 🔗

  • void set_buffer_length(value: float)

  • float get_buffer_length()

內部環形緩衝區長度(秒)。若已初始化,重新設定將無效。


方法說明

bool can_get_buffer(frames: int) const 🔗

若內部環形緩衝區中至少有 frames 個影格可讀,則回傳 true


void clear_buffer() 🔗

清空內部環形緩衝區。

注意: 擷取過程中呼叫此方法可能導致樣本遺失,播放時會出現爆音。


PackedVector2Array get_buffer(frames: int) 🔗

自環形緩衝區取出接下來的 frames 個音訊樣本。

若資料足夠,回傳含有精確 frames 個樣本的 PackedVector2Array;否則回傳空陣列。

樣本為範圍 -11 的有號浮點 PCM,若欲轉為 8 或 16 位整數,需自行縮放(例如 v = 0x7fff * samples[0].x)。


int get_buffer_length_frames() const 🔗

回傳內部環形緩衝區的總大小(影格數)。


int get_discarded_frames() const 🔗

回傳因緩衝區已滿而被丟棄的影格數。


int get_frames_available() const 🔗

回傳可透過 get_buffer() 讀取的影格數。


int get_pushed_frames() const 🔗

回傳自音訊匯流排寫入的影格總數。