构造函数

(int) - query:
 
(bool) - join:joinParam:
 
(bool) - leave
 
(bool) - stop
 
(bool) - enableUploadAudioStream:
 
(bool) - enableUploadVideoStream:
 
(bool) - enableAudioOutput:
 
(bool) - requestVideo:pictureSize:
 
(bool) - enableScreenShare:screenShareParam:
 
(bool) - requestScreenVideo:pictureSize:
 
(bool) - enableCdn:keyInterval:
 
(bool) - enableRecord:recordParam:
 
(JCMediaChannelParticipant *__nullable) - getParticipant:
 
(NSString *__nullable) - getStatistics
 
(bool) - setCustomProperty:
 
(NSString *__nullable) - getCustomProperty
 
(bool) - sendMessage:content:toUserId:
 
(int) - inviteSipUser:sipParam:
 
(bool) - sendCommand:commandParam:
 
(void) - setCustomRole:participant:
 
(JCMediaChannelCustomRole- getCustomRole
 
(void) - setCustomState:participant:
 
(JCMediaChannelCustomState- getCustomState
 
(BOOL) - kick:
 
(bool) - sendCommandToDelivery:
 
(void) - enableSelfVideoRatio:ratio:
 
(JCMediaDeviceVideoCanvas *__nullable) - startScreenShareVideo:pictureSize:
 
(void) - stopScreenShareVideo
 
(bool) - subscribeParticipantAudio:subscribe:
 

类方法

(JCMediaChannel *__nullable) + create:mediaDevice:callback:
 
(void) + destroy
 

属性

NSString *__nullable channelUri
 
NSString *__nullable channelId
 
int channelNumber
 
NSString *__nullable sessionId
 
NSString *__nonnull password
 
JCMediaChannelState state
 
NSArray *__nonnull participants
 
bool uploadLocalAudio
 
bool uploadLocalVideo
 
bool audioOutput
 
NSString *__nullable screenRenderId
 
NSString *__nullable screenUserId
 
NSString *__nullable title
 
JCMediaChannelRecordState recordState
 
JCMediaChannelCdnState cdnState
 
JCMediaChannelParticipant *__nullable selfParticipant
 
bool volumeChangeNotify
 
JCMediaChannelMaxResolution maxResolution
 

详细描述

多方通话模块,类似音视频房间的概念,可以通过频道号 channelId 加入频道进行音视频通话

函数文档

◆ create:mediaDevice:callback:

+ (JCMediaChannel* __nullable) create: (JCClient *__nonnull)  client
mediaDevice: (JCMediaDevice *__nonnull)  mediaDevice
callback: (id< JCMediaChannelCallback > __nonnull)  callback 

创建 JCMediaChannel 对象

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

注解
参数
clientJCClient 对象
mediaDeviceJCMediaDevice 对象
callbackJCMediaChannelCallback 对象,用于回调相关通知
返回
JCMediaChannel 对象
异常
JCClient、JCMediaDevice、JCMediaChannelCallback 任意一个参数传空就会出现调用失败

◆ destroy

+ (void) destroy

销毁 JCMediaChannel 对象

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

◆ enableAudioOutput:

- (bool) enableAudioOutput: (bool)  enable

开启/关闭远端音频输出

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

参数
enable是否开启音频输出
  • true: 开启
  • false: 关闭
返回
调用是否正常
  • true:正常执行调用流程
    • 在调用此方法时,用户的频道状态不是已加入状态,则不会收到回调通知
    • 在调用此方法时,用户的频道状态是已加入状态,则会收到 onMediaChannelPropertyChange 通知
  • false:调用失败,不会收到回调通知

◆ enableCdn:keyInterval:

- (bool) enableCdn: (bool)  enable
keyInterval: (int)  keyInterval 

开启/关闭Cdn推流

在收到 onMediaChannelPropertyChange 回调后检查是否开启

参数
enable开启/关闭Cdn推流
  • true: 开启 Cdn 推流
  • false: 关闭 Cdn 推流
keyInterval推流关键帧间隔(毫秒),当参数 enable 为 true 时有效,有效值需要>=1000
返回
调用是否正常

◆ enableRecord:recordParam:

- (bool) enableRecord: (bool)  enable
recordParam: (JCMediaChannelRecordParam *__nullable)  recordParam 

开启/关闭视频录制

参数
enable开启/关闭视频录制
  • true: 开启视频录制
  • false: 关闭视频录制
recordParamJCMediaChannelRecordParam 录制参数对象,当参数 enable 为 true 时,可以更改由 join 时传入的录制参数,不需更改则填 nil
返回
调用是否正常

◆ enableScreenShare:screenShareParam:

- (bool) enableScreenShare: (bool)  enable
screenShareParam: (JCMediaChannelScreenShareParam *__nullable)  screenShareParam 

开启/关闭屏幕分享

在频道中时调用此方法才有效

参数
enable开启/关闭屏幕分享
  • true: 开启屏幕分享
  • false: 关闭屏幕分享
返回
调用是否正常
  • true:正常执行调用流程
  • false:调用失败

◆ enableSelfVideoRatio:ratio:

- (void) enableSelfVideoRatio: (bool)  enable
ratio: (float)  ratio 

设置自身视频宽高比

注解
必须加入频道后设置才能生效
参数
enable是否开启自身视频宽高比
  • true: 开启
  • false: 关闭
ratio视频宽高比

◆ enableUploadAudioStream:

- (bool) enableUploadAudioStream: (bool)  enable

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

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

参数
enable开启/关闭发送本地音频流
  • true: 开启,即发送本地音频流
  • false: 关闭,即不发送本地音频流
返回
调用是否正常
  • true: 正常执行调用流程
    • 在调用此方法时,用户不在频道中,则不会收到回调通知
    • 在调用此方法时,用户在频道中,则会收到 onMediaChannelPropertyChange 通知
  • false: 调用失败,不会收到回调通知

◆ enableUploadVideoStream:

- (bool) enableUploadVideoStream: (bool)  enable

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

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

参数
enable是否发送本地视频流
  • true: 开启,即发送本地视频流
  • false: 关闭,即不发送本地视频流
返回
调用是否正常
  • true:正常执行调用流程
    • 在调用此方法时,用户不在频道中,则不会收到回调通知
    • 在调用此方法时,用户在频道中,则会收到 onMediaChannelPropertyChange 通知
  • false:调用失败,不会收到回调通知

◆ getCustomProperty

- (NSString * __nullable) getCustomProperty

获取自定义频道属性

调用此接口来获取频道自定义属性

返回
自定义属性

◆ getCustomRole

- (JCMediaChannelCustomRole) getCustomRole

获得自定义角色

返回
自定义角色

◆ getCustomState

- (JCMediaChannelCustomState) getCustomState

获得自定义状态

返回
自定义状态

◆ getParticipant:

- (JCMediaChannelParticipant* __nullable) getParticipant: (NSString *__nonnull)  userId

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

参数
userId用户唯一标识
返回

◆ getStatistics

- (NSString * __nullable) getStatistics

获取统计信息

以Json字符串形式返回,其中包含 "Config", "Network","Transport" 和 "Participants" 4个节点

返回
统计信息

◆ inviteSipUser:sipParam:

- (int) inviteSipUser: (NSString *__nonnull)  userId
sipParam: (JCMediaChannelSipParam *__nonnull)  sipParam 

邀请Sip用户

一般用于对接落地网关等,结果通过 onInviteSipUserResult 通知

参数
userId一般为号码
sipParamJCMediaChannelSipParam 参数对象
返回
调用是否正常

◆ join:joinParam:

- (bool) join: (NSString *__nonnull)  channelId
joinParam: (JCMediaChannelJoinParam *__nullable)  joinParam 

加入频道

该方法让用户加入通话频道,在同一个频道内的用户可以互相通话
如果已在频道中,用户必须退出当前频道,即处于空闲状态,才能进入下一个频道,否则将直接返回 false

参数
channelId多方通话标识
joinParamJCMediaChannelJoinParam 对象,没有则填 nil
返回
调用是否正常
  • true: 正常执行调用流程
  • false: 调用失败
    • 在调用此方法时,用户的频道状态不是空闲状态,则不会收到回调通知
    • 在调用此方法时,用户的频道是空闲状态,则会收到 onJoin 方法通知

◆ kick:

- (BOOL) kick: (JCMediaChannelParticipant *__nonnull)  participant

将成员踢出频道

参数
participant成员
返回
调用是否正常
  • true:正常执行调用流程
  • false:调用失败

◆ leave

- (bool) leave

离开频道

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

返回
调用是否正常
  • true: 正常执行调用流程
  • false: 调用失败

◆ query:

- (int) query: (NSString *__nonnull)  channelId

查询频道相关信息

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

参数
channelId频道标识
返回
操作id,与 onQuery 回调中的 operationId 对应

◆ requestScreenVideo:pictureSize:

- (bool) requestScreenVideo: (NSString *__nonnull)  screenUri
pictureSize: (JCMediaChannelPictureSize pictureSize 

请求频道成员屏幕共享的视频流

当 pictureSize 为 JCMediaChannelPictureSizeNone 表示关闭请求

参数
screenUri屏幕分享uri
pictureSize视频请求尺寸类型,参见:
返回
调用是否正常
  • true:正常执行调用流程
  • false:调用失败

◆ requestVideo:pictureSize:

- (bool) requestVideo: (JCMediaChannelParticipant *__nonnull)  participant
pictureSize: (JCMediaChannelPictureSize pictureSize 

请求频道中其他用户的视频流

当 pictureSize 为 JCMediaChannelPictureSizeNone 时表示关闭请求

参数
participantJCMediaChannelParticipant 频道中其他成员对象
pictureSize视频请求的尺寸类型:
返回
调用是否正常
  • true:正常执行调用流程,会收到 onParticipantUpdate 通知
  • false:调用失败,不会收到回调通知

◆ sendCommand:commandParam:

- (bool) sendCommand: (NSString *__nonnull)  name
commandParam: (NSString *__nonnull)  param 

发送指令

  • 指令名: 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小尺寸的视频在屏幕右下角位置,长宽是原始屏幕的一半
参数
name指令名
param指令参数
返回
调用是否正常
  • true:正常执行调用流程
  • false:调用失败

◆ sendCommandToDelivery:

- (bool) sendCommandToDelivery: (NSString *__nonnull)  command

发送命令给推流或录制器

发送命令给推流时,只有加入成功并且推流状态为 JCMediaChannelCdnStateReady 才生效
发送命令给录制器时,只有加入成功并且录制状态为 JCMediaChannelRecordStateReady 才生效

参数
command命令字符串
返回
调用是否正常
  • true:正常执行调用流程
  • false:调用失败

◆ sendMessage:content:toUserId:

- (bool) sendMessage: (NSString *__nonnull)  type
content: (NSString *__nonnull)  content
toUserId: (NSString *__nullable)  toUserId 

发送消息

参数
type消息类型
content消息内容,不能为空,并且当 toUserId 不为 nil 时,content 不能大于 4k
toUserId接收者id,传入 nil 则发给频道所有人员
返回
调用是否正常
  • true:正常执行调用流程
  • false:调用失败

◆ setCustomProperty:

- (bool) setCustomProperty: (NSString *__nonnull)  property

设置频道自定义属性

调用此接口来设置频道自定义属性

参数
property自定义属性
返回
调用是否正常
  • true:正常执行调用流程
  • false:调用失败

◆ setCustomRole:participant:

- (void) setCustomRole: (JCMediaChannelCustomRole customRole
participant: (JCMediaChannelParticipant *__nullable)  participant 

设置自定义角色

参数
customRole自定义角色
participantJCMediaChannelParticipant 对象,频道中的成员,nil 则默认设置自己

◆ setCustomState:participant:

- (void) setCustomState: (JCMediaChannelCustomState customState
participant: (JCMediaChannelParticipant *__nullable)  participant 

设置自定义状态

参数
customState自定义状态
participantJCMediaChannelParticipant 对象,频道中的成员,nil 则默认设置自己

◆ startScreenShareVideo:pictureSize:

- (JCMediaDeviceVideoCanvas* __nullable) startScreenShareVideo: (JCMediaDeviceRender type
pictureSize: (JCMediaChannelPictureSize pictureSize 

启动频道成员的屏幕分享视频渲染

频道成员开启屏幕分享时,调用此方法可获得屏幕分享视频 渲染对象

参数
type渲染模式:
pictureSize视频请求的尺寸类型:
返回
JCMediaDeviceVideoCanvas 渲染对象

◆ stop

- (bool) stop

关闭频道

此频道内的成员都将被强制退出

返回
调用是否正常
  • true: 正常执行调用流程
    • 在调用此方法时,用户的频道状态是空闲状态,不会收到回调通知
    • 在调用此方法时,用户的频道状态不是空闲状态,则会收到 onStop 通知
  • false: 调用失败

◆ stopScreenShareVideo

- (void) stopScreenShareVideo

停止屏幕分享视频渲染

调用 startScreenShareVideo 启动屏幕分享视频渲染后,调用此方法可停止

◆ subscribeParticipantAudio:subscribe:

- (bool) subscribeParticipantAudio: (JCMediaChannelParticipant *__nonnull)  participant
subscribe: (bool)  subscribe 

订阅或取消订阅指定用户的声音

注解
该接口需要在自己加入会议成功后才能调用
参数
participantJCMediaChannelParticipant 对象,频道中的成员对象
subscribe是否订阅
  • true:订阅
  • false:取消订阅
返回
调用是否正常
  • true:正常执行调用流程
  • false:调用失败

属性说明

◆ audioOutput

- (bool) audioOutput
readnonatomicassign

是否音频输出

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

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

◆ cdnState

- (JCMediaChannelCdnState) cdnState
readnonatomicassign

获得cdn推流状态

◆ channelId

- (NSString* __nullable) channelId
readnonatomiccopy

频道标识

◆ channelNumber

- (int) channelNumber
readnonatomicassign

频道号

◆ channelUri

- (NSString* __nullable) channelUri
readnonatomiccopy

频道 Uri

◆ maxResolution

- (JCMediaChannelMaxResolution) maxResolution
readnonatomicassign

获得频道最大分辨率

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

注解
该接口需要在加入成功后调用才有意义

最大分辨率枚举值如下:

◆ participants

- (NSArray* __nonnull) participants
readnonatomicstrong

获得频道中的所有成员

◆ password

- (NSString* __nonnull) password
readnonatomicassign

频道密码

◆ recordState

- (JCMediaChannelRecordState) recordState
readnonatomicassign

获得视频录制状态,参见:

◆ screenRenderId

- (NSString* __nullable) screenRenderId
readnonatomiccopy

屏幕共享渲染标识

没有屏幕共享则为 nil

◆ screenUserId

- (NSString* __nullable) screenUserId
readnonatomiccopy

屏幕共享用户标识

没有屏幕共享则为 nil

◆ selfParticipant

- (JCMediaChannelParticipant* __nullable) selfParticipant
readnonatomicassign

◆ sessionId

- (NSString* __nullable) sessionId
readnonatomiccopy

获取服务器唯一频道ID

◆ state

- (JCMediaChannelState) state
readnonatomicassign

自己当前在频道中的状态

当前在频道中的状态,参见:

◆ title

- (NSString* __nullable) title
readnonatomiccopy

频道标题

◆ uploadLocalAudio

- (bool) uploadLocalAudio
readnonatomicassign

是否上传本地音频数据

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

◆ uploadLocalVideo

- (bool) uploadLocalVideo
readnonatomicassign

是否上传本地视频数据

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

◆ volumeChangeNotify

- (bool) volumeChangeNotify
readwritenonatomicassign

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

  • true: 通知
  • false: 不通知

该类的文档由以下文件生成:
最后更新时间: 9/8/2021, 3:47:32 PM