JRTCSDK-iOS v2401.0
视频客服 API 文档
|
座席管理 更多...
#import <JRTCAgent.h>
类方法 | |
(JRTCAgent *) | + create:mediaDevice:callback: |
(void) | + destroy |
属性 | |
CallState | callState |
bool | isMainAgent |
JRTCRoomParticipant * | mainGuestParticipant |
NSArray< JRTCRoomParticipant * > * | guestParticipants |
JRTCRoomParticipant * | selfParticipant |
NSArray< JRTCRoomParticipant * > * | participants |
NSString * | statistics |
NSString * | jsonStats |
bool | pause |
AgentOperatorState | operatorState |
NSString * | shareStreamId |
NSString * | shareUserId |
JRTCVideoSize * | requestSize |
NSString * | serialNumber |
AgentTermState | termState |
bool | isAutoRecord |
属性 继承自 JRTCModuleBase | |
NSString * | callId |
NSString * | serialId |
座席管理
- (bool) answer |
- (int) applyStatePause: | (bool) | pause |
示忙/示闲
示忙状态下不会收到呼叫来电,示闲状态下正常呼叫进线
通话过程中调用该接口不会影响当前通话,从下个通话开始状态生效
示忙/示闲的结果通过 onApplyResult
回调上报
pause | 示忙或是示闲
|
onApplyResult
回调的 operationId 参数- (int) applyStatePause: | (bool) | pause | |
subState: | (int) | subState | |
示忙/示闲
示忙状态下不会收到呼叫来电,示闲状态下正常呼叫进线
通话过程中调用该接口不会影响当前通话,从下个通话开始状态生效
示忙/示闲的结果通过 onApplyResult
回调上报
pause | 示忙或是示闲
|
subState | 子状态,报表数据统计需要,取值[0, 9]
|
onApplyResult
回调的 operationId 参数- (bool) checkIn: | (AgentRoleType) | role |
签入
签入到排队机,签入后默认示闲状态
示闲状态下正常呼叫进线
调用接口前确定 JRTCClient 登录成功
调用该接口前需先确定 operatorState 来获取到当前的签入状态
该方法座席用户ID默认为 userId
,与业务管理平台上配置的座席staffId对应
role | 座席角色类型,目前该参数已有服务端控制,不再通过终端设置,可忽略 |
onCheckIn
回调上报- (bool) checkin: | (NSString *) | userId | |
busy: | (bool) | busy | |
checkinParam: | (JRTCAgentCheckinParam *__nullable) | checkinParam | |
签入
签入到排队机,签入后示忙/示闲状态由 busy 参数决定
示闲状态下正常呼叫进线
调用接口前确定 JRTCClient 登录成功
调用该接口前需先确定 operatorState 来获取到当前的签入状态
userId | 座席用户ID,需与业务管理平台上配置的座席staffId对应,如果传空,则默认用当前登录用户ID签入 |
busy | 签入后示忙/示闲状态 |
checkinParam | 签入其他参数
|
onCheckin
回调上报- (bool) checkIn: | (NSString *) | userId | |
role: | (AgentRoleType) | role | |
签入
签入到排队机,签入后默认示闲状态
示闲状态下正常呼叫进线
调用接口前确定 JRTCClient 登录成功
调用该接口前需先确定 operatorState 来获取到当前的签入状态
userId | 座席用户ID,需与业务管理平台上配置的座席staffId对应 |
role | 座席角色类型,目前该参数已有服务端控制,不再通过终端设置,可忽略 |
onCheckIn
回调上报- (bool) checkIn: | (NSString *) | userId | |
role: | (AgentRoleType) | role | |
busy: | (bool) | busy | |
签入
签入到排队机,签入后示忙/示闲状态由 busy 参数决定
示闲状态下正常呼叫进线
调用接口前确定 JRTCClient 登录成功
调用该接口前需先确定 operatorState 来获取到当前的签入状态
userId | 座席用户ID,需与业务管理平台上配置的座席staffId对应 |
role | 座席角色类型,目前该参数已有服务端控制,不再通过终端设置,可忽略 |
busy | 签入后示忙/示闲状态
|
onCheckIn
回调上报- (bool) checkout |
签出
签出后将不会收到排队机的呼叫分配
签出排队机不影响 JRTCClient 的登录状态
调用 operatorState 可获取当前签入状态
onCheckout
回调上报- (bool) controlRecord: | (AgentRecordAction) | action | |
recordParam: | (JRTCRecordControlParam *) | recordParam | |
开启/关闭远程录制
仅在 isAutoRecord
== false 时调用接口有效,即访客发起呼叫时,呼叫参数 JRTCCallCenterCallParam#autoRecord
需要为 false 。
由服务器自动开启远程录制,即 isAutoRecord
== true 时,水印内容由业务管理平台配置。
调用接口手动开启远程录制时,水印内容由参数 recordParam.watermarkTextDic 决定。
action | 打开或停止录制
|
recordParam | 录制参数对象 |
- (bool) controlRecord: | (AgentRecordAction) | action | |
watermarkText: | (NSString *) | watermarkText | |
开启/关闭远程录制
仅在 isAutoRecord == false 时调用接口有效,即访客发起呼叫时,呼叫参数 JRTCCallCenterCallParam.autoRecord
需要为 false 。
由服务器自动开启远程录制,即 isAutoRecord == true 时,水印内容由业务管理平台配置。
调用接口手动开启远程录制时,水印内容由参数 watermarkText 决定。
action | 打开或停止录制
|
watermarkText | 水印内容 |
+ (JRTCAgent *) create: | (JRTCClient *) | client | |
mediaDevice: | (JRTCMediaDevice *) | mediaDevice | |
callback: | (id< JRTCAgentCallback >) | callback | |
创建 JRTCAgent 对象,为单例,重复调用返回同一对象
state
方法获取的状态值不等于 JRTCClientStateNotInitclient | JRTCClient 对象 |
mediaDevice | JRTCMediaDevice 对象 |
callback | JRTCAgentCallback 代理对象,用于实现 JRTCAgentCallback 事件 |
初次创建时 JRTCClient、JRTCMediaDevice、JRTCAgentCallback 任意一个参数传空就会返回 nil |
+ (void) destroy |
- (bool) enableLocalRecord: | (bool) | enable | |
recordParam: | (JRTCRecordLocalParam *) | recordParam | |
开启/关闭本地录制
enable | 开启或关闭本地录制
|
recordParam | 本地录制参数配置,当 enable == true 时,JRTCRecordLocalParam.filePath 必须设置,其余参数不设置则使用默认配置;当 enable == false 时,recordParam 可传 nil |
- (bool) enableMicAgc: | (bool) | enable |
开启或关闭本地麦克风的增益(软件增益),默认开启
enable | 是否开启麦克风增益 |
- (bool) enableRemoteRecord: | (bool) | enable | |
recordParam: | (JRTCRecordRemoteParam *) | recordParam | |
开启/关闭远程录制
当呼叫参数 autoRecord
== false 时,可通过此接口开启服务端录制。
可通过 getRemoteRecordState
接口获取当前服务器录制状态。
enable | 开启或关闭远程录制
|
recordParam | 录制参数,当 enable == false 时,可传 nil;当 enable == true 且按照默认配置进行录制可传 nil |
onCallPropertyChanged
回调获得,具体可关注 recordState
- (bool) enableScreenShare: | (bool) | enable | |
appGroupId: | (NSString *__nullable) | appGroupId | |
preferredExtension: | (NSString *__nullable) | preferredExtension | |
开启/关闭屏幕共享
setUseExternalScreenCaptureControl
为 true, 则该接口只负责信令通知,请确保开启屏幕共享前,已经开启了屏幕采集,否则远端用户收到屏幕共享画面为黑屏 iOS 12.0 及以下(包含 iOS13.0)只支持应用内共享,iOS 12.0 及以上(不包含 iOS 13.0)支持应用外共享,需要集成屏幕采集插件 调用此方法后成功,界面上会拉起屏幕共享插件,需手动点击"开始直播"按钮进行屏幕共享,开启成功后,通话中的所有成员会收到 onCallPropertyChanged
或 onCallPropertyChanged
回调。 enable | 开启或关闭屏幕共享
|
appGroupId | 屏幕采集插件和应用所处于的同一个 groupId,如果是关闭屏幕共享可以传空,iOS 12.0 及以上(不包含 iOS 13.0 )需要传,iOS 12.0 以下传空 |
preferredExtension | 要打开的屏幕共享插件的 ID,如果是关闭屏幕共享可以传空,iOS 12.0 及以上(不包含 iOS 13.0 )需要传,iOS 12.0 以下传空 |
- (bool) enableUploadAudioStream: | (bool) | enable |
开启/关闭发送本地音频流
通话中调用该方法可开启或关闭发送本地音频流。开启后,通话中的成员将听见本端声音;关闭后,成员将听不见本端声音
通话中调用此方法成功后,服务器会更新状态并同步给通话中所有成员,即所有成员会收到 onMemberUpdate
或 onMemberUpdate
回调,具体可关注 audio
和 audio
通话中调用此方法不影响接收其他成员的音频流
enable | 开启/关闭发送本地音频流
|
- (bool) enableUploadVideoStream: | (bool) | enable |
开启/关闭发送本地视频流
通话中调用该方法可开启或关闭发送本地视频流。开启后,通话中的成员将看见本端画面;关闭后,成员将看不见本端画面
通话中调用此方法成功后,服务器会更新状态并同步给通话中所有成员,即所有成员会收到 onMemberUpdate
或 onMemberUpdate
回调,具体可关注 video
和 video
通话中调用此方法不影响接收其他成员的视频流
enable | 开启/关闭发送本地视频流
|
- (CallType) getCallType |
- (bool) getHoldState |
- (RecordState) getRemoteRecordState |
获取远程视频录制状态,参见:
- (NSArray< JRTCVideoSize * > *_Nullable) getSupportVideoSizes |
获取该通话支持的视频分辨率列表
- (bool) inviteThirdAgent: | (NSString *) | userId |
邀请第三方座席加入
被邀请的第三方座席会收到 onCallStateChanged
来电邀请回调
第三方座席接听通话后,已在通话中的成员会收到 onMemberJoin
或 onMemberJoin
成员加入回调
userId | 要邀请的座席用户ID |
onInviteThirdAgentResult
回调上报- (bool) inviteThirdGuest: | (NSString *) | userId | |
extraInfo: | (NSString *__nullable) | extraInfo | |
邀请第三方访客加入
第三方访客接听通话后,已在通话中的成员会收到 onMemberJoin
或 onMemberJoin
成员加入回调
userId | 要邀请的第三方访客用户ID |
extraInfo | 邀请携带的额外信息 |
onInviteThirdGuestResult
回调上报- (bool) isLocalRecording |
是否正在本地录制
- (bool) isOnewayVideo |
- (bool) isSubScreenShare |
获取是否订阅屏幕共享属性
- (bool) isSuspendScreenShare |
是否屏幕共享暂停
- (bool) joinCall: | (NSString *) | serialNumber | |
partRole: | (PartRoleType) | partRole | |
加入通话
serialNumber | 业务唯一标识 |
partRole | 加入通话成员角色
|
onCallStateChanged
回调上报- (int) kickParticipant: | (NSString *) | userId |
踢出通话成员
userId | 成员用户ID |
onKickParticipantResult
回调的 operationId 参数- (bool) queryAllGroups |
获取业务号列表
onGetAllGroups
回调上报- (int) queryAvailableAgentList: | (NSString *) | businessNumber |
查询指定业务号号的空闲座席
查询结果通过 onQueryAvailableAgentList
回调上报
businessNumber | 业务号,例如 10087 |
onQueryAvailableAgentList
的 operationId 参数对应 - (bool) recall: | (NSString *) | userId | |
callParam: | (JRTCCallCenterCallParam *) | param | |
座席回呼
userId | 访客用户ID |
callParam | 呼叫参数设置,此参数可传 nil 则使用默认配置,详见 JRTCallCenterCallParam |
onCallStateChanged
回调上报- (void) requestOnewayVideo: | (bool) | turnOn |
请求单向视频
座席调用此接口后,会向全体访客发送单向视频请求,访客会收到 onOnewayVideoChanged
回调
应用需要自行实现单向视频功能,例如访客用图片遮挡该座席画面,SDK不会对画面进行单向处理
turnOn | 打开或关闭单向视频
|
- (bool) requestScreenVideo: | (JRTCVideoSize *__nonnull) | videoSize |
- (bool) requestSign |
请求访客签名
请求访客签名流程:
onSignRequest
回调- (bool) requestSign: | (NSString *) | userId | |
extraInfo: | (nullable NSString *) | extraInfo | |
请求访客签名
请求访客签名流程:
onSignRequest
回调userId | 需要请求签名的访客用户ID |
extraInfo | 随路额外消息 |
- (bool) requestVideo: | (JRTCRoomParticipant *__nonnull) | participant | |
videoSize: | (JRTCVideoSize *__nonnull) | videoSize | |
订阅通话中其他成员的视频流
participant | 成员对象 |
videoSize | 视频请求的尺寸,详见 JRTCVideoSize |
onMemberUpdate
回调,具体可关注 pictureSize
和 pictureSize
属性- (int) responseUrgent: | (NSString *) | serialNumber | |
callerNumber: | (NSString *) | callerNumber | |
agree: | (BOOL) | agree | |
处理加急请求
请求加急流程:
requestUrgent
接口发起加急请求 onUrgentRequest
回调 onUrgentResultResponse
加急请求处理结果回调,如果座席同意加急请求,则将会插队到队列最前 serialNumber | 服务唯一标识,通过 onUrgentRequest 回调获得 |
callerNumber | 发起加急请求的用户ID,通过 onUrgentRequest 回调获得 |
agree | 同意或拒绝加急请求 |
onResponseUrgentResult
回调的 cookie 参数 - (bool) sendAudioEmptyPack: | (bool) | empty |
发送音频空包
该接口不会导致成员的 audio
属性变化,发送音频空包不代表停止发送音频流。一般用于座席保持通话后使用。
empty | 音频发送包是否为空包
|
- (bool) sendMessage: | (NSString *) | contentType | |
content: | (NSString *) | content | |
toUserId: | (nullable NSString *) | toUserId | |
发送消息,消息内容不能大于4K
指定成员会收到 onMessageReceived
或 onMessageReceived
回调
contentType | 消息内容类型 |
content | 消息内容 |
userId | 指定成员的用户ID,传 nil 等同于调用 sendMessage 接口,即给通话中全部成员发送消息 |
- (bool) sendNotifyMessage: | (JRTCNotifyMessage *) | notifyMessage | |
toUserId: | (NSString *__nullable) | toUserId | |
发送事件通知消息,消息内容不能大于4K
通话中的其他成员会收到 onNotifyMessageReceived
或 onNotifyMessageReceived
回调
notifyMessage | 事件通知实体对象 |
userId | 指定成员的用户ID,传 nil 即给通话中全部成员发送通知消息 |
- (bool) sendVideoEmptyPack: | (bool) | empty |
发送视频空包
该接口不会导致成员的 video
属性变化,发送视频空包不代表停止发送视频流。一般用于座席保持通话后使用。
empty | 视频发送包是否为空包
|
- (bool) setHoldState: | (bool) | hold |
保持/取回
可以通过 getHoldState
获取当前通话保持状态
保持通话后双方互相停止音视频流的发送与接收
hold | 保持或取回
|
onHoldStateChanged
或 onHoldStateChanged
回调- (bool) setRatio: | (float) | ratio |
设置本端视频宽高比
将自己的视频采集根据宽高比裁剪后进行发送,通话中其他成员收到的画面将是裁剪后的比例。
该方法不影响其他成员的画面在本端的显示比例,也不影响其他成员相互之间的画面显示比例。
必须 开始通话后 设置才能生效,即收到 onCallStateChanged
回调且 type == AgentCallStateChangeTypeTalking 时设置才生效。
ratio | 视频宽高比 |
- (bool) setSubScreenShare: | (bool) | enable |
设置订阅屏幕共享属性
- (void) setUseExternalScreenCaptureControl: | (bool) | useExternalControl |
设置是否由应用层自行控制屏幕采集逻辑,默认 false,由 SDK 内部根据通话业务开始/结束自动控制屏幕采集开启/关闭逻辑,比如通话建立时开启屏幕共享自动开启屏幕采集,关闭屏幕共享或者通话结束时自动关闭屏幕采集。
useExternalControl | 是否由应用层自行控制屏幕采集逻辑
|
- (bool) setVideoDot: | (NSString *__nonnull) | timespan | |
info: | (NSString *__nonnull) | info | |
视频打点
timespan | 时间戳 |
info | 打点信息 |
- (bool) suspendScreenShare: | (bool) | suspend | |
tip: | (NSString *_Nonnull) | tip | |
暂停/继续屏幕共享
suspend | true 暂停屏幕共享, false 继续屏幕共享 |
tip | 暂停屏幕共享后提示文字 |
onCallPropertyChanged
回调,可通过isSuspendScreenShare
判断当前屏幕共享是否暂停- (int) switchPartRole: | (PartRoleType) | partRole |
切换自己在通话中角色
partRole | 通话成员角色,目前只支持
|
onSwitchPartRoleResult
回调的 operationId 参数- (bool) term |
结束通话
来电过程中调用此接口拒绝接听,访客分配到其他座席继续呼叫等待不会挂断。
主座席调用此接口会结束通话,通话中所有成员都会离开,此通通话销毁,所有成员会收到 onCallStateChanged
或 onCallStateChanged
通话结束回调。
第三方座席调用此接口仅自身离开通话,通话中其他成员会收到该成员离开的回调 onMemberLeave
或 onMemberLeave
回调,通话继续进行。
onCallStateChanged
回调- (int) transferCall: | (TransferType) | type | |
to: | (NSString *) | _id | |
通话转接
支持转接到具体座席和转接到某个业务组
onTransferCallResult
回调上报 onCallForwarding
回调 type | 转接类型,转接到具体座席或是转接到业务组
|
_id |
|
onTransferCallResult
回调的 operationId 参数- (void) turnCallType: | (CallType) | callType |
音视频通话切换
可以通过 getCallType
接口获取当前的通话类型
通话中所有成员都将收到onCallTypeChanged
或 onCallTypeChanged
回调
callType | 通话类型
|
- (bool) unRequestScreenVideo |
取消订阅通话中屏幕共享的视频流
- (bool) unRequestVideo: | (JRTCRoomParticipant *__nonnull) | participant |
取消订阅通话中其他成员的视频流
participant | 成员对象 |
- (bool) updateLocalRecordLayout: | (NSArray< JRTCRecordLocalLayout * > *) | layoutList |
更新本地录制自定义布局
layoutList | 需要更新的布局列表 |
- (bool) updateRemoteRecordLayout: | (NSArray< JRTCRecordRemoteLayout * > *) | layoutList |
更新远程录制自定义布局
layoutList | 需要更新的布局列表 |
- (bool) updateRemoteRecordWatermark: | (NSDictionary *) | watermarkTextDic |
更改远程录制水印信息
watermarkTextDic | 水印信息 |
|
readnonatomicassign |
当前通话状态
|
readnonatomicstrong |
访客成员列表
只有在通话中且通话中才能获得含有访客成员对象的数组,否则为空数组
当通话中不存在第三方访客时,获得一个仅含有主访客成员对象的数组
当通话中存在第三方访客时,获得一个含有主访客和第三方访客成员对象的数组
|
readnonatomicassign |
是否由服务器自动开启录制
由访客 autoRecord
属性决定,在通话状态为 CallStateTalking 时可以获取
如果当前为自动录制模式,即 isAutoRecord == true,则座席的 controlRecord
远程录制接口不生效
|
readnonatomicassign |
是否主座席
|
readnonatomiccopy |
获取天赛实时统计信息
以Json字符串形式返回,包含以下信息:
* { * "localActor": "[username:2333@100645.cloud.justalk.com]", // actorID * "sendBWE": "1440", // 发送带宽估计 * "recvBWE": "929", // 接收带宽估计 * "sendBr": "16", // 发送码率 * "recvBr": "772", // 接收码率 * "sendJitter": "1", // 发送jitter * "recvJitter": "0", // 接收jitter * "sendLossRate": "0", // 发送丢包率 * "recvLossRate": "0", // 接收丢包率 * "encodeTime": "0", // 编码时长 * "rtt":"5", // 往返延时 * "audioSendBr": "19", // 音频发送码率 * "videoSendBr": "0", // 视频发送码率 * "audioLevel": "58", // 音量 * "event":"" * }
|
readnonatomicstrong |
获取主访客成员
只有在通话中才能获得访客成员对象,否则为 nil
|
readnonatomicassign |
座席签入状态
|
readnonatomicstrong |
所有成员(包含自己、访客和其他座席)
|
readnonatomicassign |
示忙/示闲状态
true 表示示忙状态,false 表示示闲状态
调用 checkIn
或 checkIn
接口签入,状态为示闲
调用 checkIn
接口签入,状态与 busy 参数一致
调用 applyStatePause
接口主动发起示忙示闲,状态与 pause 参数一致
|
readwritenonatomicstrong |
视频请求尺寸
影响自己看其他成员的视频分辨率
|
readnonatomicstrong |
获取自己对象
|
readnonatomiccopy |
服务唯一标识,上层可使用该参数通过业务管理平台第三方接口查询到话务信息,如录制视频文件的URL
|
readnonatomiccopy |
屏幕共享的视频流ID,无屏幕共享时为 nil
调用 startVideo
接口渲染通话中其他成员的屏幕共享画面时使用。
|
readnonatomiccopy |
发起屏幕共享者的用户ID,无屏幕共享时为 nil
可用来判断当前通话中是否有成员发起屏幕共享。
|
readnonatomiccopy |
获取统计信息
以字符串形式返回,其中包含 "Config", "Network","Transport" 和 "Participants" 4个节点,统计信息具体内容如下:
* { * "Config": // 音视频设置信息 * { * "Audio Config: // 音频设置 * { * "SRTP": off, // 是否对音频RTP数据加密,以及加密会显示使用的加密协议,加密协议两端一致才会音频互通正常 * "Codec": opus, // 本端设置的音频编码 * "Payload": 116, // 音频payload的大小 * "Bitrate": 16000, // 音频码率 * "Pkt Len": 60, // 音频包长 * "Nack": off, // 丢包是否允许数据包重传 * "RTX": off, // 是否允许RTX技术 * "FEC/RED": off, // 是否开启FEC * "AEC": on, // 是否开启回声消除 * "Mode": OS, // AEC模式 * "HowlSupp": Auto, // AEC HowlSupp模式 * "Sts": Auto, // AEC Sts模式 * "AGC": on, // 是否开启发送端自动增益 * "Mode": Fixed, // 发送端AGC Mode * "Target": 3, // 发送端AGC Target * "Gain": 9, // 接收端AGC Gain * "Rx AGC": off, // 是否开启接收端自动增益 * "Mode": Fixed, // 接收端AGC Mode * "Target": 3, // 接收端AGC Target * "Gain": 9, // 接收端AGC Gain * "VAD": off, // 是否开启VAD * "Mode": Mid, // VAD Mode * "ANR": off, // 是否开启发送端噪音抑制 * "Mode": High, // ANR mode * "Noise": N/A, // 噪音音量 * "SNR": N/A, // 信噪比 * "Rx ANR": off, // 是否开启接收端噪音抑制 * "Mode": Low, // 接收端ANR mode * "ARS": off, // 是否开启音频码率控制 * "BR Min": N/A, // ARS码率最小值 * "BR Max": N/A // ARS码率最大值 * }, * "Video Config": // 视频设置 * { * "SRTP": off, // 是否对音频RTP数据加密,以及加密会显示使用的加密协议,加密协议两端一致才会音频互通正常 * "Codec": H264-SVC, // 双方通话采用的编解码类型 * "Payload": 125, // 视频Payload的大小 * "Bitrate": 2250, // 视频码率,单位kbps * "Framerate": 24, // 视频帧率,单位fps * "Resolution": 1280x720, // 视频分辨率 * "FEC": on|124|123, // FEC是否打开和payload的类型号 * "FIR": off, // 是否允许重发关键帧 * "Key Interval": 0, // 允许的最小关键帧间隔 * "Repeat": 0, // 关键帧丢失是否允许重发 * "NACK": off, // 丢包是否允许数据包重传 * "RTX": off, // 是否允许RTX技术,RTX的payload类型 * "TMMBR": off, // 是否允许带宽估计 * "RPSI": off, // 是否允许RPSI技术 * "Small NALU": on, // 是否允许NALU技术 * "ARS": off, // 是否开启ARS自动码率检测 * "BR Min": 10, // ARS发送码率下限 * "BR Max": 2000, // ARS发送码率上限 * "FR Min": 1, // ARS发送帧速率下限 * "FR Max": 30, // ARS发送帧速率上限 * "Res. Ctrl": off, // 是否允许分辨率控制 * "Res. Mode": 0, // 分辨率Mode * "Fr Ctrl": on, // 是否允许帧速率控制 * "CPU Load Ctrl": off, // 是否允许CPU控制 * "Target": 80, // CPU控制的最大使用率 * "Bw Efficient": off, // 是否采用节省带宽模式 * "Error Conceal": off, // 是否允许错误隐藏技术,在解码出错的时候采用 * "Enhance color": off, // 是否采用颜色增强技术 * "Boost bright": off, // 是否采用亮度增强技术 * "Boost contrast": off, // 是否采用对比度增强技术 * "RTP Ext": CVO, // 使用的RTP扩展的类型 * "Render Name": N/A, // 渲染图像的名字 * "SVC": "320 180 250 640 360 600 1280 720 1400", // 会议SVC配置 * "TemporalLayers": 4, // 取值1、2、3、4,会议时间层设置 * "PreferMode":Clear // 偏好设置 * } * }, * "Network": // 网络统计信息 * { * "Send Statistic: // 数据发送统计信息 * { * "Packets": 181|1305|0|0, // 发送的数据包的个数。正常包个数 | 探测包个数 | RED包个数 | NACK包个数 * "RTT": 4, // 网络双向延时的时间,单位为毫秒 * "Jitter": 2, // 网络的扰动,表征数据包抖动的时间,单位毫秒 * "Lost": 2, // 丢失的数据包的个数 * "LostRate": 0, // 当前的丢包率,单位百分比 * "RelayLost": 0, // 服务器转发丢包率 * "RelayRtt": 0, // 服务器转发往返时延,单位为毫秒 * "BitRate/BWE": 16/1345, // BitRate表示当前发送的数据包的码率,单位kbps;BWE表示当前发送带宽的估计值 * "AudioSend": 0|0, // 实际发送音频包次数|估计发送音频包次数 * "VideoSend": 0|0, // 实际发送视频包次数|估计发送视频包次数 * "ScreenSend": 0|0, // 实际发送屏幕共享包次数|估计发送屏幕共享包次数 * "MaxPredKbps": 100, // 发送最大需求码率 * "Server(102679111220103708)": [2211(1): BWE(1345|697) LOSS(0|0) OUT(A:37) IN(A:0;)] // 选用的第一个服务器 * }, * "Recv Statistic": // 数据接收统计信息 * { * "Packets": 1423|675|0|0, // 收到的数据包的个数。正常包个数 | 探测包个数 | RED包个数 | NACK包个数 * "Jitter": 1, // 网络的扰动,表征数据包乱序的时间,单位毫秒 * "Lost": 0, // 丢失的数据包的个数 * "Lost Ratio": 0, // 当前的丢包率,单位百分比 * "BitRate/BWE":178/2291, // BitRate表示当前接收的数据包的码率,单位kbps;BWE表示当前接收带宽的估计值 * "Server(102679111220103708)": [2211(3): BWE(1979|2150) LOSS(0|0) OUT(A:37;FPS:24,FEC:10,SUB:00f0=3456) IN(A:17;V:2273=2211[00f0]2273)] // 选用的第一个服务器 * }, * } * "Transport": // 运输通道 * { * "Local": 2.1923737535:32414, // 本地地址 * "Remote": 2:11023, // 远端地址 * "LastPaths": 2,2, // 最后使用通道 * "Path": 2 [udp], // 通道名 * "Step1": Delay/Loss(S/R): 4/0/0, // 通道质量 * "Cost": 7*(best: -1) // 通道分数 * }, * "Participants": * { * "2333": // 成员为自己 * { * "Audio Sending Stats": // 音频发送数据统计 * { * "Packets": 143, // 发送的数据包的个数 * "BitRate": 18.5, // 发送的数据包的码率,单位kbps * "FecPrecent": 0 // 音频Fec保护百分比,N/A表示未开启FEC保护 * }, * "Video Sending Stats": // 视频发送数据统计 * { * "Packets": 19502, // 发送的数据包的个数 * "Capture Res": 640x360, // 视频采集分辨率 * "Capture Fr": 30, // 视频采集帧率 * "FPS/IDR": [0|0|24|0]/3, // 当前视频发送帧速/已发送的视频关键帧数 * "Resolution": 1280x720[0|0|0], // 当前发送图像最大尺寸。[]中为每种尺寸的帧率,取值范围为0到f(十六进制),0表示该层视频未被发送, 值越大表示该层视频帧率越高; * "Bitrate/Setrate": 0/2250, // Bitrate表示当前发送的数据包的码率,单位kbps; Setrate表示视频编码的目标码率,单位kbps。 * "QP": 20, // 发送当前图像的量化步长(0-51),越小图像画质越好。 * "EncodeTime": 10, // 当前编码时间,可以体现终端编码时占用的CPU性能,越大表示CPU占有越高,单位毫秒 * "Codec": H264-SVC, // 采用的编解码类型 * "FecPrecent": 20 // 视频Fec保护百分比,N/A表示未开启FEC保护 * }, * "Be Subscribed Stats": // 被订阅统计信息 * { * "Audio": true, // 音频是否被订阅 * "Video": [0|0|F|0] // [S0|S1|S2|S3]表示4个空间层被订阅 * }, * "Publish Stats": // 当前音视频发布状态 * { * "Audio": true, // 当前音频发布状态 * "Video": true // 当前视频发布状态 * } * }, * "6666": // 成员不是自己 * { * "Audio Receiving Stats": // 音频接收统计信息 * { * "Packets": 40243, // 接收的数据包的个数 * "BitRate": 18.5, // 当前接收的数据包的码率,单位kbps。 * "EpdRate/lr/dc": 0/0/0, // expand rate/loss rate/discard rate。neteq buffer中的扩展比例/丢包比例/丢弃比例 * }, * "Video Receiving Stats": // 视频接收统计信息 * { * "Packets": 19502, // 接收的数据包的个数 * "BitRate": 161, // 当前发送的数据包的码率,单位kbps * "FPS/FIR": 24/0, // 当前视频接收帧率/视频关键帧请求个数 * "Resolution": 1280x720, // 当前接收分辨率 * "Render FR": 24, // 当前渲染帧速率 * "Codec": H264-SVC, // 采用的编解码类型 * "PvMos": 4.9, // 表示过去5s平均流畅度MOS分,每5s更新一次。体现视频画面的流畅程度。1到5分,1分最差,5分最好 * "SMOS": 5, // 表示当前清晰度MOS分。体现视频画面的清晰程度。1到5分,1分最差,5分最好。前5s是0,是正常现象,因为PvMos还没有值 * }, * "Subscribed Stats": // 订阅统计信息 * { * "Channel Audio": true, // 当前是否发布音频 * "Audio": true, // 当前音频订阅状态 * "Video": [0|0|F|0] // [S0|S1|S2|S3]表示4个空间层被订阅 * } * } * } * }
|
readwritenonatomicassign |
结束通话后的示闲/示忙状态,默认为示闲状态
结束通话后,默认为示闲状态,可由上层设置