Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
AudioEffectCapture
继承: AudioEffect < Resource < RefCounted < Object
实时公开来自音频总线的音频采样,使其可作为数据进行访问。
描述
将来自所连接音频总线的所有音频帧,也称为“样本”或“音频样本”,复制到其内部环形缓冲区中。该效果不会对音频内容进行任何修改。它可用于存储实时音频数据以供回放,也可用于生成实时音频可视化效果,如示波器显示。
应用程序代码应使用 get_buffer() 从该环形缓冲区中消耗这些音频帧,并根据需要对其进行处理,例如从 AudioStreamMicrophone 捕获数据,实现应用程序定义的效果,或通过网络传输音频。从麦克风捕获音频数据时,样本格式将为立体声 32 位浮点 PCM。
与 AudioEffectRecord 不同,该效果仅返回原始音频样本,而不是将它们编码到 AudioStream 中。
教程
属性
|
方法
can_get_buffer(frames: int) const |
|
void |
|
get_buffer(frames: int) |
|
get_buffer_length_frames() const |
|
get_discarded_frames() const |
|
get_frames_available() const |
|
get_pushed_frames() const |
属性说明
内部环形缓冲区的长度,单位为秒。数值越大,数据保留的时间就越长,但同时也需要占用更多的内存。该值的范围可以在 0.01 到 10 之间。
注意: 如果(该缓冲区)已经初始化,设置缓冲区长度将不会生效。
方法说明
bool can_get_buffer(frames: int) const 🔗
如果内部环形缓冲区中至少有 frames 个样本可供读取,则返回 true。
void clear_buffer() 🔗
清空内部环形缓冲。
注意:捕获时调用这个方法可能造成样本的丢失,导致播放时产生噪音。
PackedVector2Array get_buffer(frames: int) 🔗
从内部环形缓冲区获取后续 frames 个样本。
如果足够的话,则返回一个恰好包含 frames 个样本的 PackedVector2Array;如果可用数据不足,则返回一个空的 PackedVector2Array。
样本是有符号浮点 PCM,在 -1 和 1 之间。如果想要作为 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 🔗
返回从音频总线插入的样本的数量。