Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

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 ( String path )


枚举

enum Format:

Format FORMAT_8_BITS = 0

8 位音频编解码器。

Format FORMAT_16_BITS = 1

16 位音频编解码器。

Format FORMAT_IMA_ADPCM = 2

音频使用 IMA ADPCM 进行压缩。


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。


Format format = 0

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


int loop_begin = 0

  • void set_loop_begin ( int value )

  • int get_loop_begin ( )

循环起始点(相对于样本开始的样本数)。如果 WAV 文件中存在此信息,则将自动导入。


int loop_end = 0

  • void set_loop_end ( int value )

  • int get_loop_end ( )

循环结束点(相对于样本开始的样本数)。如果 WAV 文件中存在此信息,则将自动导入。


LoopMode loop_mode = 0

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


int mix_rate = 44100

  • void set_mix_rate ( int value )

  • int get_mix_rate ( )

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

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

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


bool stereo = false

  • void set_stereo ( bool value )

  • bool is_stereo ( )

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


方法说明

Error save_to_wav ( String path )

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

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