菊风云平台
菊风云平台WebRTC通话集成

通话集成

1. 集成开发

1.1 通话集成流程

1.1.1 在 HTML 中添加如下代码,细节请参考样例网页

<script src="webrtc.min.js"></script>

1.1.2 建立网页与 菊风云 连接

打开连接

var jc = new WebRTC(config, trace);

  trace 为可选的跟踪打印函数
  config 支持如下格式:
    {
      'url':"https://ums.justalkcloud.com:18443",
      'confProps': {
          "roomId":"10210311",
          "regionId":"10",
          "mediaType":"1",
          "appKey":"6c****************",
          "accountName": "1111111",
          "password": "1",
          "mtcConfQualityGradeKey":1,
          "mtcConfSecurityKey":0,
          "mtcConfPasswordKey":"123123",
          "mtcConfCompositeModeKey":2,
          "mtcConfStateKey":3,
          "mtcConfCapacityKey":4
        }
      'id':id,
      'getsourceid':'https:/.....'
    }
参数说明
url WS 服务器或 HTTP 服务器地址
id 可选的网页标识,默认随机生成
getsourceid 可选的 Chrome 屏幕共享扩展网页
confProps 会议相关参数

必要参数
- roomId 会议号
- accountName 账号
- password 账号密码
- AppKey APPKEY

可选参数
- regionId 区域 Id, 默认”0”
- mediaType 媒体类型, 0音频,默认1视频
- mtcConfPasswordKey 可选的会议密码,默认‘123456’
- mtcConfQualityGradeKey 会议视频尺寸级别
- mtcConfSecurityKey 是否加密传输
- mtcConfCompositeModeKey 收到视频的混合模式
- mtcConfStateKey 加入时的初始状态
- mtcConfCapacityKey 会议允许最大人数

如果连接成功,则会收到 onopen 回调

onopen(id, config)

   id     本地Id
   config 配置信息
           .instanceId  为peer(对端Id)
           .iceServers  为媒体配置

如果发生错误,则会收到 onerror 回调

onerror(error)

  error   错误对象

          应该关闭连接并重置界面

1.1.3 呼叫

连接成功后,即可进行呼叫,呼叫调用如下接口

jc.call(configuration, constraints, peer);

   configuration  可选的标准 RTCConfiguration object,可以为null,
                  默认由服务器下发(由onopen事件返回)
   constraints    标准 MediaStreamConstraints object,
                  参考update()参数说明
   peer           可选的对端Id,http连接时被忽略

呼叫成功后,对端即可收到 oncall 回调

oncall(peer)

  peer 对端Id

1.1.4 通话连接

通话建立后,对端可通过 onaddstream 收到发送端的音视频流数据

onaddstream(stream, type)

    stream  为标准 MediaStream 实例,
            使用HTML中的video/audio标签呈现
    type 可选为
        - 'localvideo', 本地视频
        - 'localshare', 本地共享
        - 'peervideo',  对端视频
        - 'peeraudio',  对端音频
        - 'peershare',  对端共享
        - 'peerdata',   对端非媒体数据

当发送端关闭发送音视频时,对端将收到 onremovestream 回调

onremovestream(stream, type)

   stream  为标准 MediaStream 实例
   type    - 'localvideo', 本地视频
           - 'localshare', 本地共享
           - 'peervideo',  对端视频
           - 'peeraudio',  对端音频
           - 'peershare',  对端共享
           - 'peerdata',   对端非媒体数据

会议中如有成员发送文本消息,则其他成员将通过 onconfchat 收到文本消息回调

{"cmd":"onconfchat", "val":{"from":%s, "text":%s}}
    from  是发言者URI
    text  是UTF8编码的文本,支持中文

1.1.5 挂断

如果结束通话,则调用挂断接口

jc.hangup();

此时对端将收到 onhangup 回调:

onhangup()

会议结束后,关闭连接调用下面的接口

jc.close();
   jc = null;

连接关闭后会收到 onclose 回调

onclose()

  会话已关,应该关闭连接并重置界面

1.2 会议过程控制

会议过程控制包括 设置会场成员的状态、设置成员昵称、CDN 推流和录制、分屏 等指令。

会场中的每个成员都有4个状态: 固定 ID,昵称,角色,状态。

其中:

