云课堂API相关

日期: 2018-11-29

创盛视联数码科技(北京)有限公司

小班课管理API

管理API均需要THQS加密请求

1. 开始直播

描述

开始直播接口

地址

https://ccapi.csslcloud.net/api/room/live/start

方法

POST/GET

请求参数

参数名称 参数类型 参数说明 备注
userid 字符串 用户ID 可选
roomid 字符串 直播间ID 必须

返回数据格式

 {
      result: 'OK', # 失败: FAIL,成功:OK
      liveId: '123' # 直播场次ID  
  }

2.结束直播

描述

结束直播接口

地址

https://ccapi.csslcloud.net/api/room/live/stop

方法

POST/GET

请求参数

参数名称 参数类型 参数说明 备注
userid 字符串 用户ID 可选
roomid 字符串 直播间ID 必须

返回数据格式

 {
      result: 'OK', # 失败: FAIL,成功:OK
      data:{
          "start_time": "2018-04-11 10:58:59 ", # 直播开始时间
          "end_time": "2018-04-11 11:58:59"     # 直播结束时间
      }

  }

3. 创建直播间

描述

创建直播间

地址

https://ccapi.csslcloud.net/api/room/create

方法

POST/GET

请求参数

参数名称 参数类型 参数说明 备注
userid 字符串 用户账号ID 必须
name 字符串 直播间名称 长度限制 <= 100 必须
room_type 整型 房间类型 1:视频群聊 2:小班课 必须
publisherpass 字符串 老师端密码 长度限制 <= 64 必须
assist_pass 字符串 助教端密码 长度限制 <= 64 可选,默认为用户账号ID
audience_authtype 整型 旁听认证方式 0:接口验证 1:密码 2:免密码 3:白名单 可选, 默认为1
audience_pass 字符串 旁听密码 长度限制 <= 256 可选, 默认为用户ID,认证方式为接口认证时,此处填写接口认证地址
talker_authtype 整型 互动学员认证方式 0:接口验证 1: 密码 2:免密码 3:白名单 可选 默认为为1
talker_pass 字符串 互动学员认证密码 长度限制 <= 256 可选, 默认为用户账号ID,认证方式为接口认证时,此处填写接口认证地址
inspector_authtype 整型 隐身者认证方式 0:接口验证 1: 密码 2:免密码 可选 默认为为1
inspector_pass 字符串 隐身者认证密码 长度限制 <= 256 可选, 默认为用户账号ID, 认证方式为接口认证时,此处填写接口认证地址
white_list 字符串 如果互动者开启了白名单,则此处填写json化的用户名/密码,如 "{"user": "123"}" 可选
desc 字符串 直播间简介 长度限制 <= 10000 可选
templatetype 整型 模版类型 1:讲课模式 2:主视角模式 4:平铺模式 8:1v1模式 16:双师模式 可选,默认为8
mergetype 整型 合流模式 1:主视角模式 2:平铺模式 3:覆盖模式 可选, 默认为2
max_users 整型 最大支持人数(进入房间人数), 不能超过账户允许上限 可选, 默认为账户允许上限
max_streams 整型 互动人数上限(实际连麦人数), 不能超过账户允许上限 可选, 默认为房间max_users上限
video_mode 整型 连麦音视频模式 1:音视频 2.仅音频 可选, 默认为1
talker_bitrate 整型 学生端码率 不超2000 可选, 默认为200
publisher_bitrate 整型 老师端码率 不超2000 可选, 默认为200
classtype 整型 连麦模式 1:点名 2:自由 3:自动 可选, 默认为1
presenter_out 布尔型 非直播状态下踢出老师 可选,默认为false
light_mark 整型 跑马灯 0: 关闭 1: 开启 可选, 默认为0
show_exit 整型 页面是否 显示退出按钮, 0 隐藏 1 可选 默认为1
ppt_support 布尔型 是否支持ppt 可选
ppt_display 布尔型 ppt显示样式 0: 适应窗口 1: 适应宽度,默认为0 可选
screen_lock 整型 桌面锁屏 0:未开通 1:开通 2:开启 3:关闭,默认为0 可选
desktop_audio 整型 桌面分享声音 0: 关闭 1: 开启, 默认为0 可选
manual_record 整型 手动录制 0: 关闭 1: 开启, 默认为0 可选
record_bitrate 整型 回放清晰度 速度优先:500 画质优先:0,默认速度优先 可选
warm_open 字符串 暖场视频 '0': 关闭, '1': 开启,默认关闭 可选
helper_switch 整型 直播助手开关 0: 关闭 1:开启,默认关闭 可选
record_switch 整型 录屏助手开关 0: 关闭 1:开启,默认关闭 可选
assist_switch 整型 助教开关 0: 关闭 1:开启,默认关闭 可选

返回数据格式

  {
      result: 'OK', # 失败: FAIL,成功:OK
      data:{
          "roomid": "123" # 新创建房间的id
      }
  }

4. 更新直播间

描述

更新直播间

地址

https://ccapi.csslcloud.net/api/room/update

方法

POST/GET

请求参数

