音频常用功能

更新时间:2021-05-26

概述

音频常用功能包含开关麦克风扬声器听筒切换设置远端用户静音音量变化监听等。

常用功能

  • 开启关闭麦克风
  • 扬声器和听筒切换
  • 设置远端用户音量
  • 获取用户音量信息
  • 开启音量变化监听

开启关闭麦克风

该接口可以将麦克风 禁止开启

/*
 * 开启或关闭麦克风
 * @param  true 开启,false 关闭(默认为 true)
 * @return true 成功,false 失败
 * @discussion 推流时可调用本 API 进行参数配置
 */
[[LVRTCEngine sharedInstance] enableMic:true];

扬声器和听筒切换

该接口可以控制扬声器播放音频和听筒播放音频的切换

/*
 * 扬声器和听筒切换功能
 * @param enable true 使用扬声器播放音频,false 使用听筒播放音频。(默认 true)
 * @return true 成功,false 失败
 */
[[LVRTCEngine sharedInstance] enableSpeaker:true];

设置远端用户音量

通过 muteAudio 接口可以直接设置远端用户禁音,也可以通过 setPlayVolume 接口控制远端用户的音量。

/*
 * 设置远端用户禁音
 * @param mute 是否禁音标识
 * @param userId 用户 ID
 */
[[LVRTCEngine sharedInstance] muteAudio:false userId:@""];
/*
 * 控制远端音频流音量, 加入房间成功后调用
 * @param volume 音量大小(0,100)
 * @param userId 被控制的用户ID
 */
[[LVRTCEngine sharedInstance] setPlayVolume:50 userId:@""];

获取用户的音量信息

获取远端用户的音量信息。

/*
 * 获取用户的音量信息
 * @param userId 用户 ID
 * @return 用户 ID 对应的音量数据
 */
- (int)getSoundLevelByUserId:(NSString *)userId;

开启音量变化监听

  1. API 调用

    /* 开启音量变化监听,并设置音量变化监听回调频率 */
    [[LVRTCEngine sharedInstance] startSoundLevelMonitor:100];
    
    /* 声音数据回调参数设置 */
    [[LVRTCEngine sharedInstance] setAudioRecordFlag:LVAudioRecordTypeNone];
    
  2. 音量变化监听回调

    打开音量变化监听方法才会生效 startSoundLevelMonitor 执行

    /// 远端用户音量变化的通知,该回调通需要调用打开音量变化监听方法才会生效    startSoundLevelMonitor,该回调频率可以调用 startSoundLevelMonitor:
    /// @param soundLevels 远端用户音量信息
    - (void)OnAudioVolumeUpdate:(NSArray<LVAudioVolume *> *)soundLevels;
    
    
  3. LVAudioVolume 用户音量信息类

    OnAudioVolumeUpdate 回调 会告诉是哪个用户的音量变化了,和变化后的音量信息

    /* / 用户音量信息 */
    @interface LVAudioVolume : NSObject
    
    /* / 用户标识 */
    @property (nullable, nonatomic, copy)     NSString* userId;
    
    /* / 音量 */
    @property (nonatomic, assign) int volume;
    
    @end
    
  4. 设置音频数据回调类型

    通过设置音频数据回调类型,可以控制回调数据的类型,例如只回调远端用户音量数据或者本地采集的音量数据

    /**
     * 音频数据回调类型(声音数据录制模式)
     */
    typedef NS_ENUM( NSInteger, LVAudioRecordType )
    {
        /**
         *  不需要回调音频数据
         */
        LVAudioRecordTypeNone = 0,
        
        
        /**
         *  只回调远端用户数据
         */
        LVAudioRecordTypePlayBack = 0x01,
        
        
        /**
         *  只回调本地 mic 采集的数据
         */
        LVAudioRecordTypeMicrophone = 0x02,
        
        
        /**
         *  回调混音之后的音频数据
         */
        LVAudioRecordTypeMix = 0x04,
    };
    

停止音量变化的监听

调用 stopSoundLevelMonitor 方法就可以停止音量变化监听。

/* 停止音量变化的监听 */
[[LVRTCEngine sharedInstance] stopSoundLevelMonitor];