类似音视频频道的概念,可以通过频道号加入此频道,从而进行音视频通话

Properties

volumeChangeNotify: boolean = false

是否通知成员音量变化,默认不通知

  • true: 通知
  • false: 不通知

Methods

  • 开启/关闭音频输出

    Parameters

    • enable: boolean

      开启/关闭音频输出

      • true: 开启音频输出
      • false: 关闭音频输出

    Returns boolean

    调用是否正常

    • true:正常执行调用流程,存在以下两种场景:
    • 若在调用此方法时,用户不在频道中,则不会收到回调通知
    • 若在调用此方法时,用户在频道中,则会收到 onMediaChannelPropertyChange 通知
    • false:调用失败,不会收到回调通知

    该接口需要在自己加入会议成功后才能调用

    该方法可实现本地静音功能。关闭时听不到频道内其他成员的声音,不影响其他成员;开启时可以听到其他成员声音
    初始化 JCMediaChannel 时,默认设置开启音频输出功能。如果想要在加入频道的时候听不见其他成员的声音,可以在调用 join 加入频道前设置
    该方法可以关闭或重新开启音频输出功能,在频道内和频道外均可调用,且在离开频道后仍然有效,也就是说这一次设置了关闭音频输出,那么下一次加入频道时也是默认关闭音频输出

  • 开启/关闭Cdn推流

    Parameters

    • enable: boolean

      开启/关闭Cdn推流

      • true: 开启 Cdn 推流
      • false: 关闭 Cdn 推流
    • keyInterval: number

      推流关键帧间隔(毫秒),当 enable 为 true 时有效,有效值需要>=1000

    Returns boolean

    调用是否正常

    该接口需要在自己加入会议成功后才能调用

  • 开启/关闭视频录制

    Parameters

    • enable: boolean

      开启/关闭视频录制

      • true: 开启视频录制
      • false: 关闭视频录制
    • recordParam: RecordParam

      RecordParam 录制参数,当 enable 为 true 时,可以更改由 join 时传入的录制参数,不需更改则填 undefined

    Returns boolean

    调用是否正常

    该接口需要在自己加入会议成功后才能调用

  • 开启/关闭屏幕分享

    Parameters

    • enable: boolean

      开启/关闭屏幕分享

      • true: 开启屏幕分享
      • false: 关闭屏幕分享
    • screenShareParam: ScreenShareParam

      屏幕分享参数,当 enable 为 true 时有效,传 undefined 表示使用媒体引擎的默认值,详情见 ScreenShareParam

    Returns boolean

    调用是否正常

    • true:正常执行调用流程
    • false:调用失败

    该接口需要在自己加入会议成功后才能调用

  • 设置自身视频宽高比

    Parameters

    • enable: boolean

      是否开启自身视频宽高比

      • true: 开启
      • false: 关闭
    • ratio: number

      视频宽高比

    Returns any

    该接口需要在自己加入会议成功后才能调用

  • 开启/关闭发送本地音频流

    Parameters

    • enable: boolean

      开启/关闭发送本地音频流

      • true: 开启发送本地音频流
      • false: 关闭发送本地音频流

    Returns boolean

    调用是否正常

    • true: 正常执行调用流程,存在以下两种场景:
    • 若在调用此方法时,用户不在频道中,则不会收到回调通知
    • 若在调用此方法时,用户在频道中,则会收到 onMediaChannelPropertyChange 通知
    • false: 调用失败,不会收到回调通知

    该接口需要在自己加入会议成功后才能调用

    调用该方法可开启或关闭发送本地音频流。开启后,频道成员将听见本端声音;关闭后,频道成员将听不见本端声音
    初始化 JCMediaChannel 时,默认设置关闭本地音频流。如果想要在加入频道的时候就让频道内其他成员听见本端声音,可以在调用 join 加入频道前设置
    该方法在频道内和频道外均可调用,且在离开频道后该设置仍然有效。也就是说这一次设置了开启发送本地音频流,那么在下一次加入频道时默认会开启发送本地音频流
    频道中也可调用此方法开启或关闭发送本地音频流,服务器会更新状态并同步给其他频道成员
    频道中调用此方法不影响接收远端音频

  • 开启/关闭发送本地视频流

    Parameters

    • enable: boolean

      开启/关闭发送本地视频流

      • true: 开启发送本地视频流
      • false: 关闭发送本地视频流

    Returns boolean

    调用是否正常

    • true:正常执行调用流程,存在以下两种场景:
    • 若在调用此方法时,用户不在频道中,则不会收到回调通知
    • 若在调用此方法时,用户在频道中,则会收到 onMediaChannelPropertyChange 通知
    • false:调用失败,不会收到回调通知

    该接口需要在自己加入会议成功后才能调用

    调用该方法可开启或关闭发送本地视频流。开启后,频道成员将可以看见本端视频画面;关闭后,频道成员将看不见本端视频画面
    初始化 JCMediaChannel 时,默认设置发送本地视频流。如果想要在加入频道的时候就让频道内其他成员看见本端视频画面,可以在调用 join 加入频道前设置
    该方法在频道内和频道外均可调用,且在离开频道后该设置仍然有效。也就是说这一次设置了关闭发送本地视频流,那么在下一次加入频道时默认会关闭发送本地音频流
    频道中也可调用此方法开启或关闭发送本地视频流,服务器会更新状态并同步给其他频道成员
    频道中调用此方法不影响接收远端视频

  • 获取音频是否输出

    Returns boolean

    是否有音频输出

    • true: 输出中
    • false: 未输出

    该接口需要在自己加入会议成功后才能调用

    本地没有音频输出的话,就听不到频道内其他成员的声音了

  • 获得cdn推流状态

    Returns CdnState

    cdn推流状态:

    • CdnState.CDN_STATE_NONE : 无法进行Cdn推流。用户不在频道中或者加入频道时没有设置cdn推流参数
    • CdnState.CDN_STATE_READY : 可以开启Cdn推流。用户在加入频道时设置了cdn推流参数,并且没有在推流
    • CdnState.CDN_STATE_RUNNING : Cdn推流中。用户在加入频道时设置了cdn推流参数,并且正在cdn推流中

    该接口需要在自己加入会议成功后才能调用

  • 获得频道标识

    Returns string

    频道标识

    该接口需要在自己加入会议成功后才能调用

  • 获得频道号

    Returns number

    频道号

    该接口需要在自己加入会议成功后才能调用

  • 获得频道 Uri

    Returns string

    频道 Uri

    该接口需要在自己加入会议成功后才能调用

    不管加入频道时使用的是不是 uri 模式,都能获取到频道 Uri

  • 获得confId

    Returns number

    频道标识

    该接口需要在自己加入会议成功后才能调用

  • 获取频道自定义属性

    Returns string

    自定义属性

    该接口需要在自己加入会议成功后才能调用

  • 获得自定义角色

    Returns number

    "自定义角色"

    该接口需要在自己加入会议成功后才能调用

  • 获得自定义状态

    Returns number

    "自定义状态"

    该接口需要在自己加入会议成功后才能调用

  • 获得频道最大分辨率

    频道中的最大分辩由第一个加入频道的用户决定, JoinParam 参数中设置的分辩率并一定是频道的最大分辨率,只有加入成功后才能准确知道

    Returns number

    频道最大分辨率:

    该接口需要在自己加入会议成功后才能调用

  • 根据用户标识获取频道成员

    Parameters

    • userId: string

      用户唯一标识

    Returns JCMediaChannelParticipant

    频道成员对象

    • undefined:频道内无此用户标识的用户
    • JCMediaChannelParticipant 对象:频道内有此用户标识的用户

    该接口需要在自己加入会议成功后才能调用

  • 获得频道密码

    Returns string

    频道密码

    该接口需要在自己加入会议成功后才能调用

  • 获取视频录制状态

    Returns number

    视频录制状态,参见:

    该接口需要在自己加入会议成功后才能调用

  • 获取屏幕共享渲染标识

    Returns string

    屏幕共享渲染标识,频道中没有屏幕共享则返回undefined

    该接口需要在自己加入会议成功后才能调用

  • 获取开启屏幕共享的用户标识

    Returns string

    开启屏幕共享的用户标识,没有屏幕共享则为undefined

    该接口需要在自己加入会议成功后才能调用

  • 获得自身 JCMediaChannelParticipant 对象

    Returns JCMediaChannelParticipant

    自身 JCMediaChannelParticipant 对象

    该接口需要在自己加入会议成功后才能调用

  • 获取服务器唯一频道ID

    Returns string

    频道ID

    该接口需要在自己加入会议成功后才能调用

  • 获取统计信息

    Returns string

    统计信息

    该接口需要在自己加入会议成功后才能调用

    以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"

    }]

    }

  • 返回频道标题

    Returns string

    频道标题

    该接口需要在自己加入会议成功后才能调用

  • 获取本地音频数据是否在上传

    Returns boolean

    是否在上传本地音频数据

    • true: 上传中
    • false: 未上传

    该接口需要在自己加入会议成功后才能调用

  • 获取本地视频数据是否在上传

    Returns boolean

    是否在上传本地视频数据

    • true: 上传中
    • false: 未上传

    该接口需要在自己加入会议成功后才能调用

  • 邀请Sip用户

    Parameters

    • userId: string

      一般为号码

    • sipParam: SipParam

      SipParam 参数对象

    Returns number

    调用是否正常

    • >0:操作id,结果通过 inviteSipUser 通知
    • -1:失败,不会收到回调通知

    该接口需要在自己加入会议成功后才能调用

    一般用于对接落地网关等

  • 加入频道

    用户登录成功后可以通过此方法加入通话频道,在同一个频道内的用户可以互相通话
    如果已在频道中,用户须退出当前频道,才能进入下一个频道

    Parameters

    • channelId: string

      媒体频道标识

    • joinParam: JoinParam

      JoinParam 对象,没有则填 undefined

    Returns boolean

    调用是否正常

    • true: 正常执行调用流程,加入结果通过 onJoin 方法通知
    • false: 调用失败,存在以下两种场景:
    • 若在调用此方法时,用户的频道状态不是空闲状态,则不会收到回调通知
    • 若在调用此方法时,用户的频道状态是空闲状态,则会收到 onJoin 方法通知
  • 将成员踢出频道

    Parameters

    Returns boolean

    调用是否正常

    • true:正常执行调用流程
    • false:调用失败

    该接口需要在自己加入会议成功后才能调用

  • 离开频道

    Returns boolean

    调用是否正常

    • true: 正常执行调用流程
    • false: 调用失败

    该接口需要在自己加入会议成功后才能调用

    当前只支持同时加入一个频道,结果通过 onLeave 通知

  • 查询频道相关信息

    Parameters

    • channelId: string

      频道标识

    Returns number

    返回操作id,与 onQuery 回调中的 operationId 对应

    该接口需要在自己加入会议成功后才能调用

    在登录后调用此接口可以查询频道相关信息,例如频道是否存在,频道人数等,结果通过 onQuery 通知

  • 发送指令

    Parameters

    • name: string

      指令名

    • param: string

      指令参数

    Returns boolean

    调用是否正常

    • true:正常执行调用流程
    • false:调用失败

    该接口需要在自己加入会议成功后才能调用

    • 指令名: 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"}

    • 指令名: SetPartProp 指令作用:批量修改成员状态,角色,昵称。
      参数格式: {"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}就是讲台模式

    • 指令名: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小尺寸的视频在屏幕右下角位置,长宽是原始屏幕的一半
  • 发送命令给推流或录制器

    Parameters

    • command: string

      命令字符串

    Returns boolean

    调用是否正常

    • true:正常执行调用流程
    • false:调用失败

    该接口需要在自己加入会议成功后才能调用

    发送命令给推流时,只有在频道中并且推流状态为 CdnState.CDN_STATE_READY 才生效
    发送命令给录制器时,只有在频道中并且录制状态为 RecordState.RECORD_STATE_READY 才生效

  • 发送消息

    Parameters

    • type: string

      消息类型

    • content: string

      消息内容,content不能为空,content不能大于 4k

    • toUserId: string

      接收者id,undefined则发给频道所有人员

    Returns boolean

    调用是否正常

    • true:正常执行调用流程
    • false:调用失败

    该接口需要在自己加入会议成功后才能调用 此接口调用成功后,消息接收方会收到 onMessageReceive 回调,通过此回调可以获取消息的文本类型和文本内容 当参数content大于4K时消息的发送不可靠,为确保消息发送的可靠性可以对消息内容进行压缩。

  • 设置频道自定义属性

    Parameters

    • property: string

      自定义属性

    Returns boolean

    调用是否正常

    • true:正常执行调用流程
    • false:调用失败

    该接口需要在自己加入会议成功后才能调用

  • 设置自定义角色

    Parameters

    Returns any

    该接口需要在自己加入会议成功后才能调用

  • 设置自定义状态

    Parameters

    Returns any

    该接口需要在自己加入会议成功后才能调用

  • 关闭频道

    Returns boolean

    调用是否正常

    • true: 正常执行调用流程,存在以下两种场景:
    • 若在调用此方法时,用户的频道状态是空闲状态,则不会收到回调通知
    • 若在调用此方法时,用户的频道状态不是空闲状态,则会收到 onStop 通知
    • false: 调用失败

    该接口需要在自己加入会议成功后才能调用

    接口调用成功后,此频道内的成员都将被强制退出,自己会收到 onStop 通知,其他成员会收到 onLeave 通知

  • 订阅或取消订阅指定用户的音频

    Parameters

    • participant: JCMediaChannelParticipant

      JCMediaChannelParticipant 对象,频道中的成员

    • subscribe: boolean

      是否订阅

      • true:订阅
      • false:取消订阅

    Returns boolean

    调用是否正常

    • true:正常执行调用流程
    • false:调用失败

    该接口需要在自己加入会议成功后才能调用

  • 创建 JCMediaChannel 对象

    JCMediaChannel 的所有接口函数,如无特殊说明,都建议在主线程调用

    Parameters

    Returns JCMediaChannelImpl

    JCMediaChannel 对象

    • 调用此方法创建 JCMediaChannel 对象后,期间没有调用过 destroy 方法销毁对象,然后又重复调用此方法,会直接返回第一次创建的 JCMediaChannel 对象
    • 调用此方法前确保 JCClient 已完成初始化,即 getState 方法获取的状态值不等于 ClientState.STATE_NOT_INIT

    "JCClient、JCMediaDevice、JCMediaChannelCallback 任意参数为空就会抛出异常"

  • 销毁 JCMediaChannel 对象

    该方法为同步调用,需要等待 JCMediaChannel 实例资源释放后才能执行其他操作,调用此方法后,你将无法再使用 JCMediaChannel 的其它方法和回调。
    我们 不建议 在 JCSDK 的回调中调用此方法销毁 JCMediaChannel 对象,有可能会出现崩溃。
    如需在销毁后再次创建 JCMediaChannel 实例,需要等待 destroy 方法执行结束后再创建实例。

    Returns void