参数名称 参数类型 参数说明 备注
userid 字符串 用户账号ID 必须
live_roomid 字符串 房间ID 必须
name 字符串 直播间名称 可选
publisherpass 字符串 老师端密码 长度限制 <= 64 可选
assist_pass 字符串 助教端密码 长度限制 <= 64 可选
audience_authtype 整型 旁听认证方式 0:接口验证 1:密码 2:免密码 3:白名单 可选
audience_pass 字符串 旁听密码 长度限制 <= 256 可选
talker_authtype 整型 互动学员认证方式 0:接口验证 1: 密码 2:免密码 3:白名单 可选
talker_pass 字符串 互动学员认证密码, 长度限制 <= 256 可选
inspector_authtype 整型 隐身者认证方式 0:接口验证 1: 密码 2:免密码 可选
inspector_pass 字符串 隐身者认证密码 长度限制 <= 256 可选
white_list 字符串 如果互动者开启了白名单,则此处填写json化的用户名/密码,如 "{"user": "123"}" 可选
desc 字符串 直播间简介 长度限制 <= 10000 可选
templatetype 整型 模版类型 1:讲课模式 2:主视角模式 4:平铺模式 8:1v1模式 16:双师模式 可选
mergetype 整型 合流模式 1:主视角模式 2:平铺模式 3:覆盖模式 可选
max_users 整型 最大支持人数, 不能超过开通人数上限 可选
max_streams 整型 互动人数上限, 不能超过开通人数上限 可选
video_mode 整型 连麦音视频模式 1:音视频 2.仅音频 可选
publisher_bitrate 整型 老师端码率 不超2000 可选
talker_bitrate 整型 学生端码率 不超2000 可选
audio_bitrate 整型 音频码率 默认为50 可选
classtype 整型 连麦模式 1:点名 2:自由 3:自动 可选
is_follow 字符串 是否跟随 主视角模式下 否: 空字符,是: streamid 可选
allow_chat 布尔型 是否允许发言 房间级配置 可选
allow_audio 布尔型 是否允许使用麦克风 房间级配置 可选
allow_speak 布尔型 是否允许上麦 房间级配置 可选
presenter_out 布尔型 非直播状态下踢出老师 可选
ppt_support 布尔型 是否支持ppt 可选
ppt_display 布尔型 ppt显示样式 0: 适应窗口 1: 适应宽度,默认为0 可选
light_mark 整型 跑马灯 0: 关闭 1: 开启 可选
show_exit 整型 整型 页面是否 显示退出按钮, 0: 隐藏 1:显示 可选
desktop_audio 整型 桌面分享声音 0: 关闭 1: 开启, 默认为0 可选
manual_record 整型 手动录制 0: 关闭 1: 开启, 默认为0 可选
record_bitrate 整型 回放清晰度 速度优先:500 画质优先:0,默认速度优先 可选
warm_open 字符串 暖场视频 '0': 关闭, '1': 开启,默认关闭 可选
helper_switch 整型 直播助手开关 0: 关闭 1:开启,默认关闭 可选
record_switch 整型 录屏助手开关 0: 关闭 1:开启,默认关闭 可选
assist_switch 整型 助教开关 0: 关闭 1:开启,默认关闭 可选

返回数据格式

  {
      result: 'OK', # 失败: FAIL,成功:OK
  }

5. 关闭直播间

描述

关闭直播间 关闭后的直播间,将无法使用

地址

https://ccapi.csslcloud.net/api/room/close

方法

POST/GET

请求参数

参数名称 参数类型 参数说明 备注
userid 字符串 用户账号ID 必须
roomid 字符串 房间ID 必须

返回数据格式

  {
      result: 'OK', # 失败: FAIL,成功:OK
  }

6. 获取账号下房间列表

描述

获取账号下房间列表 可以指定name status roomid为过滤参数

地址

https://ccapi.csslcloud.net/api/room/list

方法

POST/GET

请求参数

参数名称 参数类型 参数说明 备注
userid 字符串 用户账号ID 必须
name 字符串 房间名称 可选
status 整型 房间房间状态 10:正常 20:关闭 可选
page 整型 获取指定页 可选 默认为1
lines 整型 分页每页数据量 可选 默认为50
roomid 字符串 房间ID 可选

返回数据格式

  {
      result: 'OK', # 失败: FAIL,成功:OK
      rooms:[
          {
             "live_roomid": "123", # 房间ID
             "name": "123",      # 房间名称
             "desc": "123"       # 房间描述
             "status": 10           # 房间状态 10 开启 20 关闭
             "classtype": 1      # 连麦模式 1:点名模式;2:自由模式 3:自动模式
             "room_type": 1      # 房间类型 1:视频群聊 2:小班课
             "templatetype": 1   # 模版类型 1:讲课模式 2:主视角模式 4:平铺模式 8:1V1模式 16:双师模式
             "mergetype": 1      # 合流模式 1:主视角模式 2:平铺模式, 3:覆盖模式
             "recordstudent": 1  #
             "publisherpass": "123"  # 老师登录密码
             "talker_authtype": 1    # 互动者认证方式 0:url验证 1:密码验证 2:免密码
             "talker_pass": "123"    # 互动者登录密码
             "audience_authtype": 1  # 旁听认证方式   0:url验证 1:密码验证 2:免密码
             "audience_pass": "123"  # 旁听登录密码
             "max_users": 10         # 最大支持人数
             "max_streams": 10       # 最大连麦人数
             "video_mode": 1         # 连麦音视频模式 1:音/视频都开 2:仅音频
             "live_status": 1        # 直播状态 1:直播中 0:未直播
             "white_list": ""         # 互动者白名单 如果开启白名单
             "light_mark": 1         # 跑马灯 0:关闭 1:开启
             "show_exit": 0          # 页面是否 显示退出按钮  0:隐藏 1:显示
             "video_zoom": "123"     # 视频点击放大 流ID
             "screen_lock": 0        # 锁屏相关  0:开通  1:未开通  2:开启 3:关闭
             "presenter_url": "http://a.com"  # 老师登录链接URL
             "talker_url": "http://a.com"     # 互动者登录链接URL
             "audience_url": "http://a.com"   # 旁观者登录链接URL
           }],  # 房间信息
      total: 5,  # 总页数
      current: 1 # 当前页数
  }

