实时通话


环信实时通话分为视频通话和语音通话,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。


上一页:聊天室管理

下一页:红包集成