参数说明
固定 ID 通常是账户名,不允许修改,保证唯一
昵称 支持中文,允许动态修改
状态 按位解释的整型
只有开启音视频并转发,其他成员才有可能接收到对应的音视频数据
- 0x1 转发视频
- 0x2 转发音频
- 0x4 视频开启
- 0x8 音频开启
角色 按位解释的整型
注意只有媒体发送者 ( 0x2 ),才允许设置音视频开启状态 ( 0x4 | 0x8 )
- 0x2 媒体发送者,允许开关本地音视频
- 0x4 演示者,其状态改变事件将被广播
- 0x8 会场拥有者,只存在唯一拥有者,由会场自动产生和迁移

发送控制指令调用下面的接口

jc.send(text, peer);
peer    可选的对端Id,http连接时被忽略
text    具体的指令协议,参考文档下方说明

常用控制指令如下所示

1.2.1 成员管理控制指令

指令内容指令格式
设置自身或其他成员角色 明文格式
setrole <mask> <role> [target]

JSON 格式
{“cmd”:”setrole”, “mask”:%d, “role”:%d, “target”:%s}
// 参数说明
mask 掩码,表示操作的bit位
role 角色,按位解释,设原状态为_ROLE_,则 _ROLE_ = (_ROLE_ & ~mask) | (mask & role);
target 可选的设置对象,缺省时为自身
设置自身或其他成员状态 明文格式
setstate <mask> <state> [target]

- 关闭 id0 (即成员URI或屏幕 URI)的音频的服务器转发
setstate 0x2 0x0 id0
- 关闭自身的音频发送
setstate 0x8 0x0
- 打开自身的音频发送
setstate 0x8 0x8

JSON 格式
{“cmd”:”setstate”, “mask”:%d, “state”:%d, “target”:%s}
// 参数说明
mask 掩码,表示操作的bit位
state 状态,按位解释,设原状态为 _STATE_,则 _STATE_ = (_STATE_ & ~mask) | (mask & state);
target 可选的设置对象,缺省时为自身
设置自身或其他成员昵称 明文格式
setnick <str> [target]

JSON 格式
{“cmd”:”setnick”, “nick”:<str>, “target”:%s}
// 参数说明
str utf8 编码的昵称
target 可选的设置对象,缺省时为自身
设置对其他成员的订阅信息 明文格式
vsubscribe <target> <state>

JSON 格式
{“cmd”:”vsubscribe”,”target”:”%s”,”state”:%d}
// 参数说明
target 订阅对象
state 0 - 不订阅,1 - 订阅视频
踢出成员 明文格式
kickuser [target]

JSON 格式
{cmd:”kickuser”, “target”:”%s”}
// 参数说明
target 目标对象uri

1.2.2 会议属性控制指令

指令内容指令格式参数说明
修改会场标题 明文格式
settitle <title>

JSON 格式
{“cmd”:”settitle”,”title”:%s}
title utf8 编码的标题
发送会议聊天文本 明文格式
sendtext <str> [target]

JSON 格式
{“cmd”:”sendtext”, “text”:”<str>”, “target”:%s}
str utf8 编码的文本
target 可选的目标对象,缺省时将广播
设置是否接收视频 明文格式
publish <bool>

JSON 格式
{”cmd”:”publish”, “video”:<bool>}
bool 布尔值,可选为 true,false, 0, 1
设置收到视频的布局 明文格式
setmergemode <mergeMode>

JSON 格式
{”cmd”:”setmergemode”, “mergeMode”:%d}
mergeMode 整型,布局模式
1.平铺模式,所有视频均分平铺
2.讲台模式,共享为大图,其他视频为小图
3.演讲模式,共享为大图,共享者视频为小图,其他不显示
4.自定义模式,由 setlayout 指令设置所有视频布局
5.智能模式, 可用 setmergemode_i,setmerge_i 调整相应的参数

1.2.3 分屏控制指令

1.2.3.1 实现自定义模式

实现自定义模式之前,需要确保收到视频的布局为自定义模式(@setmergemode 4)才能看到效果。

指令格式参数说明
JSON格式
{“cmd”:”setlayout”,”layout”:[[<id0>,<ps> x, y, w, h],
[“id1”,0x200, 0.1, 0.1, 1.0, 1.0], …]}
id0
成员 URI 或屏幕 URI

ps