7. 获取房间信息

描述

获取房间信息

地址

https://ccapi.csslcloud.net/api/room/room_detail

方法

POST/GET

请求参数

参数名称 参数类型 参数说明 备注
userid 字符串 用户账号ID 必须
roomid 字符串 房间ID 必须

返回数据格式

{
  result: 'OK', # 失败: FAIL,成功:OK
  "data": {
    "allow_audio": true, # 是否允许使用麦克风 房间级配置
    "allow_chat": true,  # 是否允许发言 房间级配置
    "allow_speak": true, # 是否允许上麦 房间级配置
    "atlas_roomid": "5b0ebc15df4b74399dae0d26",
    "audience_authtype": 1, # 旁听认证方式 0:接口验证 1:密码 2:免密码 3:白名单
    "audience_pass": "123",  # 旁听密码
    "audience_url": "https://view.csslcloud.net/api/view/index?roomid=45CC92144D46FEAA9C33DC5901307461&userid=83F203DAC2468694", # 旁听登录链接url
    "audio_bitrate": 50, # 音频码率
    "calltimeout": 10,
    "classtype": 2, # 连麦模式 1:点名 2:自由 3:自动
    "clear_cache": 0,
    "closetime": null, # 房间关闭时间
    "createtime": "2018-05-30", # 房间创建时间
    "desc": "<p>1231321</p>", # 房间描述
    "id": 22692,
    "is_follow": "", # 是否跟随 主视角模式下 是:streamid 否:空字符
    "light_mark": 0, # 跑马灯 0: 关闭 1: 开启
    "live_roomid": "45CC92144D46FEAA9C33DC5901307461", # 房间ID
    "live_status": 0, # 直播状态 1:直播中 0:未直播
    "max_streams": 7, # 最大连麦人数
    "max_users": 1000, # 最大支持人数
    "mergetype": 2, # 合流模式 1:主视角模式 2:平铺模式 3:覆盖模式
    "name": "1232", # 直播间名称
    "platform": 1, # 平台 1:web 2:android 3:ios
    "ppt_support": false, # 是否支持ppt
    "presenter_out": false, # 非直播状态下踢出老师
    "presenter_url": "https://class.csslcloud.net/index/presenter/?roomid=45CC92144D46FEAA9C33DC5901307461&userid=83F203DAC2468694", # 老师登录链接URL
    "publisher_bitrate": 200, # 老师端码率
    "publisherpass": "123", #  老师端密码
    "recordstudent": 1,
    "room_type": 2, # 房间类型 1:视频群聊 2:小班课
    "roomid": "45CC92144D46FEAA9C33DC5901307461", # 房间ID
    "screen_lock": 0, # 锁屏相关  0:开通  1:未开通  2:开启 3:关闭
    "show_exit": 1, # 页面是否 显示退出按钮  0:隐藏 1:显示
    "status": 10, #  房间状态 10 开启 20 关闭
    "talker_authtype": 1, # 互动者认证方式 0:url验证 1:密码验证 2:免密码
    "talker_bitrate": 200, # 互动者码率
    "talker_pass": "123", #  互动者登录密码
    "talker_url": "https://class.csslcloud.net/index/talker/?roomid=45CC92144D46FEAA9C33DC5901307461&userid=83F203DAC2468694", # 互动者登录链接URL
    "templatetype": 1, # 模版类型 1:讲课模式 2:主视角模式 4:平铺模式 8:1v1模式 16:双师模式
    "userid": "83F203DAC2468694", # 用户账号ID
    "video_mode": 1, # 连麦音视频模式 1:音视频 2.仅音频
    "video_zoom": "", # 视频点击放大 流ID
    "white_list": null # 白名单
  }
}

8. 获取房间登录链接

描述

获取房间登录链接

地址

https://ccapi.csslcloud.net/api/v1/room/link

方法

POST/GET

请求参数

参数名称 参数类型 参数说明 备注
userid 字符串 用户账号ID 必须
roomid 字符串 房间ID 必须

返回数据格式

  {
      result: 'OK', # 失败: FAIL,成功:OK
      data:{
         "presenter_url": "http://a.com"  # 老师登录链接URL
          "talker_url": "http://a.com"     # 互动者登录链接URL
          "audience_url": "http://a.com"   # 旁观者登录链接URL
          "inspector_url": "https://a.com" # 隐身者登录链接URL
          "assist_url": "https://a.com"    # 助教登录链接URL
      }
  }

9. 切换合流布局模式

描述

获取房间登录链接

地址

https://ccapi.csslcloud.net/api/room/set_single

方法

POST/GET

请求参数

参数名称 参数类型 参数说明 备注
userid 字符串 用户账号ID 必须
roomid 字符串 房间ID 必须
status 整型 状态 1:主视角 2:平铺 必须

返回数据格式

  {
      result: 'OK', # 失败: FAIL,成功:OK
  }

10. 获取sessionid

描述

获取登录sessionid

地址

https://ccapi.csslcloud.net/api/room/create/sessionid

方法

POST/GET

请求参数

参数名称 参数类型 参数说明 备注
name 字符串 登录名 必须
userid 字符串 用户账号ID 必须
roomid 字符串 房间ID 必须
password 字符串 登录密码 可选
role 字符串 角色 '0':老师 '1':互动 '2':旁听 '3': 隐身者 '4': 助教 必须
client 字符串 客户端类型 0:web端 1:移动端 必须

返回数据格式

  {
      result: 'OK', # 失败: FAIL,成功:OK
      data:{
          "sessionid": "123" # 生成的sessionid
         "userid": "123" # 生成的登录用户ID
      }
  }

