Up to date

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

AudioServer

继承: Object

低级音频访问的服务器接口。

描述

AudioServer 是用于音频访问的底层服务器接口。它负责创建样本数据(可播放的音频)以及通过语音接口进行播放。

教程

属性

int

bus_count

1

String

input_device

"Default"

String

output_device

"Default"

float

playback_speed_scale

1.0

方法

void

add_bus ( int at_position=-1 )

void

add_bus_effect ( int bus_idx, AudioEffect effect, int at_position=-1 )

AudioBusLayout

generate_bus_layout ( ) const

int

get_bus_channels ( int bus_idx ) const

AudioEffect

get_bus_effect ( int bus_idx, int effect_idx )

int

get_bus_effect_count ( int bus_idx )

AudioEffectInstance

get_bus_effect_instance ( int bus_idx, int effect_idx, int channel=0 )

int

get_bus_index ( StringName bus_name ) const

String

get_bus_name ( int bus_idx ) const

float

get_bus_peak_volume_left_db ( int bus_idx, int channel ) const

float

get_bus_peak_volume_right_db ( int bus_idx, int channel ) const

StringName

get_bus_send ( int bus_idx ) const

float

get_bus_volume_db ( int bus_idx ) const

PackedStringArray

get_input_device_list ( )

float

get_mix_rate ( ) const

PackedStringArray

get_output_device_list ( )

float

get_output_latency ( ) const

SpeakerMode

get_speaker_mode ( ) const

float

get_time_since_last_mix ( ) const

float

get_time_to_next_mix ( ) const

bool

is_bus_bypassing_effects ( int bus_idx ) const

bool

is_bus_effect_enabled ( int bus_idx, int effect_idx ) const

bool

is_bus_mute ( int bus_idx ) const

bool

is_bus_solo ( int bus_idx ) const

void

lock ( )

void

move_bus ( int index, int to_index )

void

remove_bus ( int index )

void

remove_bus_effect ( int bus_idx, int effect_idx )

void

set_bus_bypass_effects ( int bus_idx, bool enable )

void

set_bus_effect_enabled ( int bus_idx, int effect_idx, bool enabled )

void

set_bus_layout ( AudioBusLayout bus_layout )

void

set_bus_mute ( int bus_idx, bool enable )

void

set_bus_name ( int bus_idx, String name )

void

set_bus_send ( int bus_idx, StringName send )

void

set_bus_solo ( int bus_idx, bool enable )

void

set_bus_volume_db ( int bus_idx, float volume_db )

void

set_enable_tagging_used_audio_streams ( bool enable )

void

swap_bus_effects ( int bus_idx, int effect_idx, int by_effect_idx )

void

unlock ( )


信号

bus_layout_changed ( )

添加、修改、删除音频总线时发出。


bus_renamed ( int bus_index, StringName old_name, StringName new_name )

当索引为 bus_index 的音频总线的名称从 old_name 更改为 new_name 时发出。


枚举

enum SpeakerMode:

SpeakerMode SPEAKER_MODE_STEREO = 0

检测到两个或更少的扬声器。

SpeakerMode SPEAKER_SURROUND_31 = 1

检测到 3.1 声道环绕声设置。

SpeakerMode SPEAKER_SURROUND_51 = 2

检测到 5.1 声道环绕声设置。

SpeakerMode SPEAKER_SURROUND_71 = 3

检测到 7.1 声道环绕声设置。


属性说明

int bus_count = 1

  • void set_bus_count ( int value )

  • int get_bus_count ( )

可用音频总线的数量。


String input_device = "Default"

  • void set_input_device ( String value )

  • String get_input_device ( )

当前音频输入设备的名称(见 get_input_device_list)。在具有多个音频输入(例如模拟、USB、HDMI 音频)的系统中,可用于选择音频输入设备。为 "Default" 时会从系统默认的音频输入录制音频。如果设置了无效的设备名称,该值会被恢复为 "Default"

注意:ProjectSettings.audio/driver/enable_input 必须为 true 音频输入才能正常工作。另请参阅该设置项的描述,了解权限和操作系统隐私设置相关的说明。


String output_device = "Default"

  • void set_output_device ( String value )

  • String get_output_device ( )

当前音频输出设备的名称(见 get_output_device_list)。在具有多个音频输出(例如模拟、USB、HDMI 音频)的系统中,可用于选择音频输出设备。为 "Default" 时会从系统默认的音频输出播放音频。如果设置了无效的设备名称,该值会被恢复为 "Default"


float playback_speed_scale = 1.0

  • void set_playback_speed_scale ( float value )

  • float get_playback_speed_scale ( )

音频播放的缩放速率(即将其设置为 0.5 将使音频以其一半的速度播放)。


方法说明

void add_bus ( int at_position=-1 )

at_position 处添加一条总线。


void add_bus_effect ( int bus_idx, AudioEffect effect, int at_position=-1 )

