You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
594 lines
22 KiB
594 lines
22 KiB
// |
|
// JCCall.h |
|
// JCSDK-OC |
|
// |
|
// Created by maikireton on 2017/8/11. |
|
// Copyright © 2017年 juphoon. All rights reserved. |
|
// |
|
|
|
#import <Foundation/Foundation.h> |
|
#import "JCCallCallback.h" |
|
#import "JCCallItem.h" |
|
|
|
/** |
|
* @defgroup 一对一通话模块 |
|
* @{ |
|
* 用于管理一对一通话 |
|
*/ |
|
|
|
/** |
|
*通话参数,作为 {@link JCCall#call:video:callParam: call} 方法最后一个参数的入参 |
|
*/ |
|
@interface JCCallParam : NSObject |
|
/** |
|
* 透传参数 |
|
* |
|
* 主叫方可以设置该参数,通过调用 {@link JCCall#call:video:callParam: call} 方法可传给被叫方 <br> |
|
* 设置后被叫方可获取该参数,通过 JCCallItem 的 @ref JCCallItem#extraParam "extraParam" 属性获取 |
|
*/ |
|
@property (nonatomic) NSString * __nullable extraParam; |
|
/** |
|
* 与小系统通话使用,服务端需要的凭证,用于标识通话唯一性,此参数只有在 @ref JCCallMediaConfigModeIOT 模式生效 |
|
* |
|
* 主叫方可以设置该参数,通过调用 {@link JCCall#call:video:callParam: call} 方法可传给被叫方 <br> |
|
* 设置后被叫方可获取该参数,通过 JCCallItem 的 @ref JCCallItem#ticket "ticket" 属性获取 |
|
*/ |
|
@property (nonatomic) NSString * __nullable ticket; |
|
/** |
|
* 构造方法 |
|
* |
|
* @param extraParam 透传参数,设置后被叫方可获取该参数 |
|
* @param ticket 与小系统通话使用,服务端需要的凭证,用于标识通话唯一性,此参数只有在 @ref JCCallMediaConfigModeIOT 模式生效 |
|
*/ |
|
+ (instancetype __nullable )callParamWithExtraParam:(NSString *__nullable)extraParam ticket:(NSString *__nullable)ticket; |
|
|
|
@end |
|
|
|
/** |
|
* 一对一通话媒体参数配置类,在调用{@link call:video:callParam: call} 方法之前,设置 @ref JCCall#mediaConfig "mediaConfig" 属性 |
|
*/ |
|
@interface JCCallMediaConfig : NSObject |
|
|
|
/** |
|
* 音频编解码 |
|
* |
|
* 协商优先级按顺序排列, 每个编解码用";"间隔, 注意大小写, 默认值为 "opus;AMR;G729" |
|
*/ |
|
@property (nonatomic, strong) NSString* __nonnull audioEnableCodecs; |
|
/** |
|
* 回声消除模式,默认为 @ref JCCallAecModeSDE ,参见: |
|
* - @ref JCCallAecModeAEC : 声学回声消除 |
|
* - @ref JCCallAecModeOS : 使用操作系统提供的声学回声消除功能 |
|
* - @ref JCCallAecModeAES : 声学回声抑制 |
|
* - @ref JCCallAecModeFDE : 软件自适应声学回声消除,能适应更大延时 |
|
* - @ref JCCallAecModeSDE : 软件自适应声学回声消除,追踪延迟精度高 |
|
*/ |
|
@property (nonatomic) JCCallAecMode audioAecMode; |
|
/** |
|
* 是否开启音频,默认开启 |
|
* - true: 开启 |
|
* - false: 关闭 |
|
*/ |
|
@property (nonatomic) bool audioArsEnable; |
|
/** |
|
* 音频最小码率,默认值为 20 kb |
|
*/ |
|
@property (nonatomic) int audioArsBitrateMin; |
|
/** |
|
* 音频最大码率,默认值为 75 kb |
|
*/ |
|
@property (nonatomic) int audioArsBitrateMax; |
|
/** |
|
* 是否打开语音red抗丢包,默认开启 |
|
* |
|
* @note 网络不稳定,一般选择打开 |
|
* |
|
* - true: 打开,能够增加payload码率 |
|
* - false: 关闭,能力节省码率从而降低功耗 |
|
*/ |
|
@property (nonatomic) bool audioRed; |
|
/** |
|
* 是否开启噪声抑制,默认关闭 |
|
* |
|
* @note 一般接收端声音质量好可关闭噪声抑制, 减少声音dsp处理, 降低功耗 |
|
* |
|
* - true: 开启 |
|
* - false: 关闭 |
|
*/ |
|
@property (nonatomic) bool audioRxAnr; |
|
/** |
|
* 是否开启rtx重传,默认关闭 |
|
* |
|
* @note |
|
* - 同FEC、NACK一起用, 能够降低功耗 |
|
* - 网络不稳定, 一般选择打开 |
|
* <p> |
|
* - true: 打开 |
|
* - false: 关闭 |
|
*/ |
|
@property (nonatomic) bool audioRtx; |
|
/** |
|
* 是否打开接收端声音自动增益控制,默认关闭 |
|
* |
|
* @note 接收端声音过大过小时, 可尝试打开 |
|
* |
|
* - true: 打开 |
|
* - false: 关闭 |
|
*/ |
|
@property (nonatomic) bool audioRxAgc; |
|
/** |
|
* 是否开启回声消除,默认开启 |
|
* - true: 开启 |
|
* - false: 关闭 |
|
*/ |
|
@property (nonatomic) bool audioQosAec; |
|
/** |
|
* 是否开启发送端噪声抑制,默认开启 |
|
* |
|
* @note |
|
* - 接收端声音噪声大,提高抑制等级 |
|
* - 接收端声音小,可在不影响声音质量情况下降低抑制等级或者关闭抑制 |
|
* |
|
* - true: 开启 |
|
* - false: 关闭 |
|
*/ |
|
@property (nonatomic) bool audioQosAnr; |
|
/** |
|
* 是否开启发送端声音自动增益控制,默认开启 |
|
* - true: 开启 |
|
* - false: 关闭 |
|
*/ |
|
@property (nonatomic) bool audioQosAgc; |
|
/** |
|
* 是否开启静音检测,默认关闭 |
|
* - true: 开启 |
|
* - false: 关闭 |
|
*/ |
|
@property (nonatomic) bool audioQosVad; |
|
/** |
|
* 音频打包时长,默认值为 20 |
|
*/ |
|
@property (nonatomic) int audioPacketTime; |
|
/** |
|
* 发送端声音自动增益控制强度,默认值为9 |
|
* |
|
* 取值范围为[0,90],数值越大,增益强度越大。当 @ref JCCallMediaConfig.audioQosAgc "audioQosAgc" 为 true 时有效 |
|
*/ |
|
@property (nonatomic) int audioQosAgcGain; |
|
|
|
/** |
|
* 视频编解码,协商优先级按顺序排列,默认值为 "H264-SVC;H264;VP8" |
|
*/ |
|
@property (nonatomic, strong) NSString* __nonnull videoEnableCodecs; |
|
/** |
|
* 视频接收宽,默认值值为 640 |
|
*/ |
|
@property (nonatomic) int videoResolutionRecvWidth; |
|
/** |
|
* 视频接收高,默认值为 360 |
|
*/ |
|
@property (nonatomic) int videoResolutionRecvHeight; |
|
/** |
|
* 视频发送宽,默认值为 640 |
|
*/ |
|
@property (nonatomic) int videoResolutionSendWidth; |
|
/** |
|
* 视频发送高,默认值为 360 |
|
*/ |
|
@property (nonatomic) int videoResolutionSendHeight; |
|
/** |
|
* 视频初始码率,默认值为 800 kb |
|
*/ |
|
@property (nonatomic) int videoBitrate; |
|
/** |
|
* 发送帧率,默认值为 24 |
|
*/ |
|
@property (nonatomic) int videoSendFramerate; |
|
/** |
|
* 是否开启视频 ars,默认开启 |
|
* - true: 开启 |
|
* - false: 关闭 |
|
*/ |
|
@property (nonatomic) bool videoArsEnable; |
|
/** |
|
* 视频最小码率,默认值为 50 kb |
|
*/ |
|
@property (nonatomic) int videoArsBitrateMin; |
|
/** |
|
* 视频最大码率,默认值为 1500 kb |
|
*/ |
|
@property (nonatomic) int videoArsBitrateMax; |
|
/** |
|
* 视频最小帧率,默认值为 1 kb |
|
*/ |
|
@property (nonatomic) int videoArsFramerateMin; |
|
/** |
|
* 视频最大帧率,默认值为 30 kb |
|
*/ |
|
@property (nonatomic) int videoArsFramerateMax; |
|
/** |
|
* 是否开启rfc 2198 语音fec-red,默认开启 |
|
* |
|
* @note 开启后可以增强抗丢包能力,会增加一倍的payload码率,不会增加包头。比如Opus 55kbps增加一倍码率后,最终码率达到90kbps=55+35;Opus 10kbps增加一倍码率后,最终码率达到16kbps=10+6 |
|
* |
|
* - true: 开启 |
|
* - false: 关闭 |
|
*/ |
|
@property (nonatomic) bool videoRedFec; |
|
|
|
/** |
|
* 本端视频分辨率是否影响请求分辨率,默认影响 |
|
* |
|
* 这里举个例子,有假设条件: |
|
* 1. 本端默认请求是640*360的分辨率 |
|
* 2. 本端屏幕分辨率为360*360 |
|
* - 若此参数设置成 true:请求分辨率 360*360 |
|
* - 若此参数设置成 false: 请求分辨率 640*360 |
|
* <p> |
|
* - true: 影响 |
|
* - false: 不影响 |
|
*/ |
|
@property (nonatomic) bool videoRecvFullScreen; |
|
/** |
|
* 是否开启视频数据以 SmallNalu 方式打包,默认开启 |
|
* |
|
* 开启后一个包打包的数据多,减少包头的码率,从而降低功耗 |
|
* |
|
* - true: 开启 |
|
* - false: 关闭 |
|
*/ |
|
@property (nonatomic) bool videoSmallNalu; |
|
/** |
|
* 是否开启分辨率控制,默认开启 |
|
* - true: 开启, 分辨率随网络波动而变化 |
|
* - false: 关闭, 固定分辨率 |
|
*/ |
|
@property (nonatomic) bool videoResolutionControl; |
|
|
|
/** |
|
* 视频关键帧间隔(毫秒),@ref JCCallMediaConfigMode "JCCallMediaConfigModeIOT" 模式下默认为 5000 |
|
* |
|
* 仅在 @ref JCCallMediaConfigMode "JCCallMediaConfigModeIOT" 模式下生效,其他模式下设置无效 |
|
*/ |
|
@property (nonatomic) int videoKeyPeriod; |
|
|
|
/** |
|
* 心跳间隔,默认心跳间隔为30秒 |
|
* |
|
* 取值范围为(0,3600)。比如本端设置了心跳间隔为 X 秒,那么对端在 3*X 秒内都没有收到本端的心跳时,对端将收到 {@link JCCallCallback.onCallItemRemove:reason:description: onCallItemRemove} 通话结束的回调 |
|
*/ |
|
@property (nonatomic) int heartbeatTime; |
|
|
|
/** |
|
* 字符串信息 |
|
* @return 返回 JCCall 实例信息 |
|
*/ |
|
-(NSString* __nonnull)toString; |
|
|
|
/** |
|
* 根据模式生成配置参数 |
|
* |
|
* 可通过此方法生成 JCCallMediaConfig 对象,然后在调用 {@link JCCall#call:video:callParam: call} 方法前,将 JCCallMediaConfig 对象赋值给 @ref JCCall#mediaConfig "mediaConfig" 属性 |
|
* |
|
* @param mode 通话媒体配置模式,参见: |
|
* - @ref JCCallMediaConfigMode360P : 360P |
|
* - @ref JCCallMediaConfigMode720P : 720P |
|
* - @ref JCCallMediaConfigModeIntelligentHardware : 智能硬件场景,比如会和手表通话等 |
|
* - @ref JCCallMediaConfigModeIOT : 与asr,展讯等小系统互通 |
|
* @return JCCallMediaConfig 通话媒体配置对象 |
|
*/ |
|
+(JCCallMediaConfig* __nonnull)generateByMode:(JCCallMediaConfigMode)mode; |
|
|
|
@end |
|
|
|
/** |
|
* 一对一通话类 |
|
* |
|
* 该类的所有实例方法在调用时需保证用户的登录状态为已登录 |
|
*/ |
|
@interface JCCall : NSObject |
|
|
|
/** |
|
* 获得通话对象列表 |
|
* |
|
* 当 @ref maxCallNum > 1 时,callItems 通话对象列表中可能存在多个音频通话 |
|
*/ |
|
@property (nonatomic, readonly, strong) NSArray* __nullable callItems; |
|
|
|
/** |
|
* 最大通话数,默认值为1 |
|
* |
|
* @note 当通话数到达最大通话数后,调用 {@link call:video:callParam: call} 接口呼出会失败,收到来电会自动拒绝 |
|
*/ |
|
@property (nonatomic) int maxCallNum; |
|
|
|
/** |
|
* 当音频接收网络状态为无网络时是否挂断,默认为 false |
|
* |
|
* 即 @ref JCCallItem.audioNetReceiveStatus "audioNetReceiveStatus" 状态为 @ref JCCallNetWorkDisconnected 时是否挂断 |
|
* |
|
* - true: 挂断 |
|
* - false: 不挂断 |
|
*/ |
|
@property (nonatomic) bool termWhenNetDisconnected; |
|
|
|
/** |
|
* 当前的媒体配置参数 |
|
* @note |
|
* 该属性在调用 {@link call:video:callParam: call} 方法之前设置才生效<br> |
|
* JCCallMediaConfig 对象建议通过 {@link JCCallMediaConfig#generateByMode: generateByMode} 方法创建 |
|
*/ |
|
@property (nonatomic, strong) JCCallMediaConfig* __nonnull mediaConfig; |
|
|
|
/** |
|
* 创建 JCCall 对象 |
|
* |
|
* JCCall 的所有接口函数,如无特殊说明,都建议在主线程调用 |
|
* |
|
* @note |
|
* - 调用此方法创建 JCCall 对象后,期间没有调用过 {@link destroy} 方法销毁对象,然后又重复调用此方法,会直接返回第一次创建的 JCCall 对象 |
|
* - 调用此方法前确保 JCClient 已完成初始化,即 @ref JCClient.state "state" 状态值不等于 @ref JCClientStateNotInit |
|
* |
|
* @param client JCClient 对象 |
|
* @param mediaDevice JCMediaDevice 对象,通过 {@link JCMediaDevice#create:callback: create} 方法创建 |
|
* @param callback JCCallCallback 对象,用于回调相关通知 |
|
* @return JCCall 对象 |
|
* @exception "JCClient、JCMediaDevice、JCCallCallback 任意一个参数传空就会创建失败" |
|
*/ |
|
+(JCCall* __nullable)create:(JCClient* __nonnull)client mediaDevice:(JCMediaDevice* __nonnull)mediaDevice callback:(id<JCCallCallback> __nonnull)callback; |
|
|
|
/** |
|
* 销毁 JCCall 对象 |
|
* |
|
* 该方法为同步调用,需要等待 JCCall 实例资源释放后才能执行其他操作,调用此方法后,你将无法再使用 JCCall 的其它方法和回调。<br> |
|
* 我们 **不建议** 在 JCSDK 的回调中调用此方法销毁 JCCall 对象,否则会出现崩溃。<br> |
|
* 如需在销毁后再次创建 JCCall 实例,需要等待 @ref destroy 方法执行结束后再创建实例。 |
|
*/ |
|
+(void)destroy; |
|
|
|
/** |
|
* 发起一对一呼叫 |
|
* |
|
* 若发起的是音频呼叫,需要保证本地不存视频通话,并且本地通话数未达到最大通话数,最大通话数为:@ref maxCallNum <br> |
|
* 若发起的是视频呼叫,需要保证本地不存在通话 <br> |
|
* 发起呼叫成功后,会收到 {@link JCCallCallback#onCallItemAdd: onCallItemAdd} 通知 <br> |
|
* 以下两种情况会收到 {@link JCCallCallback#onCallItemRemove:reason:description: onCallItemRemove} 通知: |
|
* - 本端发起视频呼叫时,对方已存在通话 |
|
* - 本端发起音频呼叫时,对方已存在视频通话 |
|
* |
|
* @note 在调用此接口时确保用户的登录状态为已登录 |
|
* |
|
* @param userId 对方的用户标识 |
|
* @param video 是否视频呼叫 |
|
* - true: 视频呼叫 |
|
* - false: 音频呼叫 |
|
* @param callParam JCCallParam 通话参数对象,此参数可为空。详细定义见: JCCallParam |
|
* @return 是否正常调用 |
|
* - true:正常执行调用流程 |
|
* - false:调用失败 |
|
*/ |
|
-(bool)call:(NSString* __nonnull)userId video:(bool)video callParam:(JCCallParam * __nullable)callParam; |
|
|
|
/** |
|
* 挂断 |
|
* |
|
* 调用接口成功会收到 {@link JCCallCallback#onCallItemRemove:reason:description: onCallItemRemove} 通知 |
|
* |
|
* @param item JCCallItem 对象,不能为空,并且 @ref callItems 通话列表中要包含此对象 |
|
* @param reason @ref JCCallReason "挂断原因" |
|
* @param description 挂断描述 |
|
* @return 是否正常调用 |
|
* - true:正常执行调用流程 |
|
* - false:调用失败 |
|
*/ |
|
-(bool)term:(JCCallItem* __nonnull)item reason:(JCCallReason)reason description:(NSString* __nullable)description; |
|
|
|
/** |
|
* 接听 |
|
* |
|
* 调用接口成功会收到 {@link JCCallCallback.onCallItemUpdate:changeParam: onCallItemUpdate} 通知<br> |
|
* 另外还有两种情况也会收到 {@link JCCallCallback.onCallItemUpdate:changeParam: onCallItemUpdate} 通知:1、若收到的是视频呼叫,而本端选择了音频接听 2、若此路通话不是活跃的,会将此路通话设为活跃通话。<br> |
|
* 调用接口失败会收到 {@link JCCallCallback.onCallItemRemove:reason:description: onCallItemRemove} 通知 |
|
* |
|
* @param item JCCallItem 对象,不能为空,并且 @ref callItems 通话列表中要包含此对象 |
|
* @param video 针对视频呼入可以选择以视频接听还是音频接听 |
|
* - true: 视频接听 |
|
* - false: 音频接听 |
|
* @return 是否正常调用 |
|
* - true:正常执行调用流程 |
|
* - false:调用失败 |
|
*/ |
|
-(bool)answer:(JCCallItem* __nonnull)item video:(bool)video; |
|
|
|
/** |
|
* 开启/取消音频输入静音 |
|
* |
|
* @deprecated 从 v2.7.1 废弃。Juphoon 不建议你使用。如果你想开启/取消音频输入静音,请改用 {@link muteMicrophone:mute: muteMicrophone} 方法 |
|
* |
|
* 调用成功会收到 {@link JCCallCallback.onCallItemUpdate:changeParam: onCallItemUpdate} 通知 |
|
* |
|
* 开启后对端听不到本端的声音,通过 @ref JCCallItem#mute "mute" 来决定开启/取消静音 |
|
* - @ref JCCallItem#mute "mute" 为 true,即静音状态时: 取消静音 |
|
* - @ref JCCallItem#mute "mute" 为 false,即不是静音状态时: 开启静音 |
|
* |
|
* @param item JCCallItem 对象,不能为空,并且 @ref callItems 通话列表中要包含此对象,此对象的通话状态必须为通话中 |
|
* @return 是否正常调用 |
|
* - true:正常执行调用流程 |
|
* - false:调用失败 |
|
*/ |
|
-(bool)mute:(JCCallItem* __nonnull)item; |
|
|
|
/** |
|
* 开启/取消音频输入静音 |
|
* |
|
* 开启后对端将听不到本端的声音 |
|
* - @ref JCCallItem#microphoneMute "microphoneMute" 为 true,即静音状态时: 取消静音 |
|
* - @ref JCCallItem#microphoneMute "microphoneMute" 为 false,即不是静音状态时: 开启静音 |
|
* |
|
* @param item JCCallItem 对象,不能为空,并且本地缓存的通话列表中要包含此对象,此对象的通话状态必须为通话中 |
|
* @param mute 是否静音 |
|
* @return 是否正常调用 |
|
* - true:正常执行调用流程,会收到 {@link JCCallCallback#onCallItemUpdate:changeParam: onCallItemUpdate} 通知 |
|
* - false:调用失败,不会收到通知 |
|
*/ |
|
-(bool)muteMicrophone:(JCCallItem* __nonnull)item mute:(bool)mute; |
|
|
|
/** |
|
* 开启/取消音频输出静音 |
|
* |
|
* 开启后本端将听不到远端的声音 |
|
* - @ref JCCallItem#speakerMute "speakerMute" 为 true,即静音状态时: 取消静音 |
|
* - @ref JCCallItem#speakerMute "speakerMute" 为 false,即不是静音状态时: 开启静音 |
|
* |
|
* @param item JCCallItem 对象,不能为空,并且本地缓存的通话列表中要包含此对象,此对象的通话状态必须为通话中 |
|
* @param mute 是否静音 |
|
* @return 是否正常调用 |
|
* - true:正常执行调用流程,会收到 {@link JCCallCallback#onCallItemUpdate:changeParam: onCallItemUpdate} 通知 |
|
* - false:调用失败,不会收到通知 |
|
*/ |
|
-(bool)muteSpeaker:(JCCallItem* __nonnull)item mute:(bool)mute; |
|
|
|
/** |
|
* 开启/取消呼叫保持 |
|
* |
|
* 调用成功会收到 {@link JCCallCallback.onCallItemUpdate:changeParam: onCallItemUpdate} 通知 |
|
* |
|
* 开启呼叫保持后,通话将被挂起,通过 @ref JCCallItem#hold "hold" 来决定开启/取消呼叫保持 |
|
* - @ref JCCallItem#hold "hold" 为 true,即呼叫保持状态时: 取消呼叫保持 |
|
* - @ref JCCallItem#hold "hold" 为 false,即不是呼叫保持状态时: 开启呼叫保持 |
|
* |
|
* @note 只针对音频,如果是视频通话则要上层处理视频逻辑 |
|
* |
|
* @param item JCCallItem 对象,不能为空,并且 @ref callItems 通话列表中要包含此对象,此对象的通话状态必须为通话中 |
|
* @return 是否正常调用 |
|
* - true:正常执行调用流程 |
|
* - false:调用失败 |
|
*/ |
|
-(bool)hold:(JCCallItem* __nonnull)item; |
|
|
|
/** |
|
* 开启/关闭通话录音 |
|
* |
|
* 调用成功会收到 {@link JCCallCallback.onCallItemUpdate:changeParam: onCallItemUpdate} 通知 |
|
* |
|
* 开启通话录音,需要保证没有在录音也没有在录制视频<br> |
|
* 关闭通话录音,需要保证当前通话正在录音 |
|
* |
|
* @param item JCCallItem 对象,不能为空,并且 @ref callItems 通话列表中要包含此对象 |
|
* @param enable 开启/关闭录音 |
|
* - true: 开启录音 |
|
* - false: 关闭录音 |
|
* @param filePath **录音文件的本地保存路径,由用户自行指定,需精确到文件名及格式,例如:/Documents/JuphoonCloud/audio.wmv。请确保目录存在且可写。** |
|
* @return 是否正常调用 |
|
* - true:正常执行调用流程 |
|
* - false:调用失败 |
|
*/ |
|
-(bool)audioRecord:(JCCallItem* __nonnull)item enable:(bool)enable filePath:(NSString* __nullable)filePath; |
|
|
|
/** |
|
* 开启/关闭视频通话录制 |
|
* |
|
* 调用成功会收到 {@link JCCallCallback.onCallItemUpdate:changeParam: onCallItemUpdate} 通知 |
|
* |
|
* 开启视频录制,需要保证 1、没有在录音 2、若是录制远端视频,要保证没有在录制远端视频,并且远端在上传视频流 3、若是录制本端视频,要保证没有在录制本端视频,并且本端在上传视频流。<br> |
|
* 关闭视频录制,需要保证 1、若是关闭远端视频,要保证正在录制远端视频 2、若是关闭本端视频,要保证正在录制本端视频 |
|
* |
|
* @param item JCCallItem 对象,不能为空,并且 @ref callItems 通话列表中要包含此对象 |
|
* @param enable 是否开启视频通话录制 |
|
* - true: 开启 |
|
* - false: 关闭 |
|
* @param remote 是否录制远端视频源 |
|
* - true: 录制远端视频 |
|
* - false: 录制本端视频 |
|
* @param width 录制视频宽像素 |
|
* @param height 录制视频高像素 |
|
* @param filePath **录制视频文件的本地保存路径,由用户自行指定,需精确到文件名及格式,例如:/Documents/JuphoonCloud/video.mp4。请确保目录存在且可写。** |
|
* @param bothAudio 是否录制两端音频 |
|
* - true: 录制两端音频 |
|
* - false: 录制视频端音频。也就是说 remote 为 true 就录制远端音频,remote 为 false 录制本端音频。 |
|
* @return 是否正常调用 |
|
* - true:正常执行调用流程 |
|
* - false:调用失败 |
|
*/ |
|
-(bool)videoRecord:(JCCallItem* __nonnull)item enable:(bool)enable remote:(bool)remote width:(int)width height:(int)height filePath:(NSString* __nullable)filePath bothAudio:(bool)bothAudio; |
|
|
|
/** |
|
* 切换活跃通话 |
|
* |
|
* 调用此方法时,入参 JCCallItem 对象不是活跃的,则会收到 {@link JCCallCallback.onCallItemUpdate:changeParam: onCallItemUpdate} 通知<br> |
|
* 入参 JCCallItem 对象已是活跃的,则不会收到通知 |
|
* |
|
* @param item 需要变为活跃状态的 JCCallItem 对象 |
|
* @return 是否正常调用 |
|
* - true:正常执行调用流程 |
|
* - false:调用失败 |
|
*/ |
|
-(bool)becomeActive:(JCCallItem* __nonnull)item; |
|
|
|
/** |
|
* 开启/关闭视频流发送 |
|
* |
|
* 调用成功会收到 {@link JCCallCallback.onCallItemUpdate:changeParam: onCallItemUpdate} 通知 |
|
* |
|
* 通过 JCCallItem 对象的 @ref JCCallItem.uploadVideoStreamSelf "uploadVideoStreamSelf" 状态来决定开启还是关闭视频流的发送 |
|
* - 若 @ref JCCallItem.uploadVideoStreamSelf "uploadVideoStreamSelf" 为 true,即已在上传视频流: 关闭视频流发送 |
|
* - 若 @ref JCCallItem.uploadVideoStreamSelf "uploadVideoStreamSelf" 为 false,即未上传视频流: 开启视频流发送 |
|
* |
|
* @note 用于视频通话中 |
|
* |
|
* @param item JCCallItem 对象,不能为空,并且 @ref callItems 通话列表中要包含此对象 |
|
* @return 是否正常调用 |
|
* - true:正常执行调用流程 |
|
* - false:调用失败 |
|
*/ |
|
-(bool)enableUploadVideoStream:(JCCallItem* __nonnull)item; |
|
|
|
/** |
|
* 通过通话建立的通道发送数据 |
|
* |
|
* @param item 需要发送数据的 JCCallItem 对象,不能为空,并且 @ref callItems 通话列表中要包含此对象 |
|
* @param type 文本消息类型,用户可以自定义,例如text,xml等 |
|
* @param content 文本内容 |
|
* @return 是否正常调用 |
|
* - true:正常执行调用流程 |
|
* - false:调用失败 |
|
*/ |
|
-(bool)sendMessage:(JCCallItem * __nonnull)item type:(NSString * __nonnull)type content:(NSString * __nonnull)content; |
|
|
|
/** |
|
* 获得当前通话统计信息 |
|
* |
|
* 统计信息以Json字符串形式返回,其中包含 "Audio"、"Video"、"Mtp" 三个键值 |
|
* |
|
* @return 当前通话统计信息 |
|
*/ |
|
-(NSString * __nullable)getStatistics; |
|
|
|
/** |
|
* 获得当前活跃的通话 |
|
* |
|
* 当上层收到 {@link JCCallCallback#onCallItemAdd: onCallItemAdd} 回调后,调用此方法可以获取到当前活跃的通话对象,可以使用该对象进行接听、渲染视频画面等操作。<br> |
|
* 若上层在收到 {@link JCCallCallback#onCallItemAdd: onCallItemAdd} 回调前调用了此方法,将会返回 nil。 |
|
* |
|
* @return |
|
* - JCCallItem 对象:当前活跃的通话对象 |
|
* - nil:当前没有活跃的通话 |
|
*/ |
|
-(JCCallItem* __nullable)getActiveCallItem; |
|
|
|
/** |
|
* 发送DTMF信息 |
|
* |
|
* @param item 需要发送数据的 JCCallItem 对象 |
|
* @param value @ref JCCallDtmf "DTMF值" |
|
* @return 是否正常调用 |
|
* - true:正常执行调用流程 |
|
* - false:调用失败 |
|
*/ |
|
-(bool)sendDtmf:(JCCallItem *_Nonnull)item value:(JCCallDtmf)value; |
|
|
|
@end |
|
|
|
/** |
|
* @} |
|
*/
|
|
|