环信实时通话分为视频通话和语音通话,SDK 提供简单的 API,方便开发者简单的接入实时通话功能。
实时语音和实时视频通话的数据流量如下:
使用 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。