视频尺寸级别 0x100, 0x200, 0x300, 0x400
x,y,w,h:单位[0.0,1.0]的坐标和尺寸
1.2.3.2 调整智能模式的布局

调整智能模式的布局之前,需要确保收到视频的布局为智能模式(@setmergemode 5)才能看到效果。

指令格式参数说明
明文格式
setmergemode_i <mode> <scsMode> [uri]
例如:设置智能模式为“自由模式”,带屏幕共享为“主持人模式”,大小屏放大用户默认为qqqq,则指令为:
@setmergemode_i 1 3 [username:qqqq@sample.cloud.justalk.com]
mode:智能分屏模式
1 freeLayout
2 rectLayout
3 bigSmallX2
4 bigSmallX3
......
11 bigSmallX10
12 bigSmallTop
13 bigSmallBotto

scsMode:智能分屏带屏幕共享模式
1 screen
2 platform
3 platformCover
4 speaker
uri: 大小屏默认放大的用户 uri
1.2.3.3 调整智能模式的详细参数
指令格式参数说明
明文格式
setmerge_i <width> <height> <mode> <scsMode> <fps> [uri]
例如:设置宽为1600,高为900,智能模式为“自由模式”,带屏幕共享为“主持人模式”,帧数为24帧,大小屏放大用户默认为qqqq则指令为:
@setmerge_i 1600 900 1 3 24 [username:qqqq@sample.cloud.justalk.com]
width
height
mode 智能分屏模式,参见上方setmergemode_i
scsMode 智能分屏带屏幕共享模式,参见上方setmergemode_iv
fps 帧数 1-30
uri 大小屏默认放大的用户 uri

关于智能分屏模式和调整智能分屏模式的详细参数的具体指令信息,请参考 智能分屏

1.2.4 录制

1.2.4.1 开始录制
指令格式参数说明
JSON格式
{“cmd”:”StartRecord”,”Video”:true,”Storage”:
{
“Protocol”:”qiniu”,
“AccessKey”:”Th2jW*********”,
“SecretKey”:”Nh***********”,
“BucketName”:”***”,
“FileKey”:”1234.mp4”,
“SplitFileSize”:1024
}
}
Video 是否视频会议,true为视频会议
Protocol 云存储协议,目前支持七牛
AccessKey、SecretKey 七牛云个人中心->密钥管理查看
BucketName 七牛云的存储名称
FileKey 上传到七牛的文件名
SplitFileSize 录制文件超过多少 KB 自动分割,不填,默认是500M
1.2.4.2 停止录制
指令格式参数说明
JSON格式
{“cmd”:”StopRecord”}
假设 base64编码后为 eyJjbWQiOiJTdG9wUmVjb3JkIn0=,会议号为12345678,则停止录制的命令如下:
sendtext eyJjbWQiOiJTdG9wUmVjb3JkIn0=[username:delivery_12345678@delivery.cloud.justalk.com]
录制器或推流器也是一个 confDelivery,录制器或推流器也是一个 confDelivery,录制器或推流器 uri 为:
[username:delivery_会议号@delivery.cloud.justalk.com]
录制默认分辨率为 360P,如需修改录制分辨率则要调用 SetVideoLevel 接口进行修改。

关于设置录制分辨率和录指文件大小的详细指令信息请参阅 修改录制或推流分辨率修改录制文件大小

1.2.5 CDN 推流

指令内容指令格式
设置推流地址 明文格式
setpushuri <uri>
设置推流地址,若以’/’结尾,则自动添加当前会议号。
必须在开始“视频混合”前设置
录制器或推流器也是一个 confDelivery,可以通过 sendtext 命令通知录制器/推流器来操作
录制器或推流器 uri 为:[username:delivery_会议号@delivery.cloud.justalk.com]
// 举例
假设会议号为12345678,则指令为:
@sendtext @delivery_12345678 setpushuri rtmp://video-center.alivecdn.com/juphoon11/juphoon?vhost=broadcast.justalkcloud.com [username:delivery_12345678@delivery.cloud.justalk.com]
设置推流参数 明文格式
setpushuriparm <parm>
最终完全的推流的 URL 等于:推流地址 + 空格 + 推流参数
必须在开始“视频混合”前设置
// 举例
假设会议号为12345678,则指令为:
@sendtext @delivery_12345678 setpushuriparm socks=192.12.1.2[username:delivery_12345678@delivery.cloud.justalk.com]
开始推流 明文格式
startpush
开始向 CDN 推流,相应的网页观看地址由 CDN 服务提供商决定
// 举例
假设会议号为12345678,则指令为:
@sendtext @delivery_12345678 startpush[username:delivery_12345678@delivery.cloud.justalk.com]
停止推流 明文格式
stoppush
// 举例
假设会议号为12345678,则指令为:
@sendtext @delivery_12345678 stoppush[username:delivery_12345678@delivery.cloud.justalk.com]

