# 实现视频通话
本文档为您展示 实现视频通话(访客侧)的相关步骤,帮助您在远程银行和视频客服的场景下实现智能排队、屏幕共享、全景录像、访客管理的相关能力。
当您成功获取 Juphoon Guest Plugin 之后,您可以快速集成视频通话服务,同时体验本产品的基本业务流程。
TIP
我们所有的方法都建议在主线程调用,否则可能会出现异常无法正常使用,回调接口也都在主线程上报。如果要在我们的回调接口中去登出,请异步到主线程调用,否则可能会出现异常无法正常使用。
# 步骤一: 登录
登录菊风账号,调用 login (opens new window),登录过程中进行初始化登录配置。
/**
* 登录
* 登录结果通过onLogin 回调
* @param context Context
* @param guestConfig 基本初始化登录配置信息
* @return 调用是否成功
*/
public boolean login(Context context, JCCGuestConfig guestConfig)
初始化参数详见 JCCLoginParam (opens new window)
/**
* 初始化相关参数
*/
public class JCCLoginParam {
/**
* 服务器地址(必填)
*/
public void setServer(String server);
/**
* appKey(必填)
*/
public void setAppKey(String appKey);
/**
* 用户名(必填)
*/
public void setUserName(String userName);
/**
* 应用名(选填)
*/
public void setAppName(String appName);
/**
* 设置SDK信息存储目录,该目录下的log目录为日志目录(选填)
*/
public void setSdkInfoDir(String sdkInfoDir);
/**
* 用户昵称(选填)
*/
public void setNickName(String nickName);
/**
* 终端登录类型,支持多终端登录,默认所有终端相同会导致互踢(选填)
*/
public void setTerminalType(String terminalType);
/**
* 设备id(选填)
*/
public void setDeviceId(String deviceId);
/**
* token校验类型(选填)
*/
public void setTokenType(String tokenType);
/**
* token(选填)
*/
public void setToken(String token);
/**
* S3国密密钥(选填)
*/
public void setCertificate(String certificate);
/**
* 帐户分录, 如果支持国密S3则需要设置certificate,否则不设置(选填)
*/
public void setAccountEntry(String accountEntry);
/**
* 加速云KEY
*/
public void setAccelerateKey(String accelerateKey);
/**
* 加速云KEY密钥
*/
public void setAccelerateKeySecret(String accelerateKeySecret);
/**
* 是否开启 RPC 抗信令丢包控制(70%的上下行信令丢包), 默认false
*/
public void setLooseTimeoutControl(boolean looseTimeoutControl);
}
示例代码:
JCCGuestConfig config = new JCCGuestConfig();
...
config.setServer("server"); //接入服务器的地址
config.setAppKey("appKey"); //appKey
config.setAppName("JCCGuest");//设置应用名
config.setUserName("test"); //用户id
config.setNickName("昵称"); //设置用户昵称
...
JCCGuestManager.getInstance().login(context, config);
# 步骤二:获取登录状态
调用 getClientLoginState (opens new window) 获取登录状态,返回登录状态详见 JCCClientState (opens new window)
/**
* 获取当前登录状态
* @return 当前登录状态
*/
@JCCClientState
public int getClientLoginState()
# 步骤三: 呼叫实现通话
调用call (opens new window)方法,可对组号或者座席id实现呼叫进行通话。
/**
* 发起呼叫
*
* @param number 组号或座席用户ID
* @param callParam 设置创建呼叫参数
* @param isOneToOne 是否为点对点呼叫,当为点对点呼叫时, number参数需传入座席用户ID;反之则传入业务组号
* @return 接口调用结果
* - true 表示调用成功,呼叫结果通过{@link JCCGuestCallback#onCallStateChanged(int, JCCInviter, int) onCallStateChanged} 回调通知
* - false 表示调用异常
*/
public boolean call(String numberOrUserId, JCCGuestCallParam callParam, boolean isOneToOne)
呼叫参数详见: JCCGuestCallParam (opens new window)
/**
* 呼叫参数
*/
public class JCCGuestCallParam {
/**
* 设置是否需要加急按钮,默认需要
*/
public void setUrgent(boolean urgent);
/**
* 设置本地录制文件路径,必须包含文件名,如xx.mp4,默认在 /sdcard/localRecord 目录下
*/
public void setLocalRecordFilePath(String localRecordFilePath);
/**
* 设置随路参数,消息大小限制在2k
*/
public void setExtraInfo(String extraInfo);
/**
* 设置是否由服务器自动开启录制,默认开启
*/
public void setAutoRecord(boolean autoRecord);
/**
* 设置通话视频全局宽高比,默认16/9
*/
public void setWholeRatio(float wholeRatio);
/**
* 设置通话视频最大分辨率,默认为 {@link JCCConstants#RESOLUTION_720p}
*
* 当 {@link #setSvcResolution(String)} svcResolution} 有值时,此参数设置无效,建议使用 {@link #setSvcResolution(String)} svcResolution}
*/
public void setMaxResolution(@JCCResolution int maxResolution);
/**
* 设置通话视频最大帧率 1-30, 默认值为 24
*
* @note 当参数 {@link #setVideoDefinition(int)} videoDefinition} 为 {@link JCCConstants#DEFINITION_CUSTOM DEFINITION_CUSTOM} 时有效
*/
public void setMaxFrameRate(int maxFrameRate);
/**
* 设置 svc 分辨率,默认为 "1 180 250 360 600 720 1400"
* <p>
* 用于自定义分层参数和码率
* <p>
* 格式:
* 高度公约数 第一层高倍数 第一层码率 第二层高倍数 第二层码率 第三层高倍数 第三层码率 第四层高倍数 第四层码率 <br>
* 说明 <br>
* 1)默认宽高比16:9,即 @ref wholeRatio <br>
* 2)编码宽高最后被裁成16整除 <br>
* 例如 "1 180 250 360 600 720 1400" <br>
* 第一层 分辨率 宽320(180*1/9*16)高 180(180*1); 码率250kbps <br>
* 第二层 分辨率 宽640(360*1/9*16)高 360(360*1); 码率600kbps <br>
* 第三层 分辨率 宽1280(720*1/9*16)高 720(720*1); 码率1400kbps <br>
* 此情况下只有三层,若需要四层,则需补充为 "1 180 250 360 600 720 1400 1080 1600" <br>
* 第四层 分辨率 宽1920(1080*1/9*16)高 1080(1080*1); 码率1600kbps
*
* @param svcResolution svc分辨率
*/
public void setSvcResolution(String svcResolution);
/**
* 设置通话视频清晰度,主要通过修改 {@link #setSvcResolution(String) svcResolution} 参数和 {@link #setMaxFrameRate(int) maxFrameRate} 参数调整清晰度,默认为 {@link JCCConstants#DEFINITION_CUSTOM}
*/
public void setVideoDefinition(int videoDefinition);
/**
* 设置通话媒体数据加密方式,默认不加密
*/
public void setSecurityType(int securityType);
/**
* 设置通话视频编码,默认为 {@link JCCConstants#VIDEO_ENCODE_TYPE_H264},
*/
public void setVideoEncodeType(@JCCVideoEncodeType int videoEncodeType);
/**
* 设置通话心跳间隔时间,默认为 20 秒
*
* 心跳间隔需比心跳超时时间小。<br>
* 例如设置了心跳间隔为 X 秒,那么终端会每隔 X 秒给服务器发送心跳包。
*/
public void setHbTime(int hbTime);
/**
* 设置通话心跳超时时间,默认为 60 秒
*
* 例如设置了心跳超时时间为 X 秒,那么服务器在 X 秒内都没有收到成员心跳时,该成员会自动结束通话。
*/
public void setHbTimeout(int hbTimeout);
/**
* 设置服务器录制扩展参数
* 录制扩展参数保存在录制的info文件中,当{@link JCCGuestCallParam#autoRecord}为true时此参数有效
*/
public void setRecordExtraInfo(String recordExtraInfo);
/**
* 设置通话音频编码,默认为 {@link JCCConstants#AUDIO_ENCODE_TYPE_OPUS}
*/
public void setAudioEncodeType(@JCCAudioEncodeType int audioEncodeType);
/**
* 设置本端视频宽高比。默认 9/16
*
* 将自己的视频采集根据宽高比裁剪后进行发送,通话中其他成员收到的画面将是裁剪后的比例。<br>
* 该方法不影响其他成员的画面在本端的显示比例,也不影响其他成员相互之间的画面显示比例。<br>
*/
public void setRatio(float ratio);
/**
* 设置访客呼叫权重,取值范围:[1-100]
*
* @note 只有访客普通呼叫才生效,访客点对点呼叫和座席回呼参数不生效
*/
public void setVipPower(int vipPower);
/**
* 设置本地摄像头采集分辨率,默认 720p
*
* @param captureResolutionType 采集分辨率
* @see JCCConstants#RESOLUTION_360p 640*360
* @see JCCConstants#RESOLUTION_720p 1280*720
* @see JCCConstants#RESOLUTION_1080p 1920*1080
*/
public void setCaptureResolutionType(@JCCResolution int captureResolutionType);
/**
* 设置本地摄像头采集帧率,默认 24
*
* @param captureFrameRate 采集帧率
*/
public void setCaptureFrameRate(int captureFrameRate);
}
# 示例代码
JCCGuestCallParam callParam = new JCCGuestCallParam();
......
JCCGuestManager.getInstance().call("10086", callParam, false);
# 步骤四:通话接通
# 步骤五: 登出
/**
* 登出销毁
* @return 调用成功或失败
*/
public boolean logout()
示例代码:
JCCGuestManager.getInstance().logout();