被 com.juphoon.cloud.JCMediaChannelImpl 继承.
类 | |
class | JoinParam |
class | PropChangeParam |
class | RecordParam |
class | ScreenShareParam |
class | SipParam |
Public 成员函数 | |
abstract String | getChannelUri () |
abstract String | getChannelId () |
abstract String | getSessionId () |
abstract int | getConfId () |
abstract String | getPassword () |
abstract int | getChannelNumber () |
abstract String | getTitle () |
abstract int | getState () |
abstract List< JCMediaChannelParticipant > | getParticipants () |
abstract boolean | getUploadLocalAudio () |
abstract boolean | getUploadLocalVideo () |
abstract boolean | getAudioOutput () |
abstract String | getScreenRenderId () |
abstract String | getScreenUserId () |
abstract int | getRecordState () |
abstract int | getCdnState () |
abstract int | query (String channelId) |
abstract boolean | join (String channelId, JoinParam joinParam) |
abstract boolean | leave () |
abstract boolean | stop () |
abstract boolean | enableUploadAudioStream (boolean enable) |
abstract boolean | enableUploadVideoStream (boolean enable) |
abstract boolean | enableAudioOutput (boolean enable) |
abstract boolean | requestVideo (JCMediaChannelParticipant participant, @PictureSize int pictureSize) |
abstract boolean | requestScreenVideo (String screenUri, @PictureSize int pictureSize) |
abstract boolean | enableCdn (boolean enable, int keyInterval) |
abstract boolean | enableRecord (boolean enable, RecordParam recordParam) |
abstract boolean | enableScreenShare (boolean enable, ScreenShareParam screenShareParam) |
abstract JCMediaChannelParticipant | getParticipant (String userId) |
abstract String | getStatistics () |
abstract boolean | setCustomProperty (String property) |
abstract String | getCustomProperty () |
abstract boolean | sendMessage (String type, String content, String toUserId) |
abstract boolean | sendCommand (String name, String param) |
abstract int | inviteSipUser (String userId, SipParam sipParam) |
abstract void | setCustomRole (@CustomRole int customRole, JCMediaChannelParticipant participant) |
abstract int | getCustomRole () |
abstract void | setCustomState (@CustomState int customState, JCMediaChannelParticipant participant) |
abstract int | getCustomState () |
abstract boolean | kick (JCMediaChannelParticipant participant) |
abstract boolean | sendCommandToDelivery (String command) |
abstract void | enableSelfVideoRatio (boolean enable, float ratio) |
abstract JCMediaDeviceVideoCanvas | startScreenShareVideo (@JCMediaDevice.RenderType int renderType, @PictureSize int pictureSize) |
abstract void | stopScreenShareVideo () |
abstract JCMediaChannelParticipant | getSelfParticipant () |
abstract int | getMaxResolution () |
abstract boolean | subscribeParticipantAudio (JCMediaChannelParticipant participant, boolean subscribe) |
静态 Public 成员函数 | |
static JCMediaChannel | create (JCClient client, JCMediaDevice mediaDevice, JCMediaChannelCallback callback) |
static void | destroy () |
Public 属性 | |
boolean | volumeChangeNotify = false |
静态 Public 属性 | |
static final int | REASON_NONE = 0 |
static final int | REASON_NOT_LOGIN = 1 |
static final int | REASON_TIMEOUT = 2 |
static final int | REASON_NETWORK = 3 |
static final int | REASON_CALL_FUNCTION_ERROR = 4 |
static final int | REASON_ALREADY_JOINED = 5 |
static final int | REASON_KICKED = 6 |
static final int | REASON_OFFLINE = 7 |
static final int | REASON_QUIT = 8 |
static final int | REASON_OVER = 9 |
static final int | REASON_FULL = 10 |
static final int | REASON_INVALID_PASSWORD = 11 |
static final int | REASON_INTERNAL_ERROR = 12 |
static final int | REASON_SERVER_ERROR = 13 |
static final int | REASON_INVALID_PARAM = 14 |
static final int | REASON_OTHER = 100 |
static final int | PICTURESIZE_NONE = 0 |
static final int | PICTURESIZE_MIN = 1 |
static final int | PICTURESIZE_SMALL = 2 |
static final int | PICTURESIZE_LARGE = 3 |
static final int | PICTURESIZE_MAX = 4 |
static final int | STATE_IDLE = 0 |
static final int | STATE_JOINING = 1 |
static final int | STATE_JOINED = 2 |
static final int | STATE_LEAVING = 3 |
static final int | PARTICIPANT_TYPE_NORMAL = 0 |
static final int | PARTICIPANT_TYPE_PSTN = 1 |
static final int | PARTICIPANT_TYPE_WEBRTC = 2 |
static final int | PARTICIPANT_TYPE_IRC = 3 |
static final int | VOLUME_STATUS_ZERO = 0 |
static final int | VOLUME_STATUS_LOW = 1 |
static final int | VOLUME_STATUS_MID = 2 |
static final int | VOLUME_STATUS_HIGH = 3 |
static final int | VOLUME_STATUS_TOO_HIGH = 4 |
static final int | NET_STATUS_DISCONNECTED = 0 |
static final int | NET_STATUS_VERY_BAD = 1 |
static final int | NET_STATUS_BAD = 2 |
static final int | NET_STATUS_NORMAL = 3 |
static final int | NET_STATUS_GOOD = 4 |
static final int | NET_STATUS_VERY_GOOD = 5 |
static final int | RECORD_STATE_NONE = 0 |
static final int | RECORD_STATE_READY = 1 |
static final int | RECORD_STATE_RUNNING = 2 |
static final int | CDN_STATE_NONE = 0 |
static final int | CDN_STATE_READY = 1 |
static final int | CDN_STATE_RUNNING = 2 |
static final int | MAX_RESOLUTION_360p = 0 |
static final int | MAX_RESOLUTION_720p = 1 |
static final int | MAX_RESOLUTION_1080p = 2 |
static final int | CUSTOM_ROLE_NONE = 0 |
static final int | CUSTOM_ROLE_0 = 1<<12 |
static final int | CUSTOM_ROLE_1 = 1<<13 |
static final int | CUSTOM_ROLE_2 = 1<<14 |
static final int | CUSTOM_ROLE_3 = 1<<15 |
static final int | CUSTOM_STATE_NONE = 0 |
static final int | CUSTOM_STATE_0 = 1<<12 |
static final int | CUSTOM_STATE_1 = 1<<13 |
static final int | CUSTOM_STATE_2 = 1<<14 |
static final int | CUSTOM_STATE_3 = 1<<15 |
详细描述
类似音视频频道的概念,可以通过频道号加入此频道,从而进行音视频通话
成员函数说明
◆ create()
|
inlinestatic |
创建 JCMediaChannel 对象
JCMediaChannel 的所有接口函数,如无特殊说明,都建议在主线程调用
- 注解
- 调用此方法创建 JCMediaChannel 对象后,期间没有调用过 destroy 方法销毁对象,然后又重复调用此方法,会直接返回第一次创建的 JCMediaChannel 对象
- 调用此方法前确保 JCClient 已完成初始化,即 getState 方法获取的状态值不等于 STATE_NOT_INIT
- 参数
-
client JCClient 对象 mediaDevice JCMediaDevice 对象 callback JCMediaChannelCallback 对象,用于回调相关通知
- 返回
- JCMediaChannel 对象
- 异常
-
JCClient、JCMediaDevice、JCMediaChannelCallback 任意参数为空就会抛出异常
◆ destroy()
|
inlinestatic |
销毁 JCMediaChannel 对象
该方法为同步调用,需要等待 JCMediaChannel 实例资源释放后才能执行其他操作,调用此方法后,你将无法再使用 JCMediaChannel 的其它方法和回调。
我们 不建议 在 JCSDK 的回调中调用此方法销毁 JCMediaChannel 对象,有可能会出现崩溃。
如需在销毁后再次创建 JCMediaChannel 实例,需要等待 destroy 方法执行结束后再创建实例。
◆ getChannelUri()
|
abstract |
获得频道 Uri
- 注解
- 该接口需要在自己加入会议成功后才能调用
不管加入频道时使用的是不是 uri 模式,都能获取到频道 Uri
- 返回
- 频道 Uri
◆ getChannelId()
|
abstract |
获得频道标识
- 注解
- 该接口需要在自己加入会议成功后才能调用
- 返回
- 频道标识
◆ getSessionId()
|
abstract |
获取服务器唯一频道ID
- 注解
- 该接口需要在自己加入会议成功后才能调用
- 返回
- 频道ID
◆ getConfId()
|
abstract |
获得confId
- 注解
- 该接口需要在自己加入会议成功后才能调用
- 返回
- 频道标识
◆ getPassword()
|
abstract |
获得频道密码
- 注解
- 该接口需要在自己加入会议成功后才能调用
- 返回
- 频道密码
◆ getChannelNumber()
|
abstract |
获得频道号
- 注解
- 该接口需要在自己加入会议成功后才能调用
- 返回
- 频道号
◆ getTitle()
|
abstract |
返回频道标题
- 注解
- 该接口需要在自己加入会议成功后才能调用
- 返回
- 频道标题
◆ getState()
|
abstract |
返回自己的频道状态
- 注解
- 该接口需要在自己加入会议成功后才能调用
- 返回
- 自己的频道状态:
- STATE_IDLE : 空闲状态
- STATE_JOINING : 加入中
- STATE_JOINED : 已加入
- STATE_LEAVING : 离开中
◆ getParticipants()
|
abstract |
获得频道中的所有成员
- 注解
- 该接口需要在自己加入会议成功后才能调用
- 返回
- 频道成员列表
◆ getUploadLocalAudio()
|
abstract |
获取本地音频数据是否在上传
- 注解
- 该接口需要在自己加入会议成功后才能调用
- 返回
- 是否在上传本地音频数据
- true: 上传中
- false: 未上传
◆ getUploadLocalVideo()
|
abstract |
获取本地视频数据是否在上传
- 注解
- 该接口需要在自己加入会议成功后才能调用
- 返回
- 是否在上传本地视频数据
- true: 上传中
- false: 未上传
◆ getAudioOutput()
|
abstract |
获取音频是否输出
- 注解
- 该接口需要在自己加入会议成功后才能调用
本地没有音频输出的话,就听不到频道内其他成员的声音了
- 返回
- 是否有音频输出
- true: 输出中
- false: 未输出
◆ getScreenRenderId()
|
abstract |
获取屏幕共享渲染标识
- 注解
- 该接口需要在自己加入会议成功后才能调用
- 返回
- 屏幕共享渲染标识,频道中没有屏幕共享则返回null
◆ getScreenUserId()
|
abstract |
获取开启屏幕共享的用户标识
- 注解
- 该接口需要在自己加入会议成功后才能调用
- 返回
- 开启屏幕共享的用户标识,没有屏幕共享则为null
◆ getRecordState()
|
abstract |
获取视频录制状态
- 注解
- 该接口需要在自己加入会议成功后才能调用
- 返回
- 视频录制状态,参见:
- RECORD_STATE_NONE : 无法进行视频录制。用户不在频道中或者加入频道时没有设置视频录制参数
- RECORD_STATE_READY : 可以开启视频录制。用户在加入频道时设置了录制参数,并且没有在录制视频
- RECORD_STATE_RUNNING : 视频录制中。用户在加入频道时设置了录制参数,并且正在视频录制中
◆ getCdnState()
|
abstract |
获得cdn推流状态
- 注解
- 该接口需要在自己加入会议成功后才能调用
- 返回
- cdn推流状态:
- CDN_STATE_NONE : 无法进行Cdn推流。用户不在频道中或者加入频道时没有设置cdn推流参数
- CDN_STATE_READY : 可以开启Cdn推流。用户在加入频道时设置了cdn推流参数,并且没有在推流
- CDN_STATE_RUNNING : Cdn推流中。用户在加入频道时设置了cdn推流参数,并且正在cdn推流中
◆ query()
|
abstract |
◆ join()
|
abstract |
◆ leave()
|
abstract |
◆ stop()
|
abstract |
◆ enableUploadAudioStream()
|
abstract |
开启/关闭发送本地音频流
- 注解
- 该接口需要在自己加入会议成功后才能调用
调用该方法可开启或关闭发送本地音频流。开启后,频道成员将听见本端声音;关闭后,频道成员将听不见本端声音
初始化 JCMediaChannel 时,默认设置关闭本地音频流。如果想要在加入频道的时候就让频道内其他成员听见本端声音,可以在调用 join 加入频道前设置
该方法在频道内和频道外均可调用,且在离开频道后该设置仍然有效。也就是说这一次设置了开启发送本地音频流,那么在下一次加入频道时默认会开启发送本地音频流
频道中也可调用此方法开启或关闭发送本地音频流,服务器会更新状态并同步给其他频道成员
频道中调用此方法不影响接收远端音频
- 参数
-
enable 开启/关闭发送本地音频流 - true: 开启发送本地音频流
- false: 关闭发送本地音频流
- 返回
- 调用是否正常
- true: 正常执行调用流程,存在以下两种场景:
- 若在调用此方法时,用户不在频道中,则不会收到回调通知
- 若在调用此方法时,用户在频道中,则会收到 onMediaChannelPropertyChange 通知
- false: 调用失败,不会收到回调通知
- true: 正常执行调用流程,存在以下两种场景:
◆ enableUploadVideoStream()
|
abstract |
开启/关闭发送本地视频流
- 注解
- 该接口需要在自己加入会议成功后才能调用
调用该方法可开启或关闭发送本地视频流。开启后,频道成员将可以看见本端视频画面;关闭后,频道成员将看不见本端视频画面
初始化 JCMediaChannel 时,默认设置发送本地视频流。如果想要在加入频道的时候就让频道内其他成员看见本端视频画面,可以在调用 join 加入频道前设置
该方法在频道内和频道外均可调用,且在离开频道后该设置仍然有效。也就是说这一次设置了关闭发送本地视频流,那么在下一次加入频道时默认会关闭发送本地音频流
频道中也可调用此方法开启或关闭发送本地视频流,服务器会更新状态并同步给其他频道成员
频道中调用此方法不影响接收远端视频
- 参数
-
enable 开启/关闭发送本地视频流 - true: 开启发送本地视频流
- false: 关闭发送本地视频流
- 返回
- 调用是否正常
- true:正常执行调用流程,存在以下两种场景:
- 若在调用此方法时,用户不在频道中,则不会收到回调通知
- 若在调用此方法时,用户在频道中,则会收到 onMediaChannelPropertyChange 通知
- false:调用失败,不会收到回调通知
- true:正常执行调用流程,存在以下两种场景:
◆ enableAudioOutput()
|
abstract |
开启/关闭音频输出
- 注解
- 该接口需要在自己加入会议成功后才能调用
该方法可实现本地静音功能。关闭时听不到频道内其他成员的声音,不影响其他成员;开启时可以听到其他成员声音
初始化 JCMediaChannel 时,默认设置开启音频输出功能。如果想要在加入频道的时候听不见其他成员的声音,可以在调用 @join 加入频道前设置
该方法可以关闭或重新开启音频输出功能,在频道内和频道外均可调用,且在离开频道后仍然有效,也就是说这一次设置了关闭音频输出,那么下一次加入频道时也是默认关闭音频输出
- 参数
-
enable 开启/关闭音频输出 - true: 开启音频输出
- false: 关闭音频输出
- 返回
- 调用是否正常
- true:正常执行调用流程,存在以下两种场景:
- 若在调用此方法时,用户不在频道中,则不会收到回调通知
- 若在调用此方法时,用户在频道中,则会收到 onMediaChannelPropertyChange 通知
- false:调用失败,不会收到回调通知
- true:正常执行调用流程,存在以下两种场景:
◆ requestVideo()
|
abstract |
请求频道中其他用户的视频流
- 注解
- 该接口需要在自己加入会议成功后才能调用
当 pictureSize 为 PICTURESIZE_NONE 时表示关闭请求
建议使用 startVideo 方法代替
- 参数
-
participant JCMediaChannelParticipant 频道中其他成员对象 pictureSize 视频请求的尺寸类型: - PICTURESIZE_NONE : 不渲染
- PICTURESIZE_MIN : 最小尺寸
- PICTURESIZE_SMALL : 小尺寸
- PICTURESIZE_LARGE : 大尺寸
- PICTURESIZE_MAX : 最大尺寸
- 返回
- 调用是否正常
- true:正常执行调用流程,会收到 onParticipantUpdate 通知
- false:调用失败,不会收到回调通知
◆ requestScreenVideo()
|
abstract |
请求屏幕共享的视频流
- 注解
- 该接口需要在自己加入会议成功后才能调用
当 pictureSize 为 PICTURESIZE_NONE 表示关闭请求
- 参数
-
screenUri 屏幕分享uri pictureSize 视频请求尺寸类型,参见: - PICTURESIZE_NONE : 不渲染
- PICTURESIZE_MIN : 最小尺寸
- PICTURESIZE_SMALL : 小尺寸
- PICTURESIZE_LARGE : 大尺寸
- PICTURESIZE_MAX : 最大尺寸
- 返回
- 调用是否正常
- true:正常执行调用流程
- false:调用失败
◆ enableCdn()
|
abstract |
开启/关闭Cdn推流
- 注解
- 该接口需要在自己加入会议成功后才能调用
- 参数
-
enable 开启/关闭Cdn推流 - true: 开启 Cdn 推流
- false: 关闭 Cdn 推流
keyInterval 推流关键帧间隔(毫秒),当 enable 为 true 时有效,有效值需要>=1000
- 返回
- 调用是否正常
- true:正常执行调用流程,会收到 onMediaChannelPropertyChange 通知
- false:调用失败,不会收到通知回调
◆ enableRecord()
|
abstract |
开启/关闭视频录制
- 注解
- 该接口需要在自己加入会议成功后才能调用
- 参数
-
enable 开启/关闭视频录制 - true: 开启视频录制
- false: 关闭视频录制
recordParam RecordParam 录制参数,当 enable 为 true 时,可以更改由 join 时传入的录制参数,不需更改则填 null
- 返回
- 调用是否正常
- true:正常执行调用流程,会收到 onMediaChannelPropertyChange 通知
- false:调用失败,不会收到通知回调
◆ enableScreenShare()
|
abstract |
开启/关闭屏幕分享
- 注解
- 该接口需要在自己加入会议成功后才能调用
- 参数
-
enable 开启/关闭屏幕分享 - true: 开启屏幕分享
- false: 关闭屏幕分享
screenShareParam 屏幕分享参数,当 enable 为 true 时有效,传 null 表示使用媒体引擎的默认值,详情见 ScreenShareParam
- 返回
- 调用是否正常
- true:正常执行调用流程
- false:调用失败
◆ getParticipant()
|
abstract |
根据用户标识获取频道成员
- 注解
- 该接口需要在自己加入会议成功后才能调用
- 参数
-
userId 用户唯一标识
- 返回
- 频道成员对象
- null:频道内无此用户标识的用户
- JCMediaChannelParticipant 对象:频道内有此用户标识的用户
◆ getStatistics()
|
abstract |
获取统计信息
- 注解
- 该接口需要在自己加入会议成功后才能调用
以Json字符串形式返回,其中包含 "Config"、"Network"、"Transport"、"Participants" 4个键值,示例如下:
{
"Config": "Video Config:\r\n SRTP: off \r\n Codec: H264-SVC \r\n Payload: 125 \r\n Bitrate: 1000 \r\n Framerate: 24 \r\n Resolution: 640x352 \r\n FEC: on|124|123 \r\n FIR: off \r\n Key Interval: 0 \r\n Repeat: 0 \r\n NACK: off \r\n RTX: off \r\n TMMBR: off \r\n RPSI: off \r\n Small NALU: on \r\n ARS: off \r\n BR Min: 10 \r\n BR Max: 2000 \r\n FR Min: 1 \r\n FR Max: 30 \r\n Res. Ctrl: off \r\n Res. Mode: 0 \r\n Fr Ctrl: off \r\n CPU Load Ctrl: off \r\n Target: 80 \r\n Bw Efficient: off \r\n Error Conceal: off \r\n Enhance color: off \r\n Boost bright: off \r\n Boost contrast: off \r\n RTP Ext: CVO \r\n Render Name: N\/A \r\n",
"Network": "Server(-176574541330799):\r\n4466(1): BWE(4592|1231) IN(A:0;)\r\n\r\n",
"Transport": "Local: 100.306884891:44795\r\nRemote: 120:14243\r\n\r\nLastPaths: 120,120\r\n\r\nPath: 120 [tcp]\r\n Step1:Delay\/Loss(S\/R): 55\/0\/0\r\n Cost: 65** (best: 40)\r\nPath: 151 [udp]\r\n Step1:Delay\/Loss(S\/R): 43\/0\/0\r\n Cost: 132\r\nPath: 105 [tcp]\r\n Step1:Delay\/Loss(S\/R): 55\/0\/0\r\n Cost: 142\r\nPath: 100 [tcp]\r\n Step1:Delay\/Loss(S\/R): 43\/0\/0\r\n Cost: 144\r\n",
"Participants": [{
"4466": "Video Sending Stats:\r\n Packets: 0 \r\n Capture Fr: 24 \r\n FPS\/IDR: 0\/0 \r\n Resolution: 640x352[0|0|0] \r\n Bitrate\/Setrate:0\/1000 \r\n QP: 0 \r\n FecPrecent: 20\r\nBe Subscribed Stats:\r\n Audio: true\r\n Video: [0|0|0|0]\r\n Screen: [0|0|0|0]\r\n"
}]
}
- 返回
- 统计信息
◆ setCustomProperty()
|
abstract |
设置频道自定义属性
- 注解
- 该接口需要在自己加入会议成功后才能调用
- 参数
-
property 自定义属性
- 返回
- 调用是否正常
- true:正常执行调用流程
- false:调用失败
◆ getCustomProperty()
|
abstract |
获取频道自定义属性
- 注解
- 该接口需要在自己加入会议成功后才能调用
- 返回
- 自定义属性
◆ sendMessage()
|
abstract |
发送消息
- 注解
- 该接口需要在自己加入会议成功后才能调用
此接口调用成功后,消息接收方会收到 onMessageReceive 回调,通过此回调可以获取消息的文本类型和文本内容
- 注解
- 当参数content大于4K时消息的发送不可靠,为确保消息发送的可靠性可以对消息内容进行压缩。
- 参数
-
type 消息类型 content 消息内容,content不能为空,content不能大于 4k toUserId 接收者id,null则发给频道所有人员
- 返回
- 调用是否正常
- true:正常执行调用流程
- false:调用失败
◆ sendCommand()
|
abstract |
发送指令
- 注解
- 该接口需要在自己加入会议成功后才能调用
-
- 指令名: StartForward 指令作用:请求服务器开始转发音视频
参数格式:{"MtcConfUserUriKey": "用户Uri", "MtcConfMediaOptionKey": "类型"}
用户Uri: 通过调用底层Mtc接口获取 MtcUser.Mtc_UserFormUri(EN_MTC_USER_ID_USERNAME, userId)
类型: 服务器转发分三种 音频、视频、音视频,具体可参考底层mtc_conf.h下的MtcConfMedia的枚举值。
注意1:指令发送成功后会收到 onParticipantUpdate 回调
举例: {"MtcConfUserUriKey": "[username:justin@sample.cloud.justalk.com]", "MtcConfMediaOptionKey": 3}
- 指令名: StopForward 指令作用:请求服务器停止转发音视频
参数格式:{"MtcConfUserUriKey": "用户URL", "MtcConfMediaOptionKey": "类型"}
用户Uri: 通过调用底层Mtc接口获取 MtcUser.Mtc_UserFormUri(EN_MTC_USER_ID_USERNAME, userId)
类型: 服务器转发分三种 音频、视频、音视频,具体可参考底层mtc_conf.h下的MtcConfMedia的枚举值。
注意1:指令发送成功后会收到 onParticipantUpdate 回调
举例: {"MtcConfUserUriKey": "[username:justin@sample.cloud.justalk.com]", "MtcConfMediaOptionKey": 3}
- 指令名: ChangeTitle 指令作用:请求修改会议主题
参数格式: {"MtcConfTitleKey":"修改的内容"}
修改的内容: 比如原来主题设置的是"123",现在改为"321"。
注意1:指令发送成功后会收到 onMediaChannelPropertyChange 回调
注意2:可通过 JCManager.shared.mediaChannel.title 获取主题
举例:{"MtcConfTitleKey": "321"}
- 指令名: SetPartpProp 指令作用:批量修改成员状态,角色,昵称。
参数格式: {"MtcConfStateKey":1,"MtcConfDisplayNameKey":"1314","MtcConfPartpLstKey":["[username:10086@sample.cloud.justalk.com]"],"MtcConfRoleKey":7}
要修改的成员状态: 具体可参考底层 mtc_conf.h 下的 MtcConfState 的枚举值
要修改的成员角色: 具体可参考底层 mtc_conf.h 下的 MtcConfRole 的枚举值
要修改的成员昵称: 比如"123"
用户Uri:通过调用底层Mtc接口获取 MtcUser.Mtc_UserFormUri(EN_MTC_USER_ID_USERNAME, userId);
注意1:指令发送成功后会收到 onParticipantUpdate 回调
注意2:MtcConfStateKey、MtcConfDisplayNameKey、MtcConfRoleKey这三个字段,可根据用户想修改哪个值,就在json字符串里面加入哪个。
注意3:MtcConfPartpLstKey 可包含多个用户uri进行批量修改
举例:{"MtcConfStateKey":4,"MtcConfDisplayNameKey":"123","MtcConfPartpLstKey":{"MtcConfUserUriKey":"[username:10086@sample.cloud.justalk.com]","MtcConfStateKey":4},"MtcConfRoleKey":4}
- 指令名:ReplayApplyMode 指令作用:设置推流布局模式
指令参数格式:{"MtcConfCompositeModeKey": 参数值}
参数值:
1 平铺模式,所有视频均分平铺
2 讲台模式,共享为大图,其他视频为小图
3 演讲模式,共享为大图,共享者视频为小图,其他不显示
4 自定义模式,由ReplayApplyLayout指令设置所有视频布局
5 智能模式。
举例:输入指令参数{"MtcConfCompositeModeKey": 2}就是讲台模式<br>
- 指令名:ReplayApplyLayout 指令作用:为多用户设置自定义推流布局
指令参数格式:{[{"MtcConfUserUriKey": "用户uri", "MtcConfPictureSizeKey": 视频尺寸,"MtcConfRectangleKey": 图像矩形的具体方位和长宽}],...}
用户uri:通过调用底层Mtc接口获取MtcUser.Mtc_UserFormUri((uint)EN_MTC_USER_ID_TYPE.EN_MTC_USER_ID_USERNAME,userId)
视频尺寸:一共5个枚举值,具体枚举值请参考底层mtc_conf.h下的MtcConfPs枚举
图像矩形的具体方位和长宽:这是一个Json格式的Array对象表示这个图像的位置和大小,第一个值是图像左上角的x坐标(0~1)
第二个值是图像左上角的y坐标(0~1)。第三个值是图像的宽(0~1)。第四个值是图像的高(0~1)。比如[0.5,0.5,0.5,0.5]表示图像在右下角长宽是原始屏幕的一半
举例:
[{"MtcConfUserUriKey":"[username:zhang@xxxx.cloud.justalk.com]","MtcConfPictureSizeKey":512,"MtcConfRectangleKey":[0.5,0.5,0.5,0.5]}]
表示成员zhang小尺寸的视频在屏幕右下角位置,长宽是原始屏幕的一半
- 指令名: StartForward 指令作用:请求服务器开始转发音视频
- 参数
-
name 指令名 param 指令参数
- 返回
- 调用是否正常
- true:正常执行调用流程
- false:调用失败
◆ inviteSipUser()
|
abstract |
邀请Sip用户
- 注解
- 该接口需要在自己加入会议成功后才能调用
一般用于对接落地网关等
- 参数
-
userId 一般为号码 sipParam SipParam 参数对象
- 返回
- 调用是否正常
- >0:操作id,结果通过 onInviteSipUserResult 通知
- -1:失败,不会收到回调通知
◆ setCustomRole()
|
abstract |
设置自定义角色
- 注解
- 该接口需要在自己加入会议成功后才能调用
- 参数
-
customRole 自定义角色 participant JCMediaChannelParticipant 对象,传 null 表示自己
◆ getCustomRole()
|
abstract |
◆ setCustomState()
|
abstract |
设置自定义状态
- 注解
- 该接口需要在自己加入会议成功后才能调用
- 参数
-
customState 自定义状态 participant JCMediaChannelParticipant 对象,传 null 表示自己
◆ getCustomState()
|
abstract |
◆ kick()
|
abstract |
将成员踢出频道
- 注解
- 该接口需要在自己加入会议成功后才能调用
- 参数
-
participant JCMediaChannelParticipant 对象,频道中的成员
- 返回
- 调用是否正常
- true:正常执行调用流程
- false:调用失败
◆ sendCommandToDelivery()
|
abstract |
发送命令给推流或录制器
- 注解
- 该接口需要在自己加入会议成功后才能调用
发送命令给推流时,只有在频道中并且推流状态为 CDN_STATE_READY 才生效
发送命令给录制器时,只有在频道中并且录制状态为 RECORD_STATE_READY 才生效
- 参数
-
command 命令字符串
- 返回
- 调用是否正常
- true:正常执行调用流程
- false:调用失败
◆ enableSelfVideoRatio()
|
abstract |
设置自身视频宽高比
- 注解
- 该接口需要在自己加入会议成功后才能调用
- 参数
-
enable 是否开启自身视频宽高比 - true: 开启
- false: 关闭
ratio 视频宽高比
◆ startScreenShareVideo()
|
abstract |
启动频道成员的屏幕分享视频渲染
- 注解
- 该接口需要在自己加入会议成功后才能调用 频道成员开启屏幕分享时,调用此方法可获得屏幕分享渲染对象 JCMediaDeviceVideoCanvas
- 参数
-
renderType 渲染模式: - RENDER_FULL_SCREEN: 铺满窗口
- RENDER_FULL_CONTENT: 全图像显示,会有黑边
- RENDER_FULL_AUTO: 自适应
pictureSize 视频请求的尺寸类型: - PICTURESIZE_NONE : 不渲染
- PICTURESIZE_MIN : 最小尺寸
- PICTURESIZE_SMALL : 小尺寸
- PICTURESIZE_LARGE : 大尺寸
- PICTURESIZE_MAX : 最大尺寸
- 返回
- JCMediaDeviceVideoCanvas 渲染对象
◆ stopScreenShareVideo()
|
abstract |
停止屏幕分享视频渲染
- 注解
- 该接口需要在自己加入会议成功后才能调用
◆ getSelfParticipant()
|
abstract |
◆ getMaxResolution()
|
abstract |
获得频道最大分辨率
频道中的最大分辩由第一个加入频道的用户决定, JoinParam 参数中设置的分辩率并一定是频道的最大分辨率,只有加入成功后才能准确知道
- 注解
- 该接口需要在自己加入会议成功后才能调用
- 返回
- 频道最大分辨率:
- MAX_RESOLUTION_360p : 最大分辨率 360p
- MAX_RESOLUTION_720p : 最大分辨率 720p
- MAX_RESOLUTION_1080p : 最大分辨率 1080p
◆ subscribeParticipantAudio()
|
abstract |
订阅或取消订阅指定用户的音频
- 注解
- 该接口需要在自己加入会议成功后才能调用
- 参数
-
participant JCMediaChannelParticipant 对象,频道中的成员 subscribe 是否订阅 - true:订阅
- false:取消订阅
- 返回
- 调用是否正常
- true:正常执行调用流程
- false:调用失败
类成员变量说明
◆ PICTURESIZE_NONE
|
static |
不渲染
◆ PICTURESIZE_MIN
|
static |
最小尺寸
◆ PICTURESIZE_SMALL
|
static |
小尺寸
◆ PICTURESIZE_LARGE
|
static |
大尺寸
◆ PICTURESIZE_MAX
|
static |
最大尺寸
◆ STATE_IDLE
|
static |
空闲状态
◆ STATE_JOINING
|
static |
加入中
◆ STATE_JOINED
|
static |
已加入
◆ STATE_LEAVING
|
static |
离开中
◆ PARTICIPANT_TYPE_NORMAL
|
static |
普通成员
◆ PARTICIPANT_TYPE_PSTN
|
static |
PSTN成员
◆ PARTICIPANT_TYPE_WEBRTC
|
static |
Webrtc成员
◆ PARTICIPANT_TYPE_IRC
|
static |
录制器成员(录制和推流),该类型成员不会上报给上层应用
◆ VOLUME_STATUS_ZERO
|
static |
无声音
◆ VOLUME_STATUS_LOW
|
static |
低
◆ VOLUME_STATUS_MID
|
static |
中
◆ VOLUME_STATUS_HIGH
|
static |
高
◆ VOLUME_STATUS_TOO_HIGH
|
static |
过高
◆ NET_STATUS_DISCONNECTED
|
static |
无
◆ NET_STATUS_VERY_BAD
|
static |
非常差
◆ NET_STATUS_BAD
|
static |
差
◆ NET_STATUS_NORMAL
|
static |
一般
◆ NET_STATUS_GOOD
|
static |
好
◆ NET_STATUS_VERY_GOOD
|
static |
非常好
◆ RECORD_STATE_NONE
|
static |
无法进行视频录制
◆ RECORD_STATE_READY
|
static |
可以开启视频录制
◆ RECORD_STATE_RUNNING
|
static |
视频录制中
◆ CDN_STATE_NONE
|
static |
无法进行Cdn推流
◆ CDN_STATE_READY
|
static |
可以开启Cdn推流
◆ CDN_STATE_RUNNING
|
static |
Cdn推流中
◆ MAX_RESOLUTION_360p
|
static |
最大分辨率 360p
◆ MAX_RESOLUTION_720p
|
static |
最大分辨率 720p
◆ MAX_RESOLUTION_1080p
|
static |
最大分辨率 1080p
◆ CUSTOM_ROLE_NONE
|
static |
无自定义角色
◆ CUSTOM_ROLE_0
|
static |
自定义角色0
◆ CUSTOM_ROLE_1
|
static |
自定义角色1
◆ CUSTOM_ROLE_2
|
static |
自定义角色2
◆ CUSTOM_ROLE_3
|
static |
自定义角色3
◆ CUSTOM_STATE_NONE
|
static |
无自定义状态
◆ CUSTOM_STATE_0
|
static |
自定义状态0
◆ CUSTOM_STATE_1
|
static |
自定义状态1
◆ CUSTOM_STATE_2
|
static |
自定义状态2
◆ CUSTOM_STATE_3
|
static |
自定义状态3
◆ volumeChangeNotify
boolean com.juphoon.cloud.JCMediaChannel.volumeChangeNotify = false |
是否通知成员音量变化,默认不通知
- true: 通知
- false: 不通知
该类的文档由以下文件生成:
- cloud/src/main/mediachannel/com/juphoon/cloud/JCMediaChannel.java