音频设备管理
- Unreal Blueprint
更新时间不可用
介绍跟音频设备管理相关的方法和回调。
EnumeratePlaybackDevices
获取系统中所有的播放设备列表。
UFUNCTION(BlueprintCallable, Category = "Agora|IAudioDeviceManager")
UAudioDeviceCollection* EnumeratePlaybackDevices();详情
注意: 该方法仅适用于 Windows 和 macOS。
该方法返回一个 IAudioDeviceCollection 对象,包含系统中所有的播放设备。通过 IAudioDeviceCollection 对象,App 可以枚举播放设备。在使用结束后,App 需调用 Release 方法销毁返回的对象。
返回值
- 方法调用成功:返回一个 IAudioDeviceCollection 对象,包含所有的音频播放设备。
- 方法调用失败: NULL。
所属接口类
EnumerateRecordingDevices
获取系统中所有的音频采集设备列表。
UFUNCTION(BlueprintCallable, Category = "Agora|IAudioDeviceManager")
UAudioDeviceCollection* EnumerateRecordingDevices();详情
注意: 该方法仅适用于 Windows 和 macOS。
该方法返回一个 IAudioDeviceCollection 对象,包含系统中所有的音频采集设备。通过 IAudioDeviceCollection 对象,App 可以枚举音频采集设备。在使用结束后,App 需调用 Release 方法销毁返回的对象。
返回值
- 方法调用成功:返回一个 IAudioDeviceCollection 对象,包含所有的音频采集设备。
- 方法调用失败: NULL。
所属接口类
FollowSystemLoopbackDevice
设置声卡采集设备是否跟随系统默认的播放设备。
UFUNCTION(BlueprintCallable, Category = "Agora|IAudioDeviceManager")
int FollowSystemLoopbackDevice(bool enable);详情
方法仅适用于 Windows 和 macOS。
参数
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
FollowSystemPlaybackDevice
设置 SDK 使用的音频播放设备跟随系统默认的音频播放设备。
UFUNCTION(BlueprintCallable, Category = "Agora|IAudioDeviceManager")
int FollowSystemPlaybackDevice(bool enable);详情
注意: 该方法仅适用于 Windows 和 macOS。
参数
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
所属接口类
FollowSystemRecordingDevice
设置 SDK 使用的音频采集设备跟随系统默认的音频采集设备。
UFUNCTION(BlueprintCallable, Category = "Agora|IAudioDeviceManager")
int FollowSystemRecordingDevice(bool enable);详情
注意: 该方法仅适用于 Windows 和 macOS。
参数
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
GetApplicationVolume
获取 App 的当前音量。
UFUNCTION(BlueprintCallable, Category = "Agora|IAudioDeviceCollection")
int GetApplicationVolume(int & volume);参数
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
所属接口类
GetAudioDeviceInfo
获取音频设备信息。
UFUNCTION(BlueprintCallable, Category = "Agora|IRtcEngine")
int GetAudioDeviceInfo(FDeviceInfo& deviceInfo);详情
调用该方法后,你可以获取音频设备是否支持极低延时采集和播放。
注意:
- 该方法仅适用于 Android 平台。
- 该方法在加入频道前后均可调用。
参数
| 参数名 | 描述 |
|---|---|
deviceInfo |
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
GetAgoraAudioDeviceManager
获取 IAudioDeviceManager 对象,以管理音频设备。
UFUNCTION(BlueprintPure, Category = "Agora|IAudioDeviceManager")
static UAgoraBPuAudioDeviceManager* GetAgoraAudioDeviceManager();返回值
一个 IAudioDeviceManager 对象。
GetCount
获取播放或音频采集设备数量。
UFUNCTION(BlueprintPure, Category = "Agora|IAudioDeviceCollection")
int GetCount();详情
如果先调用 EnumeratePlaybackDevices 再调用该方法,返回播放设备的数量。如果先调用 EnumerateRecordingDevices 再调用该方法,则返回音频采集设备的数量。
返回值
语音设备数目。
所属接口类
GetDefaultDevice
获取系统默认的音频设备。
UFUNCTION(BlueprintCallable, Category = "Agora|IAudioDeviceCollection")
int GetDefaultDevice(FString& deviceName, FString& deviceId);详情
- 该方法仅适用于 Windows 和 macOS。
- 你需要先调用 EnumeratePlaybackDevices 或 EnumerateRecordingDevices 获取设备列表后,再调用该方法。
参数
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见 错误码了解详情和解决建议。
所属接口类
GetDevice
获取指定 index 的音频设备信息。
UFUNCTION(BlueprintCallable, Category = "Agora|IAudioDeviceCollection")
int GetDevice(int index, FString& deviceName, FString& deviceId);详情
该方法仅适用于 Windows 和 macOS。
参数
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
所属接口类
GetLoopbackDevice
获取当前的声卡采集设备。
UFUNCTION(BlueprintCallable, Category = "Agora|IAudioDeviceManager")
int GetLoopbackDevice(FString & deviceId);详情
该方法仅适用于 Windows 和 macOS。
参数
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
GetPlaybackDevice
获取当前音频播放设备。
UFUNCTION(BlueprintCallable, Category = "Agora|IAudioDeviceManager")
int GetPlaybackDevice(FString& deviceId);详情
注意: 该方法仅适用于 Windows 和 macOS。
参数
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
所属接口类
GetPlaybackDeviceInfo
获取音频播放设备信息及其类型。
UFUNCTION(BlueprintCallable, Category = "Agora|IAudioDeviceManager")
int GetPlaybackDeviceInfo(FString& deviceId, FString& deviceName, FString& deviceTypeName);详情
该方法仅适用于 macOS。
参数
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
所属接口类
GetPlaybackDeviceMute
获取当前播放设备静音状态。
UFUNCTION(BlueprintCallable, Category = "Agora|IAudioDeviceManager")
int GetPlaybackDeviceMute(bool& mute);参数
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
所属接口类
GetPlaybackDeviceVolume
获取播放设备音量。
UFUNCTION(BlueprintCallable, Category = "Agora|IAudioDeviceManager")
int GetPlaybackDeviceVolume(int& volume);参数
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
GetRecordingDevice
获取当前音频采集设备。
UFUNCTION(BlueprintCallable, Category = "Agora|IAudioDeviceManager")
int GetRecordingDevice(FString& deviceId);详情
注意: 该方法仅适用于 Windows 和 macOS。
参数
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
所属接口类
GetRecordingDeviceInfo
获取音频采集设备信息及其类型。
UFUNCTION(BlueprintCallable, Category = "Agora|IAudioDeviceManager")
int GetRecordingDeviceInfo(FString& deviceId, FString& deviceName, FString& deviceTypeName);详情
该方法仅适用于 macOS。
参数
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
所属接口类
GetRecordingDeviceMute
获取当前音频采集设备静音状态。
UFUNCTION(BlueprintCallable, Category = "Agora|IAudioDeviceManager")
int GetRecordingDeviceMute(bool& mute);参数
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
所属接口类
GetRecordingDeviceVolume
获取音频采集设备音量。
UFUNCTION(BlueprintCallable, Category = "Agora|IAudioDeviceManager")
int GetRecordingDeviceVolume(int& volume);详情
注: 该方法仅适用于 Windows 平台。
参数
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
所属接口类
IsApplicationMute
获取 App 当前的静音状态。
UFUNCTION(BlueprintCallable, Category = "Agora|IAudioDeviceCollection")
int IsApplicationMute(bool mute);参数
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
所属接口类
Release
释放 IAudioDeviceCollection 对象占用的所有资源。
UFUNCTION(BlueprintCallable, Category = "Agora|IAudioDeviceCollection")
void Release();所属接口类
Release
释放 IAudioDeviceManager 对象占用的所有资源。
UFUNCTION(BlueprintCallable, Category = "Agora|IAudioDeviceManager")
void Release();所属接口类
SetApplicationMute
设置是否将 App 静音。
UFUNCTION(BlueprintCallable, Category = "Agora|IAudioDeviceCollection")
int SetApplicationMute(bool mute);参数
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
所属接口类
SetApplicationVolume
设置 App 音量。
UFUNCTION(BlueprintCallable, Category = "Agora|IAudioDeviceCollection")
int SetApplicationVolume(int volume);参数
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
所属接口类
SetDevice
指定音频设备。
UFUNCTION(BlueprintCallable, Category = "Agora|IAudioDeviceCollection")
int SetDevice(const FString & deviceId);详情
该方法可以更改当前的音频路由,但不会改变系统默认的音频路由。假设系统默认的音频路由是扬声器 1,你在加入频道前调用该方法设置当前的音频路由为扬声器 2,如果在此时进行设备检测,SDK 会对扬声器 2 进行检测。检测结束后,当你加入频道时 SDK 依然会选择使用系统默认的音频路由,即扬声器 1。
参数
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
所属接口类
SetLoopbackDevice
指定声卡采集设备。
UFUNCTION(BlueprintCallable, Category = "Agora|IAudioDeviceManager")
int SetLoopbackDevice(const FString & deviceId);详情
SDK 默认采用当前的播放设备作为声卡采集设备,如果想要指定其他音频设备作为声卡采集设备,则调用该方法并设置 deviceId 为你想要指定的声卡采集设备。
该方法可以更改当前的音频采集设备,但不改变系统默认的音频采集设备。假设系统默认的音频采集设备是麦克风 1,你在加入频道前调用该方法设置当前的音频路由为声卡 1,如果在此时进行设备检测,SDK 会对声卡 1 做设备检测。检测结束后,当你加入频道时 SDK 依然会选择使用系统默认的音频采集设备,即麦克风 1。
注:
该方法仅适用于 Windows 和 macOS。
该方法适用的场景如下:
使用 App A 播放音乐,通过蓝牙耳机播放;同时使用 App B 进行视频会议,通过扬声器播放。
- 如果设置声卡采集设备为蓝牙耳机,则 SDK 会将 App A 中的音乐发布到远端。
- 如果设置声卡采集设备设置为扬声器,则 SDK 不会将 App A 中的音乐发布到远端。
- 如果设置声卡采集设备为蓝牙耳机后,又改用有线耳机播放 App A 中的音乐,则需要重新调用该方法,设置声卡采集设备为有线耳机,则 SDK 会继续将 App A 中的音乐发布到远端。
参数
| 参数名 | 描述 |
|---|---|
deviceId | 指定 SDK 的声卡采集设备。由 EnumeratePlaybackDevices 获取。插拔设备不会影响 deviceId。 |
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
SetPlaybackDevice
指定播放设备。
UFUNCTION(BlueprintCallable, Category = "Agora|IAudioDeviceManager")
int SetPlaybackDevice(const FString & deviceId);详情
注意: 该方法仅适用于 Windows 和 macOS。
该方法可以更改当前的音频路由,但不会改变系统默认的音频路由。假设系统默认的音频路由是扬声器 1,你在加入频道前调用该方法设置当前的音频路由为扬声器 2,如果在此时进行设备检测,SDK 会对扬声器 2 进行检测。检测结束后,当你加入频道时 SDK 依然会选择使用系统默认的音频路由,即扬声器 1。
参数
| 参数名 | 描述 |
|---|---|
deviceId | 指定播放设备。由 EnumeratePlaybackDevices 获取。插拔设备不会影响 deviceId。 |
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
所属接口类
SetPlaybackDeviceMute
设置播放设备静音。
UFUNCTION(BlueprintCallable, Category = "Agora|IAudioDeviceManager")
int SetPlaybackDeviceMute(bool mute);参数
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
所属接口类
SetPlaybackDeviceVolume
设置播放设备音量。
UFUNCTION(BlueprintCallable, Category = "Agora|IAudioDeviceManager")
int SetPlaybackDeviceVolume(int volume);详情
注: 该方法仅适用于 Windows 平台。
参数
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
所属接口类
SetRecordingDevice
指定音频采集设备。
UFUNCTION(BlueprintCallable, Category = "Agora|IAudioDeviceManager")
int SetRecordingDevice(const FString & deviceId);详情
注意: 该方法仅适用于 Windows 和 macOS。
该方法可以更改当前的音频采集设备,但不改变系统默认的音频采集设备。假设系统默认的音频采集设备是麦克风 1,你在加入频道前调用该方法设置当前的音频路由为蓝牙耳机 1,如果在此时进行设备检测,SDK 会对蓝牙耳机 1 进行检测。检测结束后,当你加入频道时 SDK 依然会选择使用系统默认的音频采集设备,即麦克风 1。
参数
| 参数名 | 描述 |
|---|---|
deviceId | 音频采集设备的 Device ID。可通过 EnumerateRecordingDevices 获取。插拔设备不会影响 deviceId。 |
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
所属接口类
SetRecordingDeviceMute
设置当前音频采集设备静音。
UFUNCTION(BlueprintCallable, Category = "Agora|IAudioDeviceManager")
int SetRecordingDeviceMute(bool mute);参数
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
所属接口类
SetRecordingDeviceVolume
设置音频采集设备音量。
UFUNCTION(BlueprintCallable, Category = "Agora|IAudioDeviceManager")
int SetRecordingDeviceVolume(int volume);详情
该方法仅适用于 Windows 和 macOS。
参数
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
所属接口类
StartAudioDeviceLoopbackTest
开始音频设备回路测试。
UFUNCTION(BlueprintCallable, Category = "Agora|IAudioDeviceManager")
int StartAudioDeviceLoopbackTest(int indicationInterval);详情
该方法测试音频采集和播放设备是否能正常工作。一旦测试开始,音频采集设备会采集本地音频,然后使用音频播放设备播放出来。SDK 会按设置的时间间隔触发两个 OnAudioVolumeIndication 回调,分别报告音频采集设备(uid = 0)和音频播放设置(uid = 1)的音量信息。
注意:
- 该方法仅适用于 Windows 和 macOS。
- 该方法在加入频道前后都可调用。
- 该方法仅支持主播角色调用。
- 该方法仅在本地进行音频设备测试,不涉及网络连接。
- 完成测试后,必须调用 StopAudioDeviceLoopbackTest 停止音频设备回路测试。
参数
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
所属接口类
StartPlaybackDeviceTest
启动音频播放设备测试。
UFUNCTION(BlueprintCallable, Category = "Agora|IAudioDeviceManager")
int StartPlaybackDeviceTest(const FString & testAudioFilePath);详情
该方法用于测试本地音频播放设备是否能正常工作。启动测试后,SDK 播放指定的音频文件,测试者如果能听到声音,说明播放设备能正常工作。
调用该方法后,SDK 会每隔 100 毫秒触发一次 OnAudioVolumeIndication 回调,报告 uid = 1 及播放设备的音量信息。
该方法和 StartEchoTest 的区别在于该方法检测本地的音频播放设备能否正常工作,后者可以检测音视频设备及网络是否正常。
注意: 该方法需要在加入频道前调用。测试完成后,如需加入频道,请确保先调用 StopPlaybackDeviceTest 停止设备测试。
参数
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
所属接口类
StartRecordingDeviceTest
启动音频采集设备测试。
UFUNCTION(BlueprintCallable, Category = "Agora|IAudioDeviceManager")
int StartRecordingDeviceTest(int indicationInterval);详情
该方法用于测试本地音频采集设备是否能正常工作。调用该方法后,SDK 会按设置的时间间隔触发 OnAudioVolumeIndication 回调,报告 uid = 0 及采集设备的音量信息。
该方法和 StartEchoTest 的区别在于该方法检测本地的音频采集设备能否正常工作,后者可以检测音视频设备及网络是否正常。
注: 该方法需要在加入频道前调用。测试完成后,如需加入频道,请确保先调用 StopRecordingDeviceTest 停止设备测试。
参数
| 参数名 | 描述 |
|---|---|
indicationInterval | SDK 触发 OnAudioVolumeIndication 回调的时间间隔,单位为毫秒,最小取值为 10,否则会收不到 OnAudioVolumeIndication 回调,SDK 会返回错误码 |
返回值
-
0: 方法调用成功。
-
< 0: 方法调用失败。详见错误码了解详情和解决建议。
- -2: 参数设置错误,请重新设置参数。
所属接口类
StopAudioDeviceLoopbackTest
停止音频设备回路测试。
UFUNCTION(BlueprintCallable, Category = "Agora|IAudioDeviceManager")
int StopAudioDeviceLoopbackTest();详情
注意:
- 该方法仅适用于 Windows 和 macOS。
- 该方法在加入频道前后都可调用。
- 该方法仅支持主播角色调用。
- 在调用 StartAudioDeviceLoopbackTest 后,必须调用该方法停止音频设备回路测试。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
所属接口类
StopPlaybackDeviceTest
停止音频播放设备测试。
UFUNCTION(BlueprintCallable, Category = "Agora|IAudioDeviceManager")
int StopPlaybackDeviceTest();详情
该方法用于停止音频播放设备测试。调用 StartPlaybackDeviceTest 后,必须调用该方法停止测试。
注意: 该方法需要在加入频道前调用。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
所属接口类
StopRecordingDeviceTest
停止音频采集设备测试。
UFUNCTION(BlueprintCallable, Category = "Agora|IAudioDeviceManager")
int StopRecordingDeviceTest();详情
该方法用于停止音频采集设备测试。调用 StartRecordingDeviceTest 后,必须调用该方法停止测试。
注: 该方法需要在加入频道前调用。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
所属接口类
OnAudioDeviceStateChanged
音频设备变化回调。
UFUNCTION(BlueprintNativeEvent, Category = "Agora|Event")
void OnAudioDeviceStateChanged(const FString& deviceId, int deviceType, int deviceState);详情
提示系统音频设备状态发生改变,比如耳机被拔出。
注: 该方法仅适用于 Windows 和 macOS。
参数
| 参数名 | 描述 |
|---|---|
deviceId | |
deviceType | 设备类型定义。详见 FENUMWRAP_MEDIA_DEVICE_TYPE。 |
deviceState | 设备状态,详见 EMEDIA_DEVICE_STATE_TYPE。 |
所属接口类
OnAudioDeviceVolumeChanged
音频设备或 App 的音量发生改变回调。
UFUNCTION(BlueprintNativeEvent, Category = "Agora|Event")
void OnAudioDeviceVolumeChanged(FENUMWRAP_MEDIA_DEVICE_TYPE deviceType, int volume, bool muted);详情
当音频播放、采集设备或 App 的音量发生改变时,会触发该回调。
注: 该回调仅适用于 Windows 和 macOS。
参数
| 参数名 | 描述 |
|---|---|
deviceType | 设备类型定义。详见 FENUMWRAP_MEDIA_DEVICE_TYPE。 |
volume | |
muted |