11. 获取当前房间人员列表

描述

获取当前房间人员列表, 人员信息/老师是否存在/在线人数

地址

https://ccapi.csslcloud.net/api/v1/room/user/list

方法

POST/GET

请求参数

参数名称 参数类型 参数说明 备注
userid 字符串 用户账号ID 必须
roomid 字符串 房间ID 必须

返回数据格式

    {
      "data": {
        "presenter": 1, # 老师是否存在,
        "assistant": 1  # 助教是否存在
        "total": 1,     # 房间总人数
        "users": [      # 人员列表
          {             # 人员信息
            "avatar": "",
            "id": "c064fee00a424029b0bcf428a834a897", # 用户ID
            "ip": "111.206.170.243",  # IP地址
            "joinTime": "2018-09-06 20.03.59",# 加入房间时间
            "lock": "false",
            "name": "www", # 名称
            "platform": "5", # 登录方式  5:web 7:手机
            "publishTime": "", # 推流时间
            "requestTime": "", # 请求时间
            "role": "presenter", # 角色 老师: presenter  学生: talker
            "socketId": "4umOGIPvnHh5NTvfCr27",
            "status": "0",  # 连麦状态
            "streamId": ""  # 推流ID
          }
        ]
      },
      "result": "OK"
    }

或者

    {
      "data": {
        "presenter": 0,
        "total": 0,
        "users": []
      },
      "result": "OK"
    }

12. 查询直播状态

描述

查询直播间 直播状态

地址

https://ccapi.csslcloud.net/api/v1/room/live/stat

方法

POST/GET

请求参数

参数名称 参数类型 参数说明 备注
userid 字符串 用户账号ID 必须
roomid 字符串 房间ID 必须

返回数据格式

  直播中
        {
          "liveid": "93ACDA25756B994A", # 直播ID
          "result": "OK",
          "started": true # true: 直播中 false 未直播
          "starttime": "2018-01-01 01:00:00" # 直播开始时间
        }
  未直播
        {
              "result": "OK",
              "started": false
        }

聊天相关

1. 获取聊天信息

描述

通过该接口可以分页获取直播的聊天信息

地址

http://api.csslcloud.net/api/live/chatmsg

方法

POST/GET

请求参数

参数名称 参数类型 参数说明 备注
roomid 字符串 直播间id 必须
userid 字符串 CC账户ID 必须
liveid 字符串 直播id 必须
pagenum 整型 每页显示的个数 可选,系统默认值为50,最大值为100
pageindex 整型 页码 可选,系统默认值为1

返回数据格式

{
    "result": "OK", # 请求是否成功。OK:成功;FAIL:失败
    "count": 100,   # 聊天总数
    "chatMsgs": [   # 聊天列表信息
        {
            "content": "粮仓到底还是满了",      # 聊天内容
            "time": "2016-11-28 20:30:33",    # 聊天时间
            "viewerName": "苍井满",            # 观众名称
            "viewerId": "0cda7ng03j9502ian",  # 观众id
            "viewerRole": 0  # 观众角色(0:未统计,1:主讲,2:助教,3:主持人,4:学员)
        }
    ...
    ]
}

回放相关

1. 查询回放列表

描述

通过该接口可以分页获取回放列表的信息

地址

http://api.csslcloud.net/api/v2/record/info

方法

POST/GET

请求参数

参数名称 参数类型 参数说明 备注
roomid 字符串 直播间id 必须
userid 字符串 CC账户ID 必须
pagenum 整型 每页显示的个数 可选,系统默认值为50
pageindex 整型 页码 可选,系统默认值为1
starttime 字符串 查询起始时间,如需按时间范围查询可添加该参数和下面的endtime参数,该查询是按直播的开始时间作为查询条件的 可选,如果填写该参数则endtime参数必填;精确到分钟,例:"2015-01-01 12:30"
endtime 字符串 查询截止时间 可选,如果填写该参数则starttime必填;精确到分钟,例:"2015-01-02 12:30"
liveid 字符串 直播id 可选,将只查询该直播下的回放信息

返回数据格式

{
   "result" : "OK",    # 请求是否成功。OK:成功;FAIL:失败
   "count" : "100",    # 回放总数
   "pageIndex" : "1",  # 页码
   "records" : [       # 回放列表信息
       {
           "id" : "753C612EB38A8D5A",            # 回放id
           "liveId" : "853C612EB38A8D5A",        # 直播id
           "startTime" : "2015-01-01 00:00:00",  # 开始时间
           "stopTime" : "2015-01-01 23:00:00",   # 结束时间
           "recordStatus": 1,                    # 录制状态,0表示录制未结束,1表示录制完成
           "recordVideoId" : "953C612EB38A8D5A", # 录制视频id,如果recordStatus为0则返回-1
           "replayUrl" : "http://xxx",           # 回放地址,当recordStatus为0时返回""
           "offlinePackageUrl" : "http://yyy",   # 离线包下载地址,注:只有开通离线播放权限才会返回该参数
           "offlinePackageMd5" : "xxxxxdddddddddddddddddddddddddddd" # 离线包md5,注:只有开通离线播放权限才会返回该参数
       },
       ...
   ]
}

2. 查询回放信息

描述

通过该接口获取单个回放信息

地址

http://api.csslcloud.net/api/v2/record/search

方法

POST/GET

请求参数

参数名称 参数类型 参数说明 备注
userid 字符串 CC账户ID 必须
recordid 字符串 回放id 必须

返回数据格式

