Jay

Zoom直播对接文档

最近给某大型互联网公司做一个项目,其中需要对接zoom直播技术,其中遇到了一些坑,记录分享给大家

文档地址

  1. api文档

zoom业务

  1. zoom有四种角色:主持人,备用主持人,嘉宾,观众
  2. 只有主持人和备用主持人能开启直播
  3. 主持人和嘉宾在同一列表页内
  4. 观众只能观看,举手,问答
  5. 嘉宾能管理用户,设置嘉宾角色时,账号类型不受限制
  6. 嘉宾不能开启会议
  7. 设置多个主持人的情况,同时只能一个主持人进入
  8. 打开唤起zoom客户端的链接时,携带当前浏览器所登录的账号的用户信息
  9. zoom会有有两种,一种metting,一种为webinar
  10. webinar类型的会议,主持人账号必须是pro及以上
  11. webinar类型会议,必须是收费账号才能创建
  12. webinar创建时可设置自动录播
  13. 录播接口返回包含音频视频的下载地址
  14. 云视频下载地址需要带上用户登录信息
  15. 可以设置关闭视频下载需要登录,保密性要求高的公司不允许关闭
  16. 服务端下载录播时,在请求中带上用户登录cookie
  17. 录播停止(不是暂停)后在开启录播,或结束会议后在进入会议,会产生多段回放记录,不会合并视频
  18. 同一个账号不能同时进入两个直播间
  19. 同一个账号创建的直播间,不能同时开启,即使是不同的账号(备用主持人)开启直播主持会议。

api鉴权

api地址

https://api.zoom.us/v2/

鉴权

请求头带上鉴权信息

    Authorization: Bearer <token>

下载加密库JWT, 进行加密,生成token

        use Firebase\JWT\JWT;
        $token = array(
            'iss' => $key,
            'exp' => time() + 60,
        );

        return JWT::encode($token, $secret);

流程图

zoom时序图

zoom的bug

bug的现象:当创建webinar会议时,不设置备用主持人,在用户进入会议室,设置当前用户为备用主持人时,【举手】【问答】【观众列表】功能不可用。

这个bug和zoom的技术支持反馈和调试确认之后,将会在近期修复

由于zoom更新会议接口的bug,采用创建的时候就设置一个主持人方案

使用到的接口

webinar会议创建接口

POST https://api.zoom.us/v2/users/{userId}/webinars

参数:备用主持人字段, 支持多个备用主持人

{
    "topic": "string",// 标题
    "type": "integer",//会议类型
    "start_time": "string [date-time]",//开始时间
    "password": "string",//会议密码
    "settings": {
        "auto_recording": "string",// 自动录播
        "alternative_hosts": "string",//备用主持人
    }
}

webinar会议更新接口

PATCH https://api.zoom.us/v2/webinars/{webinarId}

设置嘉宾

$ curl https://api.zoom.us/v2/webinars/{webinarId}/panelists \
   -d '{
    "panelists": [
        {
            "name": "string",
            "email": "string"
        }
    ]
}'