====== 实时通话 ====== ---- 环信实时通话分为视频通话和语音通话,SDK 提供简单的 API,方便开发者简单的接入实时通话功能。 ===== 实时通话的数据流量 ===== 实时语音和实时视频通话的数据流量如下: * 实时语音:双向 170k bytes/minute * 实时视频:双向 2.5M~3M bytes/minute ===== 配置工程 ===== 使用 libEaseMobClientSDK.a,包含头文件 #import”EaseMob.h”,调用方式:[EaseMob sharedInstance].callManager。 ===== 实时语音接口 ===== 关于实时语音的接口如下: /*! @method @brief 将实时语音静音 @param sessionId 要进行的实时通话的ID @param isSilence 是否静音 @result 错误信息 @discussion */ - (EMError *)markCallSession:(NSString *)sessionId asSilence:(BOOL)isSilence; /*! @method @brief 进行实时语音 @param chatter 要进行语音通话的username(不能与自己通话) @param timeout 超时时间(传0,使用SDK默认超时时间) @param pError 检查语音通话条件是否具备,不具备则返回错误信息(未进行实际的拨打动作) @result 语音通话的实例 @discussion 需监听[callSessionStatusChanged:changeReason:error:] */ - (EMCallSession *)asyncMakeVoiceCall:(NSString *)chatter timeout:(NSUInteger)timeout error:(EMError **)pError; ===== 实时视频通话接口 ===== /*! @method @brief 进行实时视频 @param chatter 要进行视频通话的username(不能与自己通话) @param timeout 超时时间(传0,使用SDK默认超时时间) @param pError 检查视频通话条件是否具备,不具备则返回错误信息(未进行实际的拨打动作) @result 视频通话的实例 @discussion 需监听[callSessionStatusChanged:changeReason:error:] */ - (EMCallSession *)asyncMakeVideoCall:(NSString *)chatter timeout:(NSUInteger)timeout error:(EMError **)pError; /*! @method @brief 实时视频传送摄像头数据 @param data 摄像头数据,必须是待编码的yuv数据 @param width 图像的宽 @param height 图像的高 */ - (void)processPreviewData:(char *)data width:(int)width height:(int)height; ===== 实时通话通用接口及回调 ===== 关于实时通话通用接口如下: /*! @method @brief 接收方同意语音通话的请求 @param sessionId 要进行的语音通话的ID @result 检查语音通话条件是否具备,不具备则返回错误信息(未进行实际的拨打动作) @discussion 需监听[callSessionStatusChanged:changeReason:error:] */ - (EMError *)asyncAnswerCall:(NSString *)sessionId; /*! @method @brief 发起方或接收方结束通话 @param sessionId 要进行的语音通话的ID @param reason 结束原因 @result 检查挂断语音通话条件是否具备,不具备则返回错误信息 @discussion 需监听[callSessionStatusChanged:changeReason:error:] */ - (EMError *)asyncEndCall:(NSString *)sessionId reason:(EMCallStatusChangedReason)reason; 暂停和恢复语音或视频数据传输: /*! @method @brief 暂停语音数据传输 */ - (void)pauseVoiceTransfer; /*! @method @brief 恢复语音数据传输 */ - (void)resumeVoiceTransfer; /*! @method @brief 暂停视频(图像)数据传输 */ - (void)pauseVideoTransfer; /*! @method @brief 恢复视频(图像)数据传输 */ - (void)resumeVideoTransfer; 实时视频录制接口: /*! @method @brief 开始录制视频 */ - (BOOL)videoStartRecord:(NSString*)path; /*! @method @brief 停止录制视频 */ - (NSString*)videoStopRecord; 开启动态码率,根据网络自适应调整码率。 /*! @method @brief 是否开启动态码率,默认关闭 @param aFlag YES开启,NO关闭 */ - (void)setVideoAdaptive:(BOOL)aFlag; 关于实时通话的回调如下: /*! @method @brief 实时通话状态发生变化时的回调 @param callSession 实时通话的实例 @param reason 变化原因 @param error 错误信息 */ - (void)callSessionStatusChanged:(EMCallSession *)callSession changeReason:(EMCallStatusChangedReason)reason error:(EMError *)error; /*! @method @brief 实时通话网络状态发生变化时的回调(弱网检测) @param callSession 实时通话的实例 @param reason 变化原因 @param error 错误信息 */ - (void)callSessionNetWorkStatusChanged:(EMCallSession *)callSession changeReason:(EMCallStatusNetWorkChangedReason)reason error:(EMError *)error; 具体功能实现见 Demo。 ---- 上一页:[[start:300iosclientintegration:75chatroommgmt|聊天室管理]] 下一页:[[start:300iosclientintegration:300iosredpacket|红包集成]]