音视频设备管理

支持macOS音、视频输入输入出设备的获取,切换等;

获取视频输入设备

获取所有视频采集设备

@protocol NIMNetCallManager <NSObject>

/**
 *  获取视频采集设备
 *
 *  @return 所有视频采集设备
 */
- (NSArray<NIMNetCallVideoDevice *> *)videoCaptureDevices;

@end
类型 说明
NSArray\ * 所有视频采集设备

NSArray *videoDevices = [[NIMAVChatSDK sharedSDK].netCallManager videoCaptureDevices];

当前视频视频输入设备

获取所有视频采集设备

@protocol NIMNetCallManager <NSObject>

/**
 *  获取当前视频采集设备
 *
 *  @return 当前视频采集设备
 */
- (NIMNetCallVideoDevice *)currentCaptureDevice;

@end
类型 说明
NIMNetCallVideoDevice * 视频采集设备

NIMNetCallVideoDevice *videoDevice = [[NIMAVChatSDK sharedSDK].netCallManager currentCaptureDevice];

切换视频输入设备

切换视频采集设备

@protocol NIMNetCallManager <NSObject>

/**
 *  切换视频采集设备

 *  @param videoDevice 视频采集设备
 */
- (BOOL)switchCaptureDeviceWithDevice:(NIMNetCallVideoDevice *)videoDevice;

@end
参数 类型 说明
videoDevice NIMNetCallVideoDevice * 视频采集设备

- (void)switchDevice:(NIMNetCallVideoDevice *)videoDevice {
    BOOL success = [[NIMAVChatSDK sharedSDK].netCallManager switchCaptureDeviceWithDevice: videoDevice];
}

获取音频输入输出设备

获取所有视频采集设备,只支持macOS

@protocol NIMNetCallManager <NSObject>

/**
 *  获取macOS下所有音频输入输出设备
 *
 @return 所有音频设备
 */
- (NSArray<NIMNetCallMacAudioDevice *> *)audioDevices API_UNAVAILABLE(ios);

@end
类型 说明
NSArray\ * 所有视频采集设备
NSArray *audioDevices = [[NIMAVChatSDK sharedSDK].netCallManager audioDevices];

当前音频输入设备

获取所有视频采集设备,只支持macOS

@protocol NIMNetCallManager <NSObject>

/**
 *  获取macOS当前音频输入设备
 *
 *  @return 音频输入设备
 */
- (NIMNetCallMacAudioDevice *)currentAudioInputDevice API_UNAVAILABLE(ios);
@end
类型 说明
NIMNetCallMacAudioDevice * 所有音频输入设备
NIMNetCallMacAudioDevice *audioDevice = [[NIMAVChatSDK sharedSDK].netCallManager currentAudioInputDevice];

当前音频输出设备

获取所有视频采集设备,只支持macOS

@protocol NIMNetCallManager <NSObject>

/**
 *  获取macOS当前音频输出设备
 *
 *  @return 音频输出设备
 */
- (NIMNetCallMacAudioDevice *)currentAudioOutputDevice API_UNAVAILABLE(ios);
@end
类型 说明
NIMNetCallMacAudioDevice * 所有音频采集设备
NIMNetCallMacAudioDevice *aduioDevice = [[NIMAVChatSDK sharedSDK].netCallManager currentAudioOutputDevice];

所有音频输入设备

获取所有视频采集设备,只支持macOS

@protocol NIMNetCallManager <NSObject>

/**
 *  获取macOS所有音频输入设备
 *
 *  @return 音频输入设备
 */
- (NSArray<NIMNetCallMacAudioDevice *> *)audioInputDevices API_UNAVAILABLE(ios);
@end
类型 说明
NSArray\ * 所有音频输入设备

NSArray *audioDevices = [[NIMAVChatSDK sharedSDK].netCallManager audioInputDevices];

所有音频输出设备

获取所有视频采集设备,只支持macOS

@protocol NIMNetCallManager <NSObject>

/**
 *  获取macOS音频输出设备
 *
 *  @return 音频输出设备
 */
- (NSArray<NIMNetCallMacAudioDevice *> *)audioOutputDevices API_UNAVAILABLE(ios);

@end
类型 说明
NSArray\ * 所有视频输出设备

NSArray *videoDevices = [[NIMAVChatSDK sharedSDK].netCallManager audioOutputDevices];

切换音频输入设备

获取所有视频采集设备,只支持macOS

@protocol NIMNetCallManager <NSObject>

/**
 *  切换macOS的音频输入设备
 *
 *  @param device 目标音频采集设备

 *  @return 是否设置成功
 */
- (BOOL)switchAudioInputDeviceWithDevice:(NIMNetCallMacAudioDevice *)device API_UNAVAILABLE(ios);
@end
参数 类型 说明
device NIMNetCallMacAudioDevice * macOS 音频设备
- (BOOL)switchAudioDevice:(NIMNetCallMacAudioDevice *)audioDevice
    BOOL success = [[NIMAVChatSDK sharedSDK].netCallManager     switchAudioInputDeviceWithDevice: audioDevice];
    return success;
}

音频外部播放设备状态回调

音频外部播放设备状态回调,播放设备可能有耳机,音箱。希望上层实现一个设备列表让用户选择插入的设备类型。

@protocol NIMNetCallManagerDelegate <NSObject>

/**
 *  音频外部播放设备状态回调
 *
 *  @param status 状态
 *
 *  @discussions 播放设备可能有耳机,音箱。希望上层实现一个设备列表让用户选择插入的设备类型。
 */
- (void)onAudioExternalDeviceStateChanged:(NIMNetCallAudioExternalDeviceStatus)status;

@end
参数 类型 说明
status NIMNetCallAudioExternalDeviceStatus 状态
- (void)onAudioExternalDeviceStateChanged:(NIMNetCallAudioExternalDeviceStatus)status
{
    if (status == NIMNetCallAudioExternalDeviceStatusPlugin) {
     //设备插入 请选择插入设备的类型
     [[NIMAVChatSDK sharedSDK].netCallManager selectAudioExternalDevice:deviceType];
    }
    else{
        //设备拔出
    }
}

选择音频外部设备类型

选择音频外部设备类型,目前该接口只针对插入设备后选择设备类型的场景,SDK根据设备类型自动选择合适的音频配置,与 onAudioExternalDeviceStateChanged 配合使用。

@protocol NIMNetCallManager <NSObject>

/**
 *  选择音频外部设备类型
 *
 *  @param deviceType 设备类型
 *
 *  @discussion 目前该接口只针对插入设备后选择设备类型的场景,SDK根据设备类型自动选择合适的音频配置,与 onAudioExternalDeviceStateChanged 配合使用。
 *
 */
- (void)selectAudioExternalDevice:(NIMNetCallAudioExternalDeviceType)deviceType;

@end
参数 类型 说明
deviceType NIMNetCallAudioExternalDeviceType 设备类型
- (void)onAudioExternalDeviceStateChanged:(NIMNetCallAudioExternalDeviceStatus)status
{
    if (status == NIMNetCallAudioExternalDeviceStatusPlugin) {
     //设备插入 请选择插入设备的类型
     [[NIMAVChatSDK sharedSDK].netCallManager selectAudioExternalDevice:deviceType];

    }
    else{
      //设备拔出
    }
}