关于设置推流分辨率的详细指令信息请参阅 修改录制或推流分辨率

1.2.6 播放

指令内容指令格式
开始播放 明文格式
play [playFile] JSON 格式
{“cmd”:”play”, “playFile”:%s}
将自动添加发送角色,和相应的音频发送状态.
playFile 必须为 ConfDelivery 所在机器上的文件路径.默认 playFile.wav
停止播放 明文格式
stopplay

JSON 格式
{“cmd”:”stopPlay”}

1.3 会议事件订阅

会议过程中,会议状态的改变则通过发送订阅事件指令 subscribe 进行订阅。

明文格式
subscribe <hex>

JSON字符串格式
{"cmd":"subscribe", "mask":<hex>}

  hex 事件位集合
    0x1 自身状态改变,   对应 onselfstate
    0x2 其他成员状态改变,对应 onactorstate/onactorleave
    0x4 会场属性改变,   对应 onconfstate
    0x8 聊天信息,       对应 onconfchat

订阅前可以设置订阅的对象和属性。

1.3.1 设置订阅

vsubscribe <target> <state>
            //target 订阅对象
            //state  布尔型, 0 - 表示不订阅, 1 - 订阅视频

例如:

订阅会场成员 actor

假设 actor 的 uri 为 [username:actor@sample.cloud.justalk.com],则指令为:

vsubscribe [username:actor@sample.cloud.justalk.com] 1

取消订阅会场成员 actor

假设 actor 的 uri 为 [username:actor@sample.cloud.justalk.com],则指令为:

vsubscribe [username:actor@sample.cloud.justalk.com] 0

订阅成功之后即可对订阅成员的状态改变进行回调:

其他成员状态改变回调

{"cmd":"onactorstate",
 "val":{"id0":{"nick":%s,"role":%d, "state":%d, "subscribe":%d},...}}

    id0  是成员URI,全局唯一,
    nick 是UTF8编码的昵称,支持中文
    role 是角色位整型:
          0x2 - 发送者
    state 是状态位整型:
            0x1 - 转发视频
            0x2 - 转发音频
            0x4 - 打开视频
            0x8 - 打开音频
    subscribe 是订阅信息
            1 - 订阅视频

自身状态改变回调

{"cmd":"onselfstate", "val":{"nick":%s,"role":%d, "state":%d}}

成员离开回调

{"cmd":"onactorleave", "val":["id0","id1",...]}

会场属性改变回调

{"cmd":"onconfstate", "val":{"screen":%s, "title":%s, "sharer":%s}}

    screen 是屏幕URI
    title  是UTF8编码的标题,支持中文
    sharer 是屏幕共享者URI

协商状态改变回调

只有协商状态为 ‘stable’,才允许更新本地媒体(调用 update/share)

onsignalingstatechange(state)

  state 可选为
      - 'stable'  没有进行协商的稳定状态
      - 'have-local-offer'     协商进行中
      - 'have-remote-offer'    协商进行中
      - 'have-remote-pranswer' 协商进行中
      - 'have-local-pranswer'  协商进行中

连接状态改变回调

只要连接状态为 ‘failed’,则将不可恢复的通信中断

oniceconnectionstatechange(state)

  state 可选为
      - 'new' 初始状态
      - 'checking' 探测进行状态
      - 'connected' 成功连接
      - 'completed' 探测结束
      - 'disconnected' 断开连接
      - 'failed' 连接过程已失败,不可恢复
      - 'closed' 关闭连接

1.3.2 辅助功能

屏幕共享

实现屏幕共享功能需要以下操作:

Google Chrome 必须安装 [额外扩展][ScreenCapturing],请参考 Chrome 屏幕采集扩展[ScreenCapturing]

getsourceid 参数必须指定有效的https网址,缺省时需要公网访问能力。

