音频设备管理
- C++
更新时间不可用
enumeratePlaybackDevices
枚举系统中的音频播放设备。
virtual IAudioDeviceCollection *enumeratePlaybackDevices() = 0;该方法返回一个 IAudioDeviceCollection 对象,包含系统中的所有音频播放设备。使用该对象后,必须调用 release 方法释放资源。
注: 该方法仅适用于 Windows 和 macOS 平台。
返回值
- 方法调用成功,返回一个 IAudioDeviceCollection 对象,详见 IAudioDeviceCollection。
- 方法调用失败,返回 NULL。
所属接口类
enumerateRecordingDevices
枚举音频采集设备。
virtual IAudioDeviceCollection *enumerateRecordingDevices() = 0;该方法返回一个 IAudioDeviceCollection 对象,其中包含系统中的所有音频采集设备。使用该对象后,你必须调用 release 方法释放资源。
注: 该方法仅适用于 Windows 和 macOS 平台。
返回值
- 方法调用成功,返回 IAudioDeviceCollection 对象,详见 IAudioDeviceCollection。
- 方法调用失败,返回 NULL。
所属接口类
followSystemLoopbackDevice
设置是否跟随系统默认音频播放设备。
virtual int followSystemLoopbackDevice(bool enable) = 0;该方法仅适用于 Windows 和 macOS 平台。
参数
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
followSystemPlaybackDevice
设置 SDK 是否跟随系统默认音频播放设备。
virtual int followSystemPlaybackDevice(bool enable) = 0;注: 该方法仅适用于 Windows 和 macOS 平台。
参数
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
followSystemRecordingDevice
设置 SDK 是否跟随系统默认音频录制设备。
virtual int followSystemRecordingDevice(bool enable) = 0;注: 该方法仅适用于 Windows 和 macOS 平台。
参数
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
getApplicationVolume
获取 App 的音量。
virtual int getApplicationVolume(int &volume) = 0;参数
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
getAudioDeviceInfo
获取音频设备信息。
virtual int getAudioDeviceInfo(DeviceInfo& deviceInfo) = 0;调用该方法可以获取音频设备是否支持超低延迟采集和播放。
注:
- 该方法仅适用于 Android 平台。
- 你可以在加入频道前或后调用该方法。
参数
| 参数名 | 描述 |
|---|---|
deviceInfo | 输入和输出参数,表示音频设备信息。详见 DeviceInfo。 |
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
getCount
获取音频播放设备或音频采集设备的总数。
virtual int getCount() = 0;如果在调用该方法前调用了 enumeratePlaybackDevices,SDK 会返回音频播放设备的数量;如果在调用该方法前调用了 enumerateRecordingDevices,SDK 会返回音频采集设备的数量。
返回值
方法调用成功,返回音频播放设备或音频采集设备的总数。
所属接口类
getDefaultDevice [2/2]
获取系统默认音频设备及其类型。
virtual int getDefaultDevice(char deviceName[MAX_DEVICE_ID_LENGTH], char deviceTypeName[MAX_DEVICE_ID_LENGTH], char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;该方法仅适用于 macOS 平台。调用该方法前,你需要先调用 enumeratePlaybackDevices 或 enumerateRecordingDevices 获取设备列表。
参数
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
getDefaultDevice [1/2]
获取系统默认音频设备。
virtual int getDefaultDevice(char deviceName[MAX_DEVICE_ID_LENGTH], char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;- 该方法仅适用于 Windows 和 macOS 平台。
- 在调用该方法前,你需要先调用 enumeratePlaybackDevices 或 enumerateRecordingDevices 获取设备列表。
参数
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
getDevice [2/2]
按索引获取音频设备的名称、类型和 ID。
virtual int getDevice(int index, char deviceName[MAX_DEVICE_ID_LENGTH], char deviceTypeName[MAX_DEVICE_ID_LENGTH], char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;注: 该方法仅适用于 macOS 平台。
参数
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
getDevice [1/2]
获取指定索引的视频设备的信息。
virtual int getDevice(int index, char deviceName[MAX_DEVICE_ID_LENGTH], char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;参数
| 参数名 | 描述 |
|---|---|
index | 视频设备的索引值。该值必须小于 getCount 返回的设备数量。 |
deviceName | 输出参数,表示设备名称。最大长度为 MAX_DEVICE_ID_LENGTH_TYPE。 |
deviceId | 输出参数,表示视频设备的设备 ID。最大长度为 MAX_DEVICE_ID_LENGTH_TYPE。 |
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
getLoopbackDevice
获取当前的声卡采集设备。
virtual int getLoopbackDevice(char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;该方法仅适用于 Windows 和 macOS 平台。
参数
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
getPlaybackDevice
检索与设备 ID 关联的音频播放设备。
virtual int getPlaybackDevice(char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;注: 该方法仅适用于 Windows 和 macOS 平台。
参数
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
getPlaybackDeviceInfo [1/2]
获取音频播放设备的信息。
virtual int getPlaybackDeviceInfo(char deviceId[MAX_DEVICE_ID_LENGTH], char deviceName[MAX_DEVICE_ID_LENGTH]) = 0;注: 该方法仅适用于 Windows 和 macOS 平台。
参数
| 参数名 | 描述 |
|---|---|
deviceId | 音频播放设备的 ID,最大长度为 MAX_DEVICE_ID_LENGTH_TYPE。 |
deviceName | 输出参数,播放设备的名称,最大长度为 MAX_DEVICE_ID_LENGTH_TYPE。 |
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
getPlaybackDeviceInfo [2/2]
获取音频播放设备的信息和类型。
virtual int getPlaybackDeviceInfo(char deviceId[MAX_DEVICE_ID_LENGTH], char deviceName[MAX_DEVICE_ID_LENGTH], char deviceTypeName[MAX_DEVICE_ID_LENGTH]) = 0;该方法仅适用于 macOS 平台。
参数
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
getPlaybackDeviceMute
获取音频播放设备的静音状态。
virtual int getPlaybackDeviceMute(bool *mute) = 0;参数
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
getPlaybackDeviceVolume
获取音频播放设备的音量。
virtual int getPlaybackDeviceVolume(int *volume) = 0;参数
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
getRecordingDevice
获取当前音频录制设备的设备 ID。
virtual int getRecordingDevice(char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;注: 该方法仅适用于 Windows 和 macOS 平台。
参数
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
getRecordingDeviceInfo [1/2]
获取音频录制设备的信息。
virtual int getRecordingDeviceInfo(char deviceId[MAX_DEVICE_ID_LENGTH], char deviceName[MAX_DEVICE_ID_LENGTH]) = 0;注: 该方法仅适用于 Windows 和 macOS 平台。
参数
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
getRecordingDeviceInfo [2/2]
获取音频采集设备的信息和类型。
virtual int getRecordingDeviceInfo(char deviceId[MAX_DEVICE_ID_LENGTH], char deviceName[MAX_DEVICE_ID_LENGTH], char deviceTypeName[MAX_DEVICE_ID_LENGTH]) = 0;该方法仅适用于 macOS 平台。
参数
| 参数名 | 描述 |
|---|---|
deviceId | 音频播放设备的 ID,最大长度为 MAX_DEVICE_ID_LENGTH_TYPE。 |
deviceName | 输出参数,表示播放设备的名称,最大长度为 MAX_DEVICE_ID_LENGTH_TYPE。 |
deviceTypeName | 输出参数,表示音频采集设备的类型,例如内置设备、USB 和 HDMI,最大长度为 MAX_DEVICE_ID_LENGTH_TYPE。 |
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
getRecordingDeviceMute
获取音频采集设备的静音状态。
virtual int getRecordingDeviceMute(bool *mute) = 0;参数
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
getRecordingDeviceVolume
获取音频录制设备的音量。
virtual int getRecordingDeviceVolume(int *volume) = 0;注: 该方法仅适用于 Windows 平台。
参数
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
isApplicationMute
检查应用是否处于静音状态。
virtual int isApplicationMute(bool &mute) = 0;参数
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
release
释放 IAudioDeviceCollection 对象占用的所有资源。
virtual void release() = 0;所属接口类
release
释放 IAudioDeviceManager 对象占用的所有资源。
virtual void release() = 0;所属接口类
setApplicationMute
设置是否静音 App。
virtual int setApplicationMute(bool mute) = 0;参数
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
setApplicationVolume
设置应用程序的音量。
virtual int setApplicationVolume(int volume) = 0;参数
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
setDevice
指定视频采集设备的设备 ID。
virtual int setDevice(const char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;注:
- 插拔设备不会改变其设备 ID。
- 该方法仅适用于 Windows 和 macOS 平台。
参数
| 参数名 | 描述 |
|---|---|
deviceId |
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
setLoopbackDevice
设置 SDK 的声卡采集设备。
virtual int setLoopbackDevice(const char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;SDK 默认使用当前播放设备作为声卡采集设备。如果你希望指定其他音频设备作为声卡采集设备,可以调用该方法,并将 deviceId 设置为目标设备。你可以通过该方法更改当前使用的音频路由,但不会更改默认音频路由。例如,若默认音频路由为麦克风,在加入频道前调用该方法将音频路由设置为声卡并开始设备测试,SDK 会在声卡上进行测试。测试完成并加入频道后,SDK 仍使用麦克风进行音频采集。
注: 该方法仅适用于 Windows 和 macOS 平台。
适用场景
该方法适用的典型场景如下: 使用 App A 通过蓝牙耳机播放音乐,同时使用 App B 进行视频通话并通过扬声器播放:
- 如果将声卡采集设备设置为蓝牙耳机,SDK 会将 App A 播放的音乐发布到远端。
- 如果将声卡采集设备设置为扬声器,SDK 不会将 App A 播放的音乐发布到远端。
- 如果先将声卡采集设备设置为蓝牙耳机,之后改用有线耳机播放 App A 的音乐,则需要再次调用该方法,将声卡采集设备设置为有线耳机,SDK 才会继续将音乐发布到远端。
参数
| 参数名 | 描述 |
|---|---|
deviceId | 指定 SDK 的声卡采集设备。你可以通过调用 enumeratePlaybackDevices 获取设备 ID。最大长度为 MAX_DEVICE_ID_LENGTH_TYPE。 |
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
setPlaybackDevice
设置音频播放设备。
virtual int setPlaybackDevice(const char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;你可以调用此方法更改当前使用的音频路由,但不会更改默认音频路由。例如,若默认音频路由为扬声器 1,在加入频道前调用此方法将音频路由设置为扬声器 2 并开始设备测试,SDK 会在扬声器 2 上进行设备测试。设备测试完成并加入频道后,SDK 仍会使用默认音频路由扬声器 1。
注: 该方法仅适用于 Windows 和 macOS 平台。
参数
| 参数名 | 描述 |
|---|---|
deviceId | 指定音频播放设备的 ID。你可以通过调用 enumeratePlaybackDevices 获取设备 ID。连接或断开音频设备不会改变 注: 最大长度为 MAX_DEVICE_ID_LENGTH_TYPE。 |
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
setPlaybackDeviceMute
设置是否静音音频播放设备。
virtual int setPlaybackDeviceMute(bool mute) = 0;参数
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
setPlaybackDeviceVolume
设置音频播放设备的音量。
virtual int setPlaybackDeviceVolume(int volume) = 0;注: 该方法仅适用于 Windows 平台。
参数
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
setRecordingDevice
设置音频采集设备。
virtual int setRecordingDevice(const char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;你可以调用此方法更改当前使用的音频路由,但不会更改默认音频路由。例如,默认音频路由为麦克风,在加入频道前调用此方法将音频路由设置为蓝牙耳机并开始设备测试,SDK 会在蓝牙耳机上进行设备测试。设备测试完成并加入频道后,SDK 仍使用麦克风进行音频采集。
注: 该方法仅适用于 Windows 和 macOS 平台。
参数
| 参数名 | 描述 |
|---|---|
deviceId | 音频采集设备的 ID。你可以通过调用 enumerateRecordingDevices 获取设备 ID。连接或断开音频设备不会改变 |
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
setRecordingDeviceMute
设置音频采集设备的静音状态。
virtual int setRecordingDeviceMute(bool mute) = 0;参数
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
setRecordingDeviceVolume
设置音频采集设备的音量。
virtual int setRecordingDeviceVolume(int volume) = 0;该方法仅适用于 Windows 和 macOS 平台。
参数
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
startAudioDeviceLoopbackTest
开始音频设备回路测试。
virtual int startAudioDeviceLoopbackTest(int indicationInterval) = 0;该方法用于测试本地音频采集设备和播放设备是否正常工作。调用该方法后,音频采集设备会采集本地音频,音频播放设备会播放采集到的音频。SDK 会按照设置的时间间隔触发两个独立的 onAudioVolumeIndication 回调,分别报告采集设备(uid = 0)和播放设备(uid = 1)的音量信息。
注:
- 该方法仅适用于 Windows 和 macOS 平台。
- 可以在加入频道前或加入频道后调用该方法。
- 该方法仅在主播角色调用时生效。
- 该方法仅测试本地音频设备,不涉及网络状况。
- 测试完成后,请调用 stopAudioDeviceLoopbackTest 停止音频设备回路测试。
参数
| 参数名 | 描述 |
|---|---|
indicationInterval | SDK 触发 onAudioVolumeIndication 回调的时间间隔(毫秒)。建议设置为大于 200 毫秒的值。该值不能小于 10 毫秒,否则无法收到 onAudioVolumeIndication 回调。 |
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
startPlaybackDeviceTest
开始本地音频播放设备测试。
virtual int startPlaybackDeviceTest(const char *testAudioFilePath) = 0;该方法用于测试本地音频播放设备是否正常工作。调用该方法后,SDK 会播放你指定的音频文件。如果你能听到声音,说明播放设备工作正常。调用该方法后,SDK 每 100 毫秒触发一次 onAudioVolumeIndication 回调,报告 uid = 1 及播放设备的音量信息。该方法与 startEchoTest 的区别在于,startPlaybackDeviceTest 仅检测本地音频播放设备是否正常,而 startEchoTest 可同时检测音视频设备和网络状况。
注: 请在加入频道前调用该方法。测试完成后,请调用 stopPlaybackDeviceTest 停止测试,再加入频道。
参数
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
startRecordingDeviceTest
开始音频采集设备测试。
virtual int startRecordingDeviceTest(int indicationInterval) = 0;调用该方法可以测试本地音频采集设备是否正常工作。调用后,SDK 会按照设定的时间间隔触发 onAudioVolumeIndication 回调,报告 uid 为 0 的采集设备音量信息。该方法仅检测本地音频采集设备,而 startEchoTest 方法还可检测音视频设备和网络状况。
注: 请在加入频道前调用该方法。测试完成后,请在加入频道前调用 stopRecordingDeviceTest 停止测试。
参数
| 参数名 | 描述 |
|---|---|
indicationInterval | 触发 onAudioVolumeIndication 回调的时间间隔(毫秒)。该值必须大于 10,否则无法收到 onAudioVolumeIndication 回调,且 SDK 返回错误码 -2。建议设置为 100。 |
返回值
-
0:方法调用成功。
-
< 0:方法调用失败。详见错误码了解详情和解决建议。
- -2:参数无效,请检查参数设置。
所属接口类
stopAudioDeviceLoopbackTest
停止音频设备回路测试。
virtual int stopAudioDeviceLoopbackTest() = 0;注: stopAudioDeviceLoopbackTest 方法仅适用于 Windows 和 macOS 平台。你可以在加入频道前或加入频道后调用该方法。该方法仅在主播角色调用时生效。调用 startAudioDeviceLoopbackTest 方法开始回路测试后,请确保调用该方法停止回路测试。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
stopPlaybackDeviceTest
停止音频播放设备测试。
virtual int stopPlaybackDeviceTest() = 0;调用 startPlaybackDeviceTest 开始测试后,必须调用该方法停止测试。
注: 请在加入频道前调用该方法。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
stopRecordingDeviceTest
停止音频采集设备测试。
virtual int stopRecordingDeviceTest() = 0;调用 startRecordingDeviceTest 开始音频采集设备测试后,必须调用该方法停止测试。
注: 请在加入频道前调用该方法。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
onAudioDeviceStateChanged
音频设备状态发生变化回调。
virtual void onAudioDeviceStateChanged(const char* deviceId, int deviceType, int deviceState)该回调用于通知音频设备的状态发生变化,例如设备上的耳机被拔出。
注: 该方法仅适用于 Windows 和 macOS 平台。
参数
| 参数名 | 描述 |
|---|---|
deviceId | |
deviceType | 设备类型,详见 MEDIA_DEVICE_TYPE。 |
deviceState | 设备状态,详见 MEDIA_DEVICE_STATE_TYPE。 |
所属接口类
onAudioDeviceVolumeChanged
音频设备或 App 音量变化时触发的回调。
virtual void onAudioDeviceVolumeChanged(MEDIA_DEVICE_TYPE deviceType, int volume, bool muted)注: 该回调仅适用于 Windows 和 macOS 平台。
参数
| 参数名 | 描述 |
|---|---|
deviceType | 设备类型,详见 MEDIA_DEVICE_TYPE。 |
volume | |
muted |