音频管理
4.4.1.2 初始化等基础接口 sharedEnginesharedEngine
+ (instancetype)sharedEngine;
【功能说明】
创建连麦引擎实例。
【请求参数】
无
【返回参数】
返回引擎实例对象。
destroy
- (void)destroy;
【功能说明】
注销引擎。
【请求参数】
无
【返回参数】
无
initWithConfig
- (int)initWithConfig:(HWRtcEngineConfig* _Nonnull)config;
【功能说明】
初始化引擎配置信息。
【请求参数】
config:引擎配置,具体请参见HWRtcEngineConfig。
【返回参数】
● 0:方法调用成功。
● > 0:方法调用失败。具体请参见HWRtcErrorCode。
logUpload
- (int)logUpload;
【功能说明】
上传日志。
【请求参数】
无
【返回参数】
● 0:方法调用成功。
● > 0:方法调用失败。具体请参见HWRtcErrorCode。
注意
将会触发以下回调:
●
onLogUploadResult:日志上传结果回调。
●
onLogUploadProgress:日志上传进度回调。
setEnableRtcStats
- (int)setEnableRtcStats:(BOOL)enable;
【功能说明】
打点开关。
在初始化前或初始化后调用,默认开启。
【请求参数】
enable:YES表示开启,NO表示关闭。
【返回参数】
● 0:方法调用成功。
● > 0:方法调用失败。具体请参见HWRtcErrorCode。
getVersion
+ (NSString* _Nonnull)getVersion;
【功能说明】
获取当前SDK版本号。
【返回参数】
SDK当前版本号
setEncrytionParam
- (int)setEncrytionParam:(HWRTCEncryptionConfig *_Nonnull)cryptionParam;
【功能说明】
设置端到端加密方式。需要在加入房间前设置生效。其中sdk加密模式,需要设置16位 加密秘钥和加密算法,app加密模式需要先设置回调接口。
【请求参数】
cryptionParam:加密配置,具体请参见HWRTCEncryptionConfig。
【返回参数】
● 0:成功。
● <0:失败。具体请参见HWRtcErrorCode。
setAccessResourceType
- (int)setAccessResourceType:(int)resType;
【功能说明】
设置接入的环境,不支持跨房间场景。
【请求参数】
resType:环境类型。
● 0:公网sfu资源。
● 1:公司局Sfu。
● 2:MPC。
● 3:LLL。
【返回参数】
● 0:成功。
● <0:失败。具体请参见HWRtcErrorCode。
4.4.1.3 房间功能 joinRoom
- (int)joinRoom:(HWRtcJoinParam * _Nonnull)joinParam;
【功能说明】
加入房间。该方法让用户加入通话房间。如果已在通话中,用户必须调用leaveRoom 退出当前通话,才能进入下一个房间。
【请求参数】
joinParam:用户信息,具体请参见HWRtcJoinParam。
【返回参数】
● 0:方法调用成功。
● > 0:方法调用失败。具体请参见HWRtcErrorCode。
注意
会触发以下回调:
●
onConnStateChange:连接状态发生改变。
●
onJoinSuccess:加入房间成功。
●
onRemoteUserOnline:用户收到当前用户加入房间的通知。
●
onJoinRoomFailure:加入房间失败。
changeUserRole
- (int)changeUserRole:(HWRtcRole)role signature:(NSString *)authorization ctime:(long long)ctime;
【功能说明】
设置用户在当前房间内的角色类型,角色切换时使用。
【请求参数】
● role:用户角色类型,joiner类型和player类型,具体请参见HWRtcRole。
● authorization:预留参数,填null。
● ctime:预留参数,填0。
【返回参数】
● 0:方法调用成功。
● > 0:方法调用失败。具体请参见HWRtcErrorCode。
注意
● 加入房间前,可以通过joinRoom的userRole参数确认角色信息。
● 加入指定房间后才可以在指定房间内进行角色切换,当前仅支持joiner和player角色 切换。跨房场景下,通过对应connection连接下的changeUserRole接口实现在跨入 房间中的角色类型切换。
● 切换成功触发onUserRoleChange回调。切换失败会触发onError回调,错误码
HWRtcErrorCode :HWRtcErrorCodeUserRoleChangeFail。
● 同一时间不同房间最多只能有一个joiner,player切换joiner的时候,需要将其他房 间的joiner先切换成player。
● 不支持缺省用户昵称入会。
renewAuthorization
- (int)renewAuthorization:(NSString *_Nonnull)signature time:(long long)time;
【功能说明】
鉴权签名过期,收到onAuthorizationExpired签名鉴权过期回调后,更新鉴权签名。
【请求参数】
● signature:鉴权签名字串。
● time:过期时间。
【返回参数】
● 0:方法调用成功。
● > 0:方法调用失败。具体请参见HWRtcErrorCode。
leaveRoom
- (int)leaveRoom;
【功能说明】
离开房间。
【请求参数】
无
【返回参数】
● 0:方法调用成功。
● > 0:方法调用失败。具体请参见HWRtcErrorCode。
注意
● 必须调用leaveRoom结束通话后才可以开始下一次通话。
● 会触发以下回调:
●
onLeaveRoom:离开房间回调。
●
onConnStateChange:连接状态改变回调。
●
onRemoteUserOffline:远端用户收到当前用户离开房间的通知。
changeUserName
- (int)changeUserName:(NSString *)userName;
【功能说明】
房间内设置用户自己的昵称。
【请求参数】
userName:变更的昵称。
【返回参数】
● 0:方法调用成功。
● > 0:方法调用失败。具体请参见HWRtcErrorCode。
注意
● 该接口仅支持房间内调用,更改的昵称会被实时同步到房间内其他用户的用户列 表,退出房间不会保存,再次加入房间变更为加入房间时设置的昵称(参考
joinRoom接口注意事项)。
● 会触发用户名变更通知的回调onUserNameChangedNotify。
createConnection
- (HWRtcConnection *_Nullable)createConnection:(NSString *_Nullable)roomId;
【功能说明】
根据房间ID,创建HWRtcConnection对象,为跨房做准备。
通过此接口创建一个与房间关联的HWRtcConnection连接对象。
该方法支持多次调用,创建多个HWRtcConnection连接对象,调用每个对象中的 joinRoom方法,可以同时加入到多个房间。在每个房间中,可以分别订阅和选看房间 中的用户。
具体请参见事件回调(HWRtcConnection)有关接口和回调。
【请求参数】
roomid:房间ID。
【返回参数】
HWRtcConnection:成功返回连接对象指针,失败返回为空。
注意
● 同一时间最多只能创建4个连接对象,每个连接对象对应的房间ID必须互不相同。
● 如果使用HWRtcConnection对象加入房间,则加入房间的房间ID不能和已创建连接 对象对应的房间ID相同。
● 同一时间只能以JOINER角色加入某一个房间。
4.4.1.4 音频管理 muteLocalAudio
- (int)muteLocalAudio:(BOOL)mute;
【功能说明】
设置是否关闭本地音频流发送。
【请求参数】
mute:YES表示关闭音频流发送,NO表示开启音频流发送。
【返回参数】
● 0:方法调用成功。
● > 0:方法调用失败。具体请参见HWRtcErrorCode。
注意
● 默认开启本地音频发流。
● 关闭本地音频发流,不影响本地音频采集。
● 远端用户订阅该用户时,远端用户会收到onRemoteAudioStateChangedNotify远 端流状态变化回调。
enableLocalAudioStream
- (int)enableLocalAudioStream:(BOOL)enable;
【功能说明】
设置是否开启本地麦克风采集音频。
【请求参数】
enable:YES表示开启,NO表示关闭。
【返回参数】
● 0:方法调用成功。
● > 0:方法调用失败。具体请参见HWRtcErrorCode。
注意
● 默认开启,关闭不会影响音频流发送。
● 远端用户订阅该用户时,远端用户会收到onRemoteAudioStateChangedNotify远 端流状态变化回调。
muteRemoteAudio
- (int)muteRemoteAudio:(NSString *)userid muted:(BOOL)muted;
【功能说明】
订阅或取消订阅对应远端用户的音频流。同一时间所有房间最多只能接收17路音频 流。
【请求参数】
● userid : 远端用户的id,唯一的标识。
● muted:YES表示取消订阅,NO表示订阅。默认值 NO。
【返回参数】
● 0:方法调用成功。
● > 0:方法调用失败。具体请参见HWRtcErrorCode。
muteAllRemoteAudio
- (int)muteAllRemoteAudio:(BOOL)muted;
【功能说明】
订阅或取消订阅当前房间全部用户的音频流。
【请求参数】
muted:YES表示取消订阅,NO表示订阅。
【返回参数】
● 0:方法调用成功。
● > 0:方法调用失败。具体请参见HWRtcErrorCode。
注意
● 取消所有音频流接收,同时也会取消接收新加入用户的音频流。
● 开启所有音频流接收,同时也会开启接收新加入用户的音频流。
● 默认开启所有音频流接收。
setVolumeNotifyInterval
- (int)setVolumeNotifyInterval:(int)volInterval;
【功能说明】
指定音量提示的时间间隔, 设置后按时间间隔触发回调,包括用户音量回调 onUserVolumeStatsNotify,本地采集音量回调onLocalVolumeChangedNotify。
【请求参数】
volInterval:间隔时间, 0 关闭音量上报不再触发回调 。volInterval取值范围是[100 10000]ms。建议设置为2000ms,默认值为2000ms。
【返回参数】
● 0:方法调用成功。
● > 0:方法调用失败。具体请参见HWRtcErrorCode。
adjustRecordingVolume
- (int)adjustRecordingVolume:(unsigned int)volume;
【功能说明】
调整录制音量值。
【请求参数】
volume:音量值,取值范围:[0,100],默认音量值为10, 此接口不会影响系统音 量。
【返回参数】
● 0:方法调用成功。
● >0:方法调用失败,具体请参见HWRtcErrorCode。
adjustPlaybackVolume
- (int)adjustPlaybackVolume:(unsigned int)volume;
- (int)adjustPlaybackVolume:(NSString *)userid volume :(unsigned int)volume;
【功能说明】
设置扬声器播放的音量。
【请求参数】
● volume:范围[0-100],其中10表示原始音量。
● userid:用户id。
【返回参数】
● 0:方法调用成功。
● > 0:方法调用失败。具体请参见HWRtcErrorCode。
注意
不影响系统音量。
setShareComputerSound
- (int)setShareComputerSound:(BOOL)enable;
【功能说明】
共享声音。
【请求参数】
enable:YES表示开启,NO表示关闭。 默认关闭。
【返回参数】
● 0:方法调用成功。
● > 0:方法调用失败。具体请参见HRTCErrorCode。
注意
● 用户需要从华为云获取共享音频驱动HWMeetAudioDevice.driver.zip,解压到 Resource文件夹(如果没有Resource文件夹,则需要创建)。
● 首次打开共享系统声音功能,需要获取管理员权限安装驱动。
sendAudioSeiMsg
- (int)sendAudioSeiMsg:(NSString *)message repeateCount:(int)repeateCount;
【功能说明】
发送音频SEI消息。
【请求参数】
● message:发送的内容。
● repeateCount:发送次数(1-10)。根据需要填发送次数,一般发1次。
【返回参数】
● 0:方法调用成功。
● < 0:方法调用失败。具体请参见HRTCErrorCode。
setDefaultSpeakerModel
- (int)setDefaultSpeakerModel:(HWRtcSpeakerModel)speakerModel;
【功能说明】
设置默认的声音播放模式,在房间外调用。
【请求参数】
speakerModel:声音播放模式,具体请参见HWRtcSpeakerModel。默认值为 HWRtcSpeakerModelSpeaker。
【返回参数】
● 0:方法调用成功。
● > 0:方法调用失败。具体请参见HRTCErrorCode。
setAudioFrameRecordParameters
- (int)setAudioFrameRecordParameters:(int)sampleRate channel:(int)channel mode:
(HWRTCAudioOperateMode)mode samplesPerCall:(int)samplesPerCall;
【功能说明】
设置采集回调参数,配合setAudioFrameObserver的onAudioFrameRecord使用。
【请求参数】
● sampleRate:onAudioFrameRecord中返回的采样率,可设置为8000,16000,
32000,44100,48000。
● channel:声道,1表示单声道;2表示双声道。
● mode:可读可写模式,具体请参见HWRTCAudioOperateMode。
● samplesPerCall:每次回调的单声道样点数(小于(sampleRate/
100)*channel*2*3, 大于(sample/300)*channel*3)。
【返回参数】
● 0:方法调用成功。
● > 0:方法调用失败。具体请参见HRTCErrorCode。
setAudioConfig
- (int)setAudioConfig:(HWRtcAudioQualityLevel)level scene:(HWRtcAudioSceneType)scene;
【功能说明】
设置使用场景。
【请求参数】
● level:表示档位,暂时只支持16k。具体请参见HWRtcAudioQualityLevel。
● scene:表示音频模式,具体请参见HWRtcAudioSceneType。
【返回参数】
● 0:方法调用成功。
● > 0:方法调用失败。具体请参见HWRtcErrorCode。
sendCommandData
- (int)sendCommandData:(NSString * _Nonnull)userid data:(NSString * _Nonnull)data;
【功能说明】
媒体通道Cmd命令数据包转发。
【请求参数】
● userId:用户id,空字符表示广播消息。
● data:数据包。
● length:数据包长度。
【返回参数】
● 0:方法调用成功。
● > 0:方法调用失败。具体请参见HRTCErrorCode。
enableCommandMsg
- (int)enableCommandMsg:(BOOL)enable;
【功能说明】
是否开启媒体通道发数据包功能,该接口需要在joinRoom前调用。
【请求参数】
enable:true表示开启,false表示关闭。
【返回参数】
● 0:方法调用成功。
● > 0:方法调用失败。具体请参见HRTCErrorCode。
4.4.1.5 视频管理 enableLocalVideo
- (int)enableLocalVideo:(BOOL)enable;
【功能说明】
设置是否开启摄像头采集视频。
【请求参数】
enable:YES表示开启,NO表示关闭。
【返回参数】
● 0:方法调用成功。
● > 0:方法调用失败。具体请参见HWRtcErrorCode。
注意
● 默认开启本地视频采集,关闭不会影响视频流发送。
● 远端用户订阅了本端用户时,会收到onRemoteVideoStateChange远端流状态变 化回调。
setVideoEncoderConfig
- (int)setVideoEncoderConfig:(HWRtcVideoEncode * _Nonnull)encParam;
- (int)setVideoEncoderConfig:(NSArray<HWRtcVideoEncode*>*)videoEncodes totalBitRate:(int)totalBitRate;
- (int)setVideoEncoderConfig:(HWRtcVideoEncode * _Nonnull)encParam;
【功能说明】
接口一:大小流模式设置大流发流编码参数。大流必须开启,小流建议开启。
接口二:多流模式,设置发流编码参数。可支持720P到90P的四路流同时推送。
接口三:设置辅流能力。
【请求参数】
● encParam:视频编码参数。包括流类型、宽、高、码率、帧率等。具体请参见
HWRtcVideoEncode。
● videoEncodes:视频编码参数数组,包括流类型、宽、高、码率、帧率等。具体 请参见HWRtcVideoEncode。
● totalBitRate:总带宽。
【返回参数】
● 0:方法调用成功。
● > 0:方法调用失败。具体请参见HWRtcErrorCode。
注意
● 华为SDK系统有默认的编码设置(720P+360P),一般可以不设置发流编码参数。
如果您确实需要自定义发流编码参数,请参考华为SDK系统推荐码表:表4-82和表
4-83,否则可能设置失败。
● 两重构接口针对不同使用方式并不通用,如果您使用的新选看系列接口
setupRemoteView,需配套使用接口一大小流模式设置发流编码参数的
setVideoEncoderConfig,enableSmallVideoStream接口来自定义您的发流编码
参数。同理使用旧的选看接口startRemoteStreamView需配套使用接口二:多流模 式设置发流编码参数setVideoEncoderConfig接口。● 同一端大小流或多流模式多路流设置的分辨率需保持一致,否则会设置失败。
● 多终端发流和选看的分辨率不一致时,sdk默认自适应并匹配最接近的分辨率(以 实际发流分辨率优先),可能会导致选看时设置的分辨率和实际收到的流分辨率不 一致。
● 调用接口一设置编码参数的分辨率发生变化时,需要先enableSmallVideoStream 关闭小流,否则会因为分辨率一致条件限制导致大流设置失败。即涉及分辨率变化
● 调用接口一设置编码参数的分辨率发生变化时,需要先enableSmallVideoStream 关闭小流,否则会因为分辨率一致条件限制导致大流设置失败。即涉及分辨率变化