1.3.3 设备控制

1.3.3.1 动态开关本地媒体
jc.update(constraints)

   constraints  标准 MediaStreamConstraints object,
                按如下格式
                    {
                        "audio":true,
                        "video": {
                            "width": {"max": 640},
                            "height":{"max": 480}
                        }
                    }
                    max 可以限制视频最大尺寸, min 限制最小尺寸
1.3.3.2 动态切换屏幕共享

切换屏幕共享,将自动进行重新协商

jc.share(toggle)

   toggle  是否共享窗口或屏幕

发送DTMF

jc.dtmf(tones,duration,inter_tone_gap)

   tones     DMTF的音符,0-9,A-D或a-d,#,*. 忽略无法识别的字符

   duration  可选的每个音符的持续毫秒,不能超过6000或小于70. 默认100ms

   inter_tone_gap   可选的音符间隔,至少为50ms,但应尽可能短. 默认70ms

2. 参考文件

2.1 智能模式布局

setmergemode_i 调整智能模式的布局

setmergemode_i <mode> <scsMode> [uri]

         mode: 智能分屏模式 1=freeLayout,2=rectLayout,3=bigSmallX2,4=bigSmallX3....,
                               11=bigSmallX10,12=bigSmallTop,13=bigSmallBottom

         scsMode: 智能分屏带屏幕共享模式 1=screen,2=platform,3=platformCover,4=speaker

         uri: 大小屏默认放大的用户uri
确保合并模式为智能模式(@setmergemode 5), 否则调用完之后要将模式设置为智能模式后才能看到效果;

没有收到屏幕共享时,模式为mode,当收到屏幕共享时模式会切换成scsMode;

当模式为mode并且mode>=3且<=13时,uri为大小屏设置的默认放大用户;

uri若为空或无效用户,则默认第一个用户为大小屏用户。

智能模式的布局调整样例如下:

2.1.1 自由布局

在没有屏幕共享时

@setmergemode_i 1 4 [username:actor@sample.cloud.justalk.com]

2.1.2 矩形布局

在没有屏幕共享时

@setmergemode_i 2 4 [username:actor@sample.cloud.justalk.com]

2.1.3 大屏X2

在没有屏幕共享时

@setmergemode_i 3 4 [username:actor@sample.cloud.justalk.com]

actor用户显示2倍

2.1.4 大屏X3

在没有屏幕共享时

@setmergemode_i 4 4 [username:actor@sample.cloud.justalk.com]

actor用户显示3倍

2.1.5 小屏底部

在没有屏幕共享时

@setmergemode_i 12 4 [username:actor@sample.cloud.justalk.com]

actor用户显示在顶部,其它用户显示小屏在底部

2.1.6 小屏顶部

在没有屏幕共享时

@setmergemode_i 13 4 [username:actor@sample.cloud.justalk.com]

actor用户显示在底部,其它用户显示小屏在顶部

2.1.7 纯屏幕共享

在收到屏幕共享时

@setmergemode_i 1 1 [username:actor@sample.cloud.justalk.com]

2.1.8 屏幕共享小屏底部

在没有屏幕共享时

@setmergemode_i 1 2 [username:actor@sample.cloud.justalk.com]

屏幕共享显示在顶部,其它用户显示小屏在底部

2.1.9 讲台模式

在没有屏幕共享时

@setmergemode_i 1 3 [username:actor@sample.cloud.justalk.com]

屏幕共享显示在顶部,其它用户显示小屏在底部并且遮盖大屏

2.1.10 主持人模式

在收到屏幕共享时

@setmergemode_i 1 4 [username:actor@sample.cloud.justalk.com]

2.2 智能模式分辨率

调整智能模式的布局和分辨率

setmerge_i <width> <height> <mode> <scsMode> <fps> [uri]

       width:
       height:
       mode:智能分屏模式 1=freeLayout,2=rectLayout,3=bigSmallX2,4=bigSmallX3....,
                                 11=bigSmallX10,12=bigSmallTop,13=bigSmallBottom
       scsMode:智能分屏带屏幕共享模式 1=screen,2=platform,3=platformCover,4=speaker
       fps:帧数 1-24
       uri: 大小屏默认放大的用户uri

将合并模式设置为智能模式,宽和高可以设置任意的,目前实例中暂设为 90P,180P,360P,720P,1080P。