{
  "result" : "OK", # 请求是否成功。OK:成功;FAIL:失败
  "record" : {     # 回放信息
          "id" : "753C612EB38A8D5A",       # 回放Id
          "liveId" : "853C612EB38A8D5A",   # 直播Id
          "startTime" : "2015-01-01 00:00:00", # 开始时间, 格式为"yyyy-MM-dd HH:mm:ss"
          "stopTime" : "2015-01-01 23:00:00",  # 结束时间, 格式为"yyyy-MM-dd HH:mm:ss", 如果直播未结束,该值则为""
          "recordStatus": 1, # 录制状态,0表示录制未结束,1表示录制完成
          "recordVideoId" : "953C612EB38A8D5A", # 录制视频id,如果recordStatus为0则返回-1
          "replayUrl" : "http://xxx", # 回放地址,当recordStatus为0时返回""
          "offlinePackageUrl" : "http://yyy", # 离线包下载地址,注:只有开通离线播放权限才会返回该参数
          "offlinePackageMd5" : "xxxxxdddddddddddddddddddddddddddd", # 离线包md5,注:只有开通离线播放权限才会返回该参数
          "downloadUrl" : "http://zzz" # 回放视频下载地址,该下载地址具有时效性,有效时间为2小时
      }
 }

自动登录相关

说明

描述

用户参与直播或观看回放时,可以通过访问指定URL,跳过登录界面实现自动登录,下面是自动登录时请求的URL示例:

地址

教师端: https://class.csslcloud.net/index/presenter/?roomid=FC3548C1133061D09C33DC5901307461&userid=E9607DAFB705A798&username=XXX&password=XXX&autoLogin=true 互动者: https://class.csslcloud.net/index/talker/?roomid=FC3548C1133061D09C33DC5901307461&userid=E9607DAFB705A798&username=XXX&password=XXX&autoLogin=true 旁听端: http://view.csslcloud.net/api/view/index?roomid=xxx&userid=xxx&autoLogin=true&viewername=11&viewertoken=11 回放端: http://view.csslcloud.net/api/view/callback/login?liveid=xxx&roomid=xxx&userid=xxx&autoLogin=true&viewername=11&viewertoken=11 注意: 请详细比对上述URL示例

方法

POST/GET

请求参数

参数名称 参数类型 参数说明 备注
roomid 字符串 直播间id 必须
userid 字符串 用户ID(CC直播平台的账号ID) 必须
username 字符串 用户名称, 旁听和回看该参数为:viewername 必须
password 字符串 直播间登录密码,旁听和回看该参数为:viewertoken 必须
autoLogin 字符串 自动登录,true:自动登录;false:不是自动登录 必须

备注

(1)参与直播登录时的URL,你可以在admin.bokecc.com或者在老师端页面的邀请链接获取到,然后加上autoLogin、username(viewername)、password(viewertoken)即可生成观看直播登录的URL;
(2)对于观看回放登录时的URL,你可以在在回放列表页面点击回放地址链接获得replayUrl,然后加上autoLogin、viewername、viewertoken即可生成观看回放登录的URL。
注:如果自动登录验证成功,则进入直播页面;如果验证失败,则跳到登录页面,显示错误提示信息。

接口认证相关

接口验证

概述

通过CC视频云课堂登录接口验证,客户的用户系统可对观看直播的用户进行鉴权验证接口由客户进行开发,在学员登录时,由CC视频云课堂 将登录信息提交给该接口验证用户身份信息。

接口地址

创建直播间时,验证方式选择接口验证并填写接口地址

请求方式

POST

接口参数说明

参数名称 参数类型 参数说明 备注
roomid 字符串 直播间id 必须
viewername 字符串 登录用户名 必须
viewertoken 字符串 登录密码 必须

返回数据格式

{
       "result": "ok",       
       "message": "登录成功", # 可传可不传
       "user":{
           "id": "E6A232B2DEDF69469C33DC5901307461", # 用户对应的id
           "name": "学员A", # 用户名
           "avatar": "http://domain.com/icon.png", # 用户头像路径,可传可不传
       }
}

说明

返回值应 以json形式返回
返回值result表明验证是否通过,如果成功,客户应返回 'OK', 'ok', 'true', 'yes', 'YES',中的任一个,云平台将其他结果均认为验证失败,即不允许登录
旁听接口验证仅支持返回'ok',互动者支持以上

THQS相关

说明

当需要和 Live API系统进行 HTTP 通信时,需要将原始的 Query String 转换为和请求时刻相关的 Hashed Query String 后再通过 GET 方法请求 Live API。为了描述的方便,我们将 Query String 转换为 Hashed Query String 的算法称为 THQS 算法。在描述详细的算法流程之前,我们先介绍一下 Unix 时间戳的概念。
Unix 时间戳,即该时间到 1970 年 1 月 1 日(UTC/GMT 的午夜)之间的秒数。 例如,北京时间 2010 年 12 月 9 日 15 点 23 分 12 秒的 Unix 时间戳为 1291879392。

THQS 算法
假设原来的 QueryString 为 q, 通过以下 4 个步骤,即可得到最终用于通信的 HashedQueryString:

  1. 对于q中的每个键值对按照键的字母顺序升序排序,得到排序后的请求字符串qs;
  2. 加入当前时间的 Unix 时间戳和直播平台帐号对应的 API Key 值,得到散列前的字符串 qf: qf ← qs&time=12345&salt=aSdF1234
  3. 计算得到 qf 的 md5 值,假设为 abcdefg hash ← md5(qf)
  4. 最终的 HashedQueryString 为: hqs ← qs&time=12345&hash=abcdefg 用 hqs 代替 q 进行 Http 通信。 下⾯举一个例⼦子说明计算过程。假设用户从直播平台获取到的API Key值是aSdF1234,当前时间为2010年12月9日15点23分12秒,原始的QueryString 是: name=harry&level=top&salary=1000

