AudioStreamWAV

继承: AudioStream < Resource < RefCounted < Object

存储从 WAV 文件加载的音频数据。

描述

AudioStreamWAV 存储从 WAV 文件加载的声音样本。要播放存储的声音,请使用 AudioStreamPlayer(用于非空间定位音频)或 AudioStreamPlayer2D/AudioStreamPlayer3D(用于空间定位音频)。声音可以循环播放。

这个类还可用于存储动态生成的 PCM 音频数据。另请参阅 AudioStreamGenerator 以了解程序化音频生成。

教程

属性

PackedByteArray

data

PackedByteArray()

Format

format

0

int

loop_begin

0

int

loop_end

0

LoopMode

loop_mode

0

int

mix_rate

44100

bool

stereo

false

方法

Error

save_to_wav(path: String)


枚举

enum Format: 🔗

Format FORMAT_8_BITS = 0

8 位音频编解码器。

Format FORMAT_16_BITS = 1

16 位音频编解码器。

Format FORMAT_IMA_ADPCM = 2

音频使用 IMA ADPCM 进行压缩。

Format FORMAT_QOA = 3

音频按照 QOA 进行压缩(Quite OK Audio)。


enum LoopMode: 🔗

LoopMode LOOP_DISABLED = 0

音频不循环。

LoopMode LOOP_FORWARD = 1

音频在 loop_beginloop_end 之间循环数据,仅向前播放。

LoopMode LOOP_PINGPONG = 2

音频在 loop_beginloop_end 之间循环数据,来回播放。

LoopMode LOOP_BACKWARD = 3

音频在 loop_beginloop_end 之间循环数据,仅向后播放。


属性说明

PackedByteArray data = PackedByteArray() 🔗

包含以字节为单位的音频数据。

注意:此属性需要有符号的 PCM8 数据。要将无符号的 PCM8 转换为有符号的 PCM8,需要从每个字节中减去 128。

Note: The returned array is copied and any changes to it will not update the original property value. See PackedByteArray for more details.


Format format = 0 🔗

音频格式。取值见 Format 常量。


int loop_begin = 0 🔗

  • void set_loop_begin(value: int)

  • int get_loop_begin()

The loop start point (in number of samples, relative to the beginning of the stream). This information will be imported automatically from the WAV file if present.


int loop_end = 0 🔗

  • void set_loop_end(value: int)

  • int get_loop_end()

The loop end point (in number of samples, relative to the beginning of the stream). This information will be imported automatically from the WAV file if present.


LoopMode loop_mode = 0 🔗

循环模式。如果 WAV 文件中存在此信息,则将自动导入。取值请参阅 LoopMode 常量。


int mix_rate = 44100 🔗

  • void set_mix_rate(value: int)

  • int get_mix_rate()

混合这个音频的采样率。更高的数值需要更多的存储空间,但会带来更好的质量。

在游戏中,常用的采样率有 110251600022050320004410048000

根据奈奎斯特–香农采样定理,当超过 40000 赫兹时,人类的听觉没有质量上的差别(因为大多数人只能听到 ~20000 赫兹,往往更少)。如果你要使用语音等音高较低的声音,则可以使用 3200022050 等较低的采样率,不会降低质量。


bool stereo = false 🔗

  • void set_stereo(value: bool)

  • bool is_stereo()

如果为 true,则音频为立体声。


方法说明

Error save_to_wav(path: String) 🔗

将 AudioStreamWAV 作为 WAV 文件保存到 path。无法保存 IMA ADPCM 或 QOA 格式的样本。

注意:如果缺少 .wav 扩展名,则会自动将其追加到 path