没有收到屏幕共享时,模式为 mode,当收到屏幕共享时模式会切换成 scsMode。

当模式为 mode 并且 mode>=3 且 <=13 时,uri 为大小屏设置的默认放大用户。

uri 若为空或无效用户,则默认第一个用户为大小屏用户。

分辨率设置样例如下:

样例1-1080P

@setmerge_i 1920 1080 1 4 24 [username:actor@sample.cloud.justalk.com]

样例2-720P

@setmerge_i 1280 720 1 4 24 [username:actor@sample.cloud.justalk.com]

样例3-360P

@setmerge_i 640 360 1 4 24 [username:actor@sample.cloud.justalk.com]

样例4-180P

@setmerge_i 320 180 1 4 24 [username:actor@sample.cloud.justalk.com]

样例5-90P

@setmerge_i 160 90 1 4 24 [username:actor@sample.cloud.justalk.com]

2.3 修改录制或推流分辨率

修改录制或推流分辨率

json字符串需要base64加密
{"cmd":"SetVideoLevel","MtcConfVideoLevelKey":%x}

//MtcConfVideoLevelKey 视频尺寸,由小到到可选值:
                                 0x100即256对应360P
                                 0x200即512对应480P
                                 0x300即768对应720P
                                 0x400即1024对应1080P

录制器或推流器也是一个confDelivery, 可以通过sendtext命令通知录制器/推流器来操作

录制器或推流器uri为[username:delivery_会议号@delivery.cloud.justalk.com]

修改录制或推流分辨率为360P

{"cmd":"SetVideoLevel","MtcConfVideoLevelKey":0x100}

base64编码后为
eyJjbWQiOiJTZXRWaWRlb0xldmVsIiwiTXRjQ29uZlZpZGVvTGV2ZWxLZXkiOjB4MTAwfQ==

假设会议号为12345678,则指令为
sendtext eyJjbWQiOiJTZXRWaWRlb0xldmVsIiwiTXRjQ29uZlZpZGVvTGV2ZWxLZXkiOjB4MTAwfQ== [username:delivery_12345678@delivery.cloud.justalk.com]

修改录制或推流分辨率为480P

{"cmd":"SetVideoLevel","MtcConfVideoLevelKey":512}

base64编码后为
eyJjbWQiOiJTZXRWaWRlb0xldmVsIiwiTXRjQ29uZlZpZGVvTGV2ZWxLZXkiOjUxMn0=

假设会议号为12345678,则指令为
sendtext eyJjbWQiOiJTZXRWaWRlb0xldmVsIiwiTXRjQ29uZlZpZGVvTGV2ZWxLZXkiOjUxMn0= [username:delivery_12345678@delivery.cloud.justalk.com]

修改录制分辨率为720P

{"cmd":"SetVideoLevel","MtcConfVideoLevelKey":0x300}

base64编码后为
eyJjbWQiOiJTZXRWaWRlb0xldmVsIiwiTXRjQ29uZlZpZGVvTGV2ZWxLZXkiOjB4MzAwfQ==

假设会议号为12345678,则指令为
sendtext eyJjbWQiOiJTZXRWaWRlb0xldmVsIiwiTXRjQ29uZlZpZGVvTGV2ZWxLZXkiOjB4MzAwfQ== [username:delivery_12345678@delivery.cloud.justalk.com]

修改录制分辨率为1080P

{"cmd":"SetVideoLevel","MtcConfVideoLevelKey":1024}

base64编码后为
eyJjbWQiOiJTZXRWaWRlb0xldmVsIiwiTXRjQ29uZlZpZGVvTGV2ZWxLZXkiOjEwMjR9

假设会议号为12345678,则指令
sendtext eyJjbWQiOiJTZXRWaWRlb0xldmVsIiwiTXRjQ29uZlZpZGVvTGV2ZWxLZXkiOjEwMjR9 [username:delivery_12345678@delivery.cloud.justalk.com]

2.4 修改录制文件大小

修改录制文件大小为100KB

{"cmd":"StartRecord","Video":true,"Storage":{"Protocol":"qiniu","AccessKey":"Th2jW_jP5VSk-wfdVMy5it1oK4iHa8pv8vBZMhbd","SecretKey":"Nh-_pgXrx9weiq8bkAtJPkrBlV3YP13U0Fx0fT-c","BucketName":"ajianzheng","FileKey":"12345678.mp4","SplitFileSize":100}}