第一步,将上述QueryString 按照字⺟顺序进行升序排序,结果是: level=top&name=harry&salary=1000
第二步,附加time值和salt值,得到取hash前的字符串 level=top&name=harry&salary=1000&time=1291879392&salt=aSdF1234
第三步,对上述字符串取 md5 值 hash=BF04A55B30CFF562F7ADD9F054AB7FFB!
因此,最终进⾏行Http通信的字符串为level=top&name=harry&salary=1000&time=1291879392&hash=BF04A55B30CFF562F7ADD9F054AB7FFB

使用java代码编写如下:

/**
 * 功能:将一个Map按照Key字母升序构成一个QueryString. 并且加入时间混淆的hash串
 * @param queryMap  query内容
 * @param time  加密时候,为当前时间;解密时,为从querystring得到的时间;
 * @param salt   加密salt
 * @return
 */

public static String createHashedQueryString(Map<String, String> queryMap,long time, String salt) {

    Map<String, String> map = new TreeMap<String, String>(queryMap);
    String qs = createQueryString(map); //生成queryString方法可自己编写
    if (qs == null) {
        return null;
    }

    time = time / 1000;
    String hash = Md5Encrypt.md5(String.format("%s&time=%d&salt=%s", qs, time, salt));
    hash = hash.toUpperCase();
    String thqs = String.format("%s&time=%d&hash=%s", qs, time, hash);

    return thqs;
}

使用python语言编写如下:

class thqs(object):

'生成thqs请求url'

def my_urlencode(self, q):

    '对请求的字段进行urlencode,返回值是包含所有字段的list'

    l = []

    #遍历字典,进行quote_plus操作,并把所有字段拼成list

    for k in q:

        k = urllib.quote_plus(str(k))

        v = urllib.quote_plus(str(q[k]))

        url_param = '%s=%s' % (k, v)

        l.append(url_param)

    l.sort()

    return '&'.join(l)

def get_thqs(self, q):

    '按照thqs算法对所有的字段进行处理'

    qftime = 'time=%d' % int(time.time())

    salt = 'salt=%s' % API_KEY

    qftail = '&%s&%s' % (qftime, salt)



    qs = self.my_urlencode(q)

    qf = qs + qftail

    hashqf = 'hash=%s' % (hashlib.new('md5', qf).hexdigest().upper())

    thqs = '&'.join((qs, qftime, hashqf))

    return thqs

文档库相关接口

一、流程说明

文档上传实际上到账户下面,要在房间内使用,需要调用关联/取消关联接口进行操作

二、相关接口

1.上传文档

描述

创建文档信息并获取上传信息, 通过返回上传信息,执行上传文档操作

注意,第一步doc_size参数需要和第二步实际上传文档大小一致

1.1 获取文档上传信息

地址:

https://ccapi.csslcloud.net/api/v1/doc/add

备注:

需要THQS加密请求

方法:

POST/GET

请求参数

参数名称 参数类型 参数说明 备注
account_id 字符串 账号ID 必须
doc_name 字符串 文件名 必须
doc_size 整型 文档大小,单位Byte(最大不能超过104857600) 必须

返回数据格式:

{
  "data": {
    "upload_url": "https://document.csslcloud.net/api/document/upload?userid=41E8063FC799ACE5&docid=06EDECC84FB4F764"
  },
  "result": "OK"
}
1.2 文档上传

地址:

上传地址通过 上一步 获取文档信息接口 返回(data.upload_url) 文件格式支持: .doc .docx .ppt .pptx .pdf .png 后续支持jpg

方法:

POST

请求参数

参数名称 参数类型 参数说明 备注
file 二进制 文档 必须
supportanimation 整型 支持动画,0:不支持 1:支持 (只对PPT有效) 可选

备注:file需要放到request body里面,supportanimation参数需要拼接到URL中, 如果需要

返回数据格式:

{
    "datas": {
        "docId": "0A0833E541533352"
    },
    "errorCode": 0,
    "success": true
}

2.删除账户共享文件

描述

实际删除账户下的共享文档

地址:

https://ccapi.csslcloud.net/api/v1/doc/delete

备注:

需要THQS加密请求

方法:

POST/GET

请求参数

参数名称 参数类型 参数说明 备注
account_id 字符串 账号ID 必须
doc_id 字符串 文档ID 必须

返回数据格式:

  {
          result: 'OK', # 失败: FAIL,成功:OK
  }

3.获取账户共享文档列表

描述:

获取某个账户下共享文档列表

地址:

https://ccapi.csslcloud.net/api/v1/doc/list

备注:

需要THQS加密请求

方法:

POST/GET

请求参数

参数名称 参数类型 参数说明 备注
account_id 字符串 用户账号ID 必须
page 整型 获取指定页,默认返回第一页 可选
lines 整型 每页的数据条数,默认每页50 可选
room_id 整型 查询该账户下的文档 是否与该房间已关联 可选
doc_id 整型 文档ID, 用于查询 可选
doc_name 字符串 文档名, 用于查询 可选
time_gte 日期 date/datetime 根据此参数,选择上传时间>= 该值的文档 可选
time_lte 日期 date/datetime 根据此参数,选择上传时间<= 该值的文档 可选