为在 at_position 处索引为 bus_idx 的总线添加 AudioEffect 效果。


AudioBusLayout generate_bus_layout ( ) const

使用可用的总线和效果来生成 AudioBusLayout


int get_bus_channels ( int bus_idx ) const

返回索引为 bus_idx 的总线的通道数。


AudioEffect get_bus_effect ( int bus_idx, int effect_idx )

返回索引为 bus_idx 的总线中位于 effect_idxAudioEffect


int get_bus_effect_count ( int bus_idx )

返回索引为 bus_idx 的总线上的效果数。


AudioEffectInstance get_bus_effect_instance ( int bus_idx, int effect_idx, int channel=0 )

返回分配给给定总线和效果索引(以及可选的通道)的AudioEffectInstance


int get_bus_index ( StringName bus_name ) const

返回名称为 bus_name 的总线的索引。如果不存在指定名称的总线,则返回 -1


String get_bus_name ( int bus_idx ) const

返回索引为 bus_idx 的总线的名称。


float get_bus_peak_volume_left_db ( int bus_idx, int channel ) const

返回总线索引为 bus_idx 且通道索引为 channel 处的左扬声器的峰值音量。


float get_bus_peak_volume_right_db ( int bus_idx, int channel ) const

返回总线索引为 bus_idx 且通道索引为 channel 处的右扬声器的峰值音量。


StringName get_bus_send ( int bus_idx ) const

返回索引为 bus_idx 的总线的发送目标总线的名称。


float get_bus_volume_db ( int bus_idx ) const

返回索引为 bus_idx 的总线的音量,单位为 dB。


PackedStringArray get_input_device_list ( )

返回系统中检测到的所有音频输入设备的名称。

注意:ProjectSettings.audio/driver/enable_input 必须为 true 音频输入才能正常工作。另请参阅该设置的说明,了解与权限和操作系统隐私设置相关的注意事项。


float get_mix_rate ( ) const

返回 AudioServer 输出的采样率。


PackedStringArray get_output_device_list ( )

返回系统中检测到的所有音频输出设备的名称。


float get_output_latency ( ) const

返回音频驱动的实际输出延迟。基于 ProjectSettings.audio/driver/output_latency,但实际的返回值取决于操作系统和音频驱动。

注意:可能开销较大;不建议每帧都调用 get_output_latency


SpeakerMode get_speaker_mode ( ) const

返回扬声器的配置。


float get_time_since_last_mix ( ) const

返回自上次混合以来的相对时间。


float get_time_to_next_mix ( ) const

返回下一次混合之前的相对时间。


bool is_bus_bypassing_effects ( int bus_idx ) const

如果为 true,则索引为 bus_idx 的总线会绕过效果。


bool is_bus_effect_enabled ( int bus_idx, int effect_idx ) const

如果为 true,则索引为 bus_idx 的总线上启用了索引为 effect_idx 的效果。


bool is_bus_mute ( int bus_idx ) const

如果为 true,则索引为 bus_idx 的总线已静音。


bool is_bus_solo ( int bus_idx ) const

如果为 true,则索引为 bus_idx 的总线处于独奏模式。


void lock ( )

锁定音频驱动程序的主循环。

注意:之后记得解锁。


void move_bus ( int index, int to_index )

将总线从索引 index 移动到索引 to_index


void remove_bus ( int index )

移除索引 index 处的总线。


void remove_bus_effect ( int bus_idx, int effect_idx )

将索引 effect_idx 的效果从索引 bus_idx 的总线上移除。


void set_bus_bypass_effects ( int bus_idx, bool enable )

如果为 true,则索引为 bus_idx 的总线会绕过效果。


void set_bus_effect_enabled ( int bus_idx, int effect_idx, bool enabled )

如果为 true,则索引为 bus_idx 的总线上启用了索引为 effect_idx 的效果。


void set_bus_layout ( AudioBusLayout bus_layout )

覆盖当前使用的 AudioBusLayout


void set_bus_mute ( int bus_idx, bool enable )

如果为 true,则索引为 bus_idx 的总线已静音。


void set_bus_name ( int bus_idx, String name )

将索引为 bus_idx 的总线的名称设为 name


void set_bus_send ( int bus_idx, StringName send )

将索引为 bus_idx 处的总线输出连接到名为 send 的总线。


void set_bus_solo ( int bus_idx, bool enable )

如果为 true,则索引为 bus_idx 的总线处于独奏模式。


void set_bus_volume_db ( int bus_idx, float volume_db )

将索引为 bus_idx 的总线的音量设为 volume_db


void set_enable_tagging_used_audio_streams ( bool enable )

目前没有这个方法的描述。请帮我们贡献一个


void swap_bus_effects ( int bus_idx, int effect_idx, int by_effect_idx )

在索引为 bus_idx 的总线中交换两个效果的位置。


void unlock ( )

解锁音频驱动程序的主循环。(锁定后,你始终需要手动解锁它。)