base64编码后为
eyJjbWQiOiJTdGFydFJlY29yZCIsIlZpZGVvIjp0cnVlLCJTdG9yYWdlIjp7IlByb3RvY29sIjoicWluaXUiLCJBY2Nlc3NLZXkiOiJUaDJqV19qUDVWU2std2ZkVk15NWl0MW9LNGlIYThwdjh2QlpNaGJkIiwiU2VjcmV0S2V5IjoiTmgtX3BnWHJ4OXdlaXE4YmtBdEpQa3JCbFYzWVAxM1UwRngwZlQtYyIsIkJ1Y2tldE5hbWUiOiJhamlhbnpoZW5nIiwiRmlsZUtleSI6IjEyMzQ1Njc4Lm1wNCIsIlNwbGl0RmlsZVNpemUiOjEwMH19

假设会议号为12345678,则指令为
sendtext eyJjbWQiOiJTdGFydFJlY29yZCIsIlZpZGVvIjp0cnVlLCJTdG9yYWdlIjp7IlByb3RvY29sIjoicWluaXUiLCJBY2Nlc3NLZXkiOiJUaDJqV19qUDVWU2std2ZkVk15NWl0MW9LNGlIYThwdjh2QlpNaGJkIiwiU2VjcmV0S2V5IjoiTmgtX3BnWHJ4OXdlaXE4YmtBdEpQa3JCbFYzWVAxM1UwRngwZlQtYyIsIkJ1Y2tldE5hbWUiOiJhamlhbnpoZW5nIiwiRmlsZUtleSI6IjEyMzQ1Njc4Lm1wNCIsIlNwbGl0RmlsZVNpemUiOjEwMH19 [username:delivery_12345678@delivery.cloud.justalk.com]

修改录制文件大小为1MB

{"cmd":"StartRecord","Video":true,"Storage":{"Protocol":"qiniu","AccessKey":"Th2jW_jP5VSk-wfdVMy5it1oK4iHa8pv8vBZMhbd","SecretKey":"Nh-_pgXrx9weiq8bkAtJPkrBlV3YP13U0Fx0fT-c","BucketName":"ajianzheng","FileKey":"12345678.mp4","SplitFileSize":1024}}

base64编码为
eyJjbWQiOiJTdGFydFJlY29yZCIsIlZpZGVvIjp0cnVlLCJTdG9yYWdlIjp7IlByb3RvY29sIjoicWluaXUiLCJBY2Nlc3NLZXkiOiJUaDJqV19qUDVWU2std2ZkVk15NWl0MW9LNGlIYThwdjh2QlpNaGJkIiwiU2VjcmV0S2V5IjoiTmgtX3BnWHJ4OXdlaXE4YmtBdEpQa3JCbFYzWVAxM1UwRngwZlQtYyIsIkJ1Y2tldE5hbWUiOiJhamlhbnpoZW5nIiwiRmlsZUtleSI6IjEyMzQ1Njc4Lm1wNCIsIlNwbGl0RmlsZVNpemUiOjEwMjR9fQ==

假设会议号为12345678,则指令为
sendtext eyJjbWQiOiJTdGFydFJlY29yZCIsIlZpZGVvIjp0cnVlLCJTdG9yYWdlIjp7IlByb3RvY29sIjoicWluaXUiLCJBY2Nlc3NLZXkiOiJUaDJqV19qUDVWU2std2ZkVk15NWl0MW9LNGlIYThwdjh2QlpNaGJkIiwiU2VjcmV0S2V5IjoiTmgtX3BnWHJ4OXdlaXE4YmtBdEpQa3JCbFYzWVAxM1UwRngwZlQtYyIsIkJ1Y2tldE5hbWUiOiJhamlhbnpoZW5nIiwiRmlsZUtleSI6IjEyMzQ1Njc4Lm1wNCIsIlNwbGl0RmlsZVNpemUiOjEwMjR9fQ== [username:delivery_12345678@delivery.cloud.justalk.com]

修改录制文件大小为1GB