返回数据格式:

  {
       result: "OK",
       picDomain: "https://image.csslcloud.net", # 实际去访问文档的地址
       docs: [
           {
                id: "CFD3C4FB8D2B6148", # 文件ID
                name: "MBA讲座.ppt", # 文件名称
                pageSize: 24, # 文件页数
                roomId: "2EE731074C8D64679C33DC5901307461", # 共享盘房间ID
                size: 3679232 # 文件大小
                useSDK: 0 # ppt动效 0: 未开启  1: 开启
                create_time: "2018-01-01 12:00:00" # 上传时间
                status: 1 # -2: 未上传  -1:上传失败 0: 上传成功 1: 转换成功 2: 转换中 3: 转换失败
                related: 1 #  1: 已关联 0 未关联,如果room_id参数没传,则不返回该字段
          }
          ...
       ],
       total: 1,  # 总页数
       current: 1 # 当前页数
  }

4.获取房间文档列表

描述:

客户端根据返回的共享盘房间ID和文件ID去访问实际文档地址

地址:

https://ccapi.csslcloud.net/api/v1/doc/auth/list

备注:

需要THQS加密请求

方法:

POST/GET

请求参数

参数名称 参数类型 参数说明 备注
account_id 字符串 账号ID 必须
room_id 字符串 房间ID 必须
page 整型 获取指定页,默认返回第一页 可选
lines 整型 每页的数据条数,默认每页50 可选
doc_id 字符串 文件ID 用于查询 可选
doc_name 字符串 文件名 用于查询 可选

返回数据格式:

  {
       result: "OK",
       picDomain: "https://image.csslcloud.net", # 实际去访问文档的地址
       docs: [
           {
                id: "CFD3C4FB8D2B6148", # 文件ID
                name: "MBA讲座.ppt", # 文件名称
                pageSize: 24, # 文件页数
                roomId: "2EE731074C8D64679C33DC5901307461", # 共享盘房间ID
                size: 3679232 # 文件大小
                useSDK: 0 # ppt动效 0: 未开启  1: 开启
                create_time: "2018-01-01 12:00:00" # 上传时间
                status: 1 # 文档状态  0 上传成功 1 转换成功 2 转换失败
          }
          ...
       ],
       total: 1,  # 总页数
       current: 1 # 当前页数
  }

5.文档关联接口

描述:

将账户共享文档与房间关联, 支持批量关联

地址:

https://ccapi.csslcloud.net/api/v1/doc/relate

备注:

需要THQS加密请求

方法:

GET/POST

请求参数

参数名称 参数类型 参数说明 备注
account_id 字符串 账号ID 必须
room_id 字符串 房间ID 必须
doc_id 字符串 文档ID 必须

返回数据格式:

 {
      result: 'OK', # 失败: FAIL,成功:OK
 }

6.取消文档关联

描述:

将账户共享文档与房间取消关联, 支持批量取消关联

地址:

https://ccapi.csslcloud.net/api/v1/doc/unrelate

备注:

需要THQS加密请求

方法:

GET/POST

请求参数

参数名称 参数类型 参数说明 备注
account_id 字符串 账号ID 必须
room_id 字符串 房间ID 必须
doc_id 字符串 文档ID 必须

返回数据格式:

 {
      result: 'OK', # 失败: FAIL,成功:OK
 }

7. 设置文档转码回调通知

描述:

当文档转码成功/失败后,以API POST的方式通知客户

地址:

https://ccapi.csslcloud.net/api/v1/callback/add

备注:

需要THQS加密请求
文档转码完成后, 以POST方式通知的到客户
请求客户API接口参数
{
 "doc_id":"DFDFGGFD54545SFEW34552", # 文档ID
 "convert_status":1 # 转码完成为1 转码失败为3
}
如果客户收到回调通知需返回
{
 "result":"OK"
}

方法:

GET/POST

请求参数

参数名称 参数类型 参数说明 备注
account_id 字符串 账号ID 必须
service_name 字符串 请填写 doc 必须
action_name 字符串 请填写 doc_transcode 必须
callback_api 字符串 回调API地址 必须
switch_on 整型 回调开关 1:开启 0:关闭 必须

返回数据格式:

 {
      result: 'OK', # 失败: FAIL,成功:OK
 }

8. 取消设置文档转码回调通知

描述:

删除文档回调设置

地址:

https://ccapi.csslcloud.net/api/v1/callback/del

备注:

需要THQS加密请求

方法:

GET/POST

请求参数

参数名称 参数类型 参数说明 备注
account_id 字符串 账号ID 必须
service_name 字符串 请填写 doc 必须
action_name 字符串 请填写 doc_transcode 必须

返回数据格式:

 {
      result: 'OK', # 失败: FAIL,成功:OK
 }

9. 更新设置文档转码回调通知

描述:

更新文档回调设置

地址:

https://ccapi.csslcloud.net/api/v1/callback/update

备注:

需要THQS加密请求

方法:

GET/POST

请求参数

参数名称 参数类型 参数说明 备注
account_id 字符串 账号ID 必须
service_name 字符串 请填写 doc 必须
action_name 字符串 请填写 doc_transcode 必须
new_callback_api 字符串 新的回调URL地址 必须

返回数据格式:

 {
      result: 'OK', # 失败: FAIL,成功:OK
 }

媒体库相关

一.流程

1.通过调用createuploadinfo接口获取video_id等参数 2.前端js拿到video_id相关参数,执行上传操作 3.将视频关联到房间

二.相关接口

1.上传视频

地址:

https://ccapi.csslcloud.net/api/v1/video/createuploadinfo

备注:

需要THQS加密请求

方法:

POST/GET

请求参数

参数名称 参数类型 参数说明 备注
account_id 字符串 账号ID 必须
title 字符串 视频标题 必须
filename 字符串 视频文件名 必须
filesize 字符串 视频大小 可选
categoryid 字符串 视频分类ID 可选

