音频常用功能
更新时间: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;
开启音量变化监听
-
API 调用
/* 开启音量变化监听,并设置音量变化监听回调频率 */ [[LVRTCEngine sharedInstance] startSoundLevelMonitor:100]; /* 声音数据回调参数设置 */ [[LVRTCEngine sharedInstance] setAudioRecordFlag:LVAudioRecordTypeNone];
-
音量变化监听回调
打开音量变化监听方法才会生效
startSoundLevelMonitor
执行/// 远端用户音量变化的通知,该回调通需要调用打开音量变化监听方法才会生效 startSoundLevelMonitor,该回调频率可以调用 startSoundLevelMonitor: /// @param soundLevels 远端用户音量信息 - (void)OnAudioVolumeUpdate:(NSArray<LVAudioVolume *> *)soundLevels;
-
LVAudioVolume 用户音量信息类
OnAudioVolumeUpdate
回调 会告诉是哪个用户的音量变化了,和变化后的音量信息/* / 用户音量信息 */ @interface LVAudioVolume : NSObject /* / 用户标识 */ @property (nullable, nonatomic, copy) NSString* userId; /* / 音量 */ @property (nonatomic, assign) int volume; @end
-
设置音频数据回调类型
通过设置音频数据回调类型,可以控制回调数据的类型,例如只回调远端用户音量数据或者本地采集的音量数据
/** * 音频数据回调类型(声音数据录制模式) */ typedef NS_ENUM( NSInteger, LVAudioRecordType ) { /** * 不需要回调音频数据 */ LVAudioRecordTypeNone = 0, /** * 只回调远端用户数据 */ LVAudioRecordTypePlayBack = 0x01, /** * 只回调本地 mic 采集的数据 */ LVAudioRecordTypeMicrophone = 0x02, /** * 回调混音之后的音频数据 */ LVAudioRecordTypeMix = 0x04, };
停止音量变化的监听
调用 stopSoundLevelMonitor
方法就可以停止音量变化监听。
/* 停止音量变化的监听 */
[[LVRTCEngine sharedInstance] stopSoundLevelMonitor];