AudioStreamWAV

继承: AudioStream < Resource < RefCounted < Object

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

描述

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

此类还可用于存储dynamically-generatedPCM音频数据。

属性

方法

AudioStreamWAV

load_from_buffer(stream_data: PackedByteArray, options: Dictionary = {}) static

AudioStreamWAV

load_from_file(path: String, options: Dictionary = {}) static

Error

save_to_wav(path: String)


枚举

enum Format: 🔗

Format FORMAT_8_BITS = 0

8位PCM音频编解码器。

Format FORMAT_16_BITS = 1

16位PCM音频编解码器。

Format FORMAT_IMA_ADPCM = 2

音频作为IMA ADPCM进行有损压缩。

Format FORMAT_QOA = 3

音频被有损压缩为相当好的音频


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() 🔗

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

注意:如果format设置为FORMAT_8_BITS,则此属性需要有符号的8位PCM数据。要从无符号的8位PCM转换,请从每个字节中减去128。

注意:如果format设置为FORMAT_QOA,则此属性需要来自完整QOA文件的数据。

注意: 返回的数组是被 复制 的,对它的任何修改都不会更新原始属性的值。有关更多详细信息,请参阅 PackedByteArray


Format format = 0 🔗

音频格式。有关值,请参阅Format常量。


int loop_begin = 0 🔗

  • void set_loop_begin(value: int)

  • int get_loop_begin()

循环起始点(以样本数为单位,相对于流的开头)。


int loop_end = 0 🔗

  • void set_loop_end(value: int)

  • int get_loop_end()

循环终端(以样本数量,相对于流的开始)。


LoopMode loop_mode = 0 🔗

循环模式。有关值,请参阅LoopMode常量。


int mix_rate = 44100 🔗

  • void set_mix_rate(value: int)

  • int get_mix_rate()

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

在应用中,使用的常见采样率是110251600022050320004410048000

根据奈奎斯特-香农采样定理,当超过40,000赫兹时,人类的听力没有质量差异(因为大多数人只能听到约20,000赫兹,通常更少)。如果您使用低音调的声音,例如人声,较低的采样率,例如3200022050可以在质量没有损失的情况下使用。


bool stereo = false 🔗

  • void set_stereo(value: bool)

  • bool is_stereo()

如果true,则音频是立体声的。


方法说明

AudioStreamWAV load_from_buffer(stream_data: PackedByteArray, options: Dictionary = {}) static 🔗

从给定的缓冲区创建一个新的AudioStreamWAV实例。缓冲区必须包含WAV数据。

options的键和值与ResourceImporterWAV的属性匹配。options的用法与load_from_file()相同。


AudioStreamWAV load_from_file(path: String, options: Dictionary = {}) static 🔗

从给定的文件路径创建一个新的AudioStreamWAV实例。该文件必须为WAV格式。

options的键和值与ResourceImporterWAV的属性匹配。

示例:加载第一个拖放的WAV文件并播放它:

@onready var audio_player = $AudioStreamPlayer

func _ready():
    get_window().files_dropped.connect(_on_files_dropped)

func _on_files_dropped(files):
    if files[0].get_extension() == "wav":
        audio_player.stream = AudioStreamWAV.load_from_file(files[0], {
                "force/max_rate": true,
                "force/max_rate_hz": 11025
            })
        audio_player.play()

Error save_to_wav(path: String) 🔗

将AudioStreamWAV作为WAV文件保存到path。无法保存IMA ADPCM或相当好的音频格式的样本。

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