返回数据格式:

 {
  "result": 'OK', # 失败: FAIL,成功:OK
  "videoUploadInfo": {
    "videoid": "F7B8DA319DE99681FC9558351D509E7C", # 系统分配的视频id
    "userid": "1725A8A9604EAE30", # 用户ID
    "servicetype": "DF0236B91AECD81C", # 服务类型
    "metaurl": "http://1-15-vacombiner.bokecc.com/servlet/uploadmeta/v2",  # 系统分配的文件状态及断点位置查询接口
    "chunkurl": "http://1-15-vacombiner.bokecc.com/servlet/uploadchunk/v2" # 系统分配的上传文件内容块的接口
  }
}

2.上传视频

由前端js封装实际上传操作

3.关联视频

地址:

https://ccapi.csslcloud.net/api/v1/video/relate

备注:

需要THQS加密请求,video_id支持批量操作,以|分隔

方法:

POST/GET

请求参数

参数名称 参数类型 参数说明 备注
account_id 字符串 账号ID 必须
room_id 字符串 房间ID 必须
video_id 字符串 视频ID 必须
media_type 整型 媒体类型 可选 1:视频 2:音频, 默认为视频

返回数据格式:

  {
          result: 'OK', # 失败: FAIL,成功:OK
  }

4.取消关联视频

地址:

https://ccapi.csslcloud.net/api/v1/video/unrelate

备注:

需要THQS加密请求,video_id支持批量操作,以|分隔

方法:

POST/GET

请求参数

参数名称 参数类型 参数说明 备注
account_id 字符串 账号ID 必须
room_id 字符串 房间ID 必须
video_id 字符串 视频ID 必须

返回数据格式:

  {
          result: 'OK', # 失败: FAIL,成功:OK
  }

5.标记删除关联视频

地址:

https://ccapi.csslcloud.net/api/v1/video/delete

备注:

需要THQS加密请求,video_id支持批量操作,以|分隔

方法:

POST/GET

请求参数

参数名称 参数类型 参数说明 备注
account_id 字符串 账号ID 必须
room_id 字符串 房间ID 必须
video_id 字符串 视频ID 必须

返回数据格式:

  {
          result: 'OK', # 失败: FAIL,成功:OK
  }

6.设为暖场视频

地址:

https://ccapi.csslcloud.net/api/v1/video/warm/set

备注:

需要THQS加密请求

方法:

POST/GET

请求参数

参数名称 参数类型 参数说明 备注
account_id 字符串 账号ID 必须
room_id 字符串 房间ID 必须
video_id 字符串 视频ID 必须

返回数据格式:

  {
          result: 'OK', # 失败: FAIL,成功:OK
  }

7.取消设为暖场视频

地址:

https://ccapi.csslcloud.net/api/v1/video/warm/unset

备注:

需要THQS加密请求

方法:

POST/GET

请求参数

参数名称 参数类型 参数说明 备注
account_id 字符串 账号ID 必须
room_id 字符串 房间ID 必须
video_id 字符串 视频ID 必须

返回数据格式:

  {
          result: 'OK', # 失败: FAIL,成功:OK
  }

8.查询某房间下已关联的媒体

地址:

https://ccapi.csslcloud.net/api/v1/video/onrelated

备注:

需要THQS加密请求,video_id支持批量操作,以|分隔

方法:

POST/GET

请求参数

参数名称 参数类型 参数说明 备注
account_id 字符串 账号ID 必须
room_id 字符串 房间ID 必须
video_id 字符串 视频ID 可选
page 整型 获取指定页 可选 默认为1
lines 整型 分页每页数据量 可选 默认为50
sort 整型 排序方式 'CREATION_DATE:ASC': 日期升序,'CREATION_DATE:DESC': 日期降序,'FILE_SIZE:ASC': 大小升序, 'FILE_SIZE:DESC':大小降序,'VIDEO_TITLE:ASC': 标题升序,'VIDEO_TITLE:DESC': 标题降序 可选 默认日期升序
status 字符串 视频状态,支持多选,以,分割 正常:0 处理中:2或者10 标记删除:6 转码失败:7 彻底删除:11 可选
isvaild 整型 审核状态 1:已审核 0:未审核 可选
categoryid 字符串 视频分类ID 可选
start_time 日期 date 创建时间 可选
end_time 日期 date 结束时间 可选
onlydata 整型 1:只查记录数据 可选
onlycount 整型 1:只查视频总数 可选
isactive 整型 只查询可用的视频(排除 标记删除/转码失败/删除), 1:是 0:否 可选

返回数据格式:

{
  "result": 'OK', # 失败: FAIL,成功:OK
  "videos": {
    "total": 3, # 视频总数
    "video": [
      {
        "id": "A4DE83629B02A0617E6C9CEE8B422289", # 视频ID
        "userid": "1725A8A9604EAE30", # 账号ID
        "title": "测试视频",  # 视频标题
        "desp": "这是第二条测试用的信息", # 视频描述
        "tags": " ",  # 视频标签
        "duration": 30, # 视频时长(s)
        "status": 0, # 视频状态 0:正常 处理中:2或者10 标记删除:6 转码失败:7 彻底删除:11
        "isvalid": 0, # 是否已经审核(0未审核,1已审核)
        "filesize": 489848, # 视频大小
        "type": 80, # 视频类型(清晰度大小)
        "creation-time": "2017-11-14 19:18:58", # 创建时间
        "uploaduserid": "1725A8A9604EAE30", #  上传用户ID
        "category": "8395FBC2E22C76D2", # 视频分类ID
        "hasvideofile": 0, # 视频文件是否存在(0存在,1删除)
        "playurl": "", # 播放地址
        "mediaType": 2 # 视频类型是否是音频(1视频,2音频)
      }
      ……
    ]
  }
}}

results matching ""

    No results matching ""