{"cmd":"StartRecord","Video":true,"Storage":{"Protocol":"qiniu","AccessKey":"Th2jW_jP5VSk-wfdVMy5it1oK4iHa8pv8vBZMhbd","SecretKey":"Nh-_pgXrx9weiq8bkAtJPkrBlV3YP13U0Fx0fT-c","BucketName":"ajianzheng","FileKey":"12345678.mp4","SplitFileSize":1048576}}

base64编码后为
eyJjbWQiOiJTdGFydFJlY29yZCIsIlZpZGVvIjp0cnVlLCJTdG9yYWdlIjp7IlByb3RvY29sIjoicWluaXUiLCJBY2Nlc3NLZXkiOiJUaDJqV19qUDVWU2std2ZkVk15NWl0MW9LNGlIYThwdjh2QlpNaGJkIiwiU2VjcmV0S2V5IjoiTmgtX3BnWHJ4OXdlaXE4YmtBdEpQa3JCbFYzWVAxM1UwRngwZlQtYyIsIkJ1Y2tldE5hbWUiOiJhamlhbnpoZW5nIiwiRmlsZUtleSI6IjEyMzQ1Njc4Lm1wNCIsIlNwbGl0RmlsZVNpemUiOjEwNDg1NzZ9fQ==

假设会议号为12345678,则指令为
sendtext eyJjbWQiOiJTdGFydFJlY29yZCIsIlZpZGVvIjp0cnVlLCJTdG9yYWdlIjp7IlByb3RvY29sIjoicWluaXUiLCJBY2Nlc3NLZXkiOiJUaDJqV19qUDVWU2std2ZkVk15NWl0MW9LNGlIYThwdjh2QlpNaGJkIiwiU2VjcmV0S2V5IjoiTmgtX3BnWHJ4OXdlaXE4YmtBdEpQa3JCbFYzWVAxM1UwRngwZlQtYyIsIkJ1Y2tldE5hbWUiOiJhamlhbnpoZW5nIiwiRmlsZUtleSI6IjEyMzQ1Njc4Lm1wNCIsIlNwbGl0RmlsZVNpemUiOjEwNDg1NzZ9fQ== [username:delivery_12345678@delivery.cloud.justalk.com]

修改录制文件大小为6GB

{"cmd":"StartRecord","Video":true,"Storage":{"Protocol":"qiniu","AccessKey":"Th2jW_jP5VSk-wfdVMy5it1oK4iHa8pv8vBZMhbd","SecretKey":"Nh-_pgXrx9weiq8bkAtJPkrBlV3YP13U0Fx0fT-c","BucketName":"ajianzheng","FileKey":"12345678.mp4","SplitFileSize": 6291456}}

base64编码后为
eyJjbWQiOiJTdGFydFJlY29yZCIsIlZpZGVvIjp0cnVlLCJTdG9yYWdlIjp7IlByb3RvY29sIjoicWluaXUiLCJBY2Nlc3NLZXkiOiJUaDJqV19qUDVWU2std2ZkVk15NWl0MW9LNGlIYThwdjh2QlpNaGJkIiwiU2VjcmV0S2V5IjoiTmgtX3BnWHJ4OXdlaXE4YmtBdEpQa3JCbFYzWVAxM1UwRngwZlQtYyIsIkJ1Y2tldE5hbWUiOiJhamlhbnpoZW5nIiwiRmlsZUtleSI6IjEyMzQ1Njc4Lm1wNCIsIlNwbGl0RmlsZVNpemUiOiA2MjkxNDU2fX0=

假设会议号为12345678,则指令为
sendtext eyJjbWQiOiJTdGFydFJlY29yZCIsIlZpZGVvIjp0cnVlLCJTdG9yYWdlIjp7IlByb3RvY29sIjoicWluaXUiLCJBY2Nlc3NLZXkiOiJUaDJqV19qUDVWU2std2ZkVk15NWl0MW9LNGlIYThwdjh2QlpNaGJkIiwiU2VjcmV0S2V5IjoiTmgtX3BnWHJ4OXdlaXE4YmtBdEpQa3JCbFYzWVAxM1UwRngwZlQtYyIsIkJ1Y2tldE5hbWUiOiJhamlhbnpoZW5nIiwiRmlsZUtleSI6IjEyMzQ1Njc4Lm1wNCIsIlNwbGl0RmlsZVNpemUiOiA2MjkxNDU2fX0= [username:delivery_12345678@delivery.cloud.justalk.com]