Pano开发者中心
  • 开发者中心
  • 下载中心

›RESTful API

新手入门

  • 简介
  • 名词解释
  • 创建第一个应用

规则说明

  • Channel ID命名规则
  • 权限控制
  • 计费说明
  • 频道最大时长说明
  • 每月一万分钟免费说明
  • 布局参数说明
  • 水印

场景方案

    教育行业

    • 1vN互动小班课
    • 互动直播大班课

快速接入

  • 简介
  • 音视频

    • Windows (C++)
    • iOS (Objective-C)
    • Android (Java)
    • Web
    • Electron
    • Flutter
    • React Native
    • Unity

    白板

    • Windows (C++)
    • iOS (Objective-C)
    • Android (Java)
    • Web
    • Electron
    • Flutter
    • React Native

高级功能(RTC)

  • 简介
  • 屏幕共享
  • 分组讨论
  • 状态回调
  • 设备诊断
  • 音量指示
  • 控制声音
  • 声卡操作
  • 混音/伴音
  • 混响
  • 耳返
  • 变声
  • 美颜
  • 音视频数据回调
  • 音视频外部采集
  • 收发多路视频
  • 多窗口渲染
  • 性能检测
  • 截图
  • 反馈

高级功能(RTS)

  • 简介
  • 白板

    • Windows (C++)
    • iOS (Objective-C)
    • Android (Java)
    • Web
    • Flutter

    标注

    • 视频标注
    • 共享标注
    • 外部标注

    消息

    • 消息服务

    远程控制

    • 远程控制

操作实践

  • 切换大小屏

RESTful API

  • 基本格式
  • 生成Token
  • 频道管理
  • 云端录制
  • CDN推流
  • 文档转码
  • 消息服务
  • 服务端消息通知

SDK API

  • SDK接口说明
  • Windows (C++)
  • macOS/iOS (Objective-C)
  • Android (Java)
  • Web SDK (IE专用版)
  • Web SDK

    • 浏览器兼容性
    • RtcEngine
    • GroupManager
    • RtcWhiteboard
    • RtsService
    • RtcMessage
    • Annotation
    • Constants

更新记录

  • 简介
  • Windows
  • macOS
  • iOS
  • Android
  • Electron
  • Flutter
  • React Native
  • Unity
  • Web(全功能SDK)
  • Web(RTS SDK)
  • Web(IE专用音视频SDK)

帮助

  • FAQ
  • 更多帮助

云端录制

云端录制API,主要用于服务器云端录制开启,结束,更新。

开启录制

请求

POST /recording/start
Host: api.pano.video
Content-Type: application/json
Authorization: PanoSign <PanoSign>
Tracking-Id: ef9b2acc8e1f4d598090eb6d9cbe8596

{
  "channelId":"HelloPano",   // string, 必填, 频道ID
  "profileId": "18712321213",// string, 可选,第三方存储唯一标识
  "streamList": [
    {
      "streamId": 1,         // int,    必填,录制流ID
      "flag": 15,            // int,    必填,媒体类型
      "type": 1,             // int,    必填,录制模式
      "userId": "1",         // string, 可选,用户ID
      "layout": {...},       // object, 可选,布局参数
      "fps": 15,             // int,    可选,帧率
      "format": 2,           // int,    可选,文件格式
      "watermarks": [...]    // array,  可选, 水印
    },
    {
      "streamId": 2,
      "flag": 15,
      "type": 2,
      "userId": "2",
      "layout": {...},
      "fps": 15,
      "format": 2,
      "watermarks": [...]
    }
  ]
}

参数说明:

  • profileId - 第三方存储的唯一标识。
    • 如果将录制文件保存在Pano服务器上,则无需配置此项。
    • 如果在「Pano控制台 - 应用管理 - 应用配置」页面配置过第三方存储信息,则可以看到对应的profileId。开启录制时,如果指定该值,则使用指定的第三方存储,否则使用Pano存储。使用第三方存储时,录制文件信息Pano仅保存90天,过期无法查询,因此开发者请注意维护好录制文件和存储位置的对应关系。
  • streamList - 录制流列表,默认情况下,每个频道最多可以同时配置 3 路录制流。
  • streamId - 录制流ID,由开发者指定,用以标识和区分同一channelId内的不同录制流,后续可以使用streamId来更新、结束录制。
    开发者可以对同一个channelId录制多个流,每个流有不同的配置。
    如果一个channelId只有一个录制流,则streamList可以只包含一个元素。
  • flag - 媒体类型,表示录制哪些媒体,1: 录音频、2: 录视频、4: 录桌面共享、8: 录白板,多个值相加表示同时录制多种媒体,值15表示录制所有媒体(15=1+2+4+8)
  • type - 录制模式
    • "type": 1,混录模式,频道内所有用户的音视频混合录制为一个文件
    • "type": 2,单录模式,单个用户的音视频混合录制成一个文件(单录时必须指定userId)
  • userId - 用户ID
    • 单录时表示需要录制的用户的userId(type为2时,userId是必填项)
    • 混录时表示主讲人ID,混录时如果不指定userId则第一个入会的用户作为主讲人
  • layout - 布局参数,用于设置视频合流布局,格式请参考布局参数说明
  • fps - 设置录制的帧率,支持30帧(默认值)和15帧
  • format - 设置录制文件格式,1: FLV(默认值),2: MP4
  • watermarks - 水印,格式请参考水印

响应

状态码说明
200请求成功处理
400请求格式错误
401认证错误
403操作不允许,请检查功能是否开通
404频道不存在,可能频道尚未开始,或者频道已结束
500服务器内部错误

更新录制

请求

PUT /recording/update
Host: api.pano.video
Content-Type: application/json
Authorization: PanoSign <PanoSign>
Tracking-Id: ef9b2acc8e1f4d598090eb6d9cbe8596

{
  "channelId":"HelloPano",  // string, 必填, 频道ID
  "streamList": [
    {
      "streamId": 1,        // int,    必填, 录制流ID
      "userId": "1",        // string, 可选, 用户ID
      "layout": {...},      // object, 可选, 布局参数
      "fps": 15,            // int,    可选, 帧率
      "watermarks": [...]   // array,  可选, 水印, 数组为空时表示删除水印
    },
    {
      "streamId": 2,
      "layout": {...},
      "fps": 15
    }
  ]
}

通过更新接口可以更新stream的布局、混录时的主讲人Id等。

注意:flag和type不可以更新。如果是单录,userId也不可以更新。

响应

状态码说明
200请求成功处理
400请求格式错误
401认证错误
403操作不允许,请检查是否为非法操作或者该功能开通才可以使用
404频道不存在
500服务器内部错误

结束录制

请求

POST /recording/stop
Host: api.pano.video
Content-Type: application/json
Authorization: PanoSign <PanoSign>
Tracking-Id: ef9b2acc8e1f4d598090eb6d9cbe8596

{
  "channelId": "HelloPano",   // string, 必填, 频道ID
  "streamId": 1               // int,    可选, 当为空时, 结束频道下所有录制, 当不为空时, 仅结束此streamId对应录制
}

响应

状态码说明
200请求成功处理
400请求格式错误
401认证错误
403操作不允许,请检查是否为非法操作或者该功能开通才可以使用
404频道不存在,或者录制任务未开启,可能有以下几种原因:
1. 频道结束后发送请求
2. 没有开启过录制
3. 多次结束同一个录制
500服务器内部错误

获取录制文件信息

请求

POST /recording/url
Host: api.pano.video
Content-Type: application/json
Authorization: PanoSign <PanoSign>
Tracking-Id: ef9b2acc8e1f4d598090eb6d9cbe8596

{
  "channelKey": "56789012345",                  // channelKey与fileKeyList有一个必填
  "fileKeyList": ["67890123456","67890123457"], // channelKey与fileKeyList有一个必填
  "duration": 86400                             // int, 可选, url有效时长, 单位:秒
}

参数说明:

  • channelKey - channelKey与fileKeyList必须有一个为必填,只有channelKey参数时表示获取此通话下的所有录制文件URL,只有fileKeyList参数时表示获取这些fileKey的录制文件URL,如果2个参数都有值,则表示此channelKey下的此fileKey对应的录制文件
  • fileKeyList - fileKey在查询通话详情里获得,或者在webhook里获得。单次最多可以获取50个录制文件的URL
  • duration - 生成的URL有一个有效期,默认为24小时,最长为7天

注意事项:

  • 默认情况下,在频道结束后开始生成录制文件,此过程耗时通常约等于录制过程时长。可以申请开通 Webhook 回调来接收"录制文件生成"的通知。
  • 如果单个 streamId 录制时长超过2小时,会按照每2小时对录制文件进行切片。例如,2小时30分钟的录制,会生成一个2小时的录制文件和一个30分钟的录制文件,fileKeyList 中包含两个元素。
  • 返回结果的数组元素会按照规则进行排序:streamId 较小的排在前面;streamId 相同的文件,先录制或先切片的排在前面。
  • 录制文件默认永久存储,免费保存90天,超过后将产生存储费用,具体资费请咨询商务;如需调整存储期限,请咨询技术支持。
  • 播放或下载录制文件,会产生费用(该费用不包含在免费时长中),具体资费请咨询商务。

响应

状态码说明
200请求成功处理
400请求格式错误
401认证错误
404录制文件不存在
500服务器内部错误

响应示例

200 OK
[
  {
    "channelKey": "56789012345",
    "streamId": 1,
    "fileKey": "67890123456",
    "url": "https://abc123.flv", // 当使用第三方存储时,该字段仅表示第三方存储中的location 
    "duration": 3315,            // 录制文件时长,int,   单位:秒
    "size": "12345"              // 录制文件大小,string,单位:字节(Byte) 
  },
  ... // 更多数据
]

分页查询录制或录制合并文件

分页查询录制或者录制合并文件,按照文件的创建时间倒序排列

请求

GET /recording/list?beginTime=<beginTime>&endTime=<endTime>&type=<type>&page=<page>&pageSize=<pageSize>
HOST: api.pano.video
Content-Type: application/json
Authorization: PanoSign <PanoSign>
Tracking-Id: ef9b2acc8e1f4d598090eb6d9cbe8596

参数说明:

  • beginTime - long, 可选, 查询时间区间的起始时间(UTC时间戳, 单位:秒)
  • endTime - long, 可选, 查询时间区间的结束时间(UTC时间戳, 单位:秒)
  • type - int, 必选, 查询类型, 1: 表示查询录制文件, 2:表示查询录制合并文件
  • page - int, 可选, 当前查询的页码, 默认值为1
  • pageSize - int, 可选, 当前页显示的条数, 默认值为100, 最大值为500

参数示例:
GET https://api.pano.video/recording/list?beginTime=1635696000&endTime=1635782399&type=1&page=1&pageSize=10

响应

状态码说明
200请求成功处理
400请求格式错误
401认证错误
500服务器内部错误

响应示例

200 OK
{
   "page": 1,      // int, 当前页码
   "pageSize": 10, // int, 每页显示条数
   "total": 1,     // int, 总文件数
   "files":
    [
      {
        "fileKey": "12345678901234567",   // string, 录制文件的唯一ID
        "channelKey":"42133213213421123", // string, 录制文件所属的通话ID(查询录制合并文件时没有该字段)
        "ctime": "1635696000"             // string, 录制文件创建时间(UTC时间戳, 单位:秒)
      }
    ]
}

删除录制或者录制合并文件

请求

DELETE /recording/item
Host: api.pano.video
Content-Type: application/json
Authorization: PanoSign <PanoSign>
Tracking-Id: ef9b2acc8e1f4d598090eb6d9cbe8596

{
  "type": 1,
  "channelKeyList": ["56789012345"],
  "fileKeyList": ["67890123456","67890123457"]
}

参数说明:

  • type - int, 必选,删除类型,1: 表示删除录制文件 2: 表示删除录制合并文件
  • channelKeyList - 当type=1的时候,该字段和fileKeyList字段至少有一个存在,如果channelKeyList存在则表示按频道级别删除录制文件;如果fileKeyList存在则表示按文件级别删除录制文件
  • fileKeyList - 当type=2的时候,该字段不允许为空

响应

状态码说明
200请求成功处理
400请求格式错误
401认证错误
404录制文件不存在
500服务器端内部错误
Last updated on 2022/3/31
← 频道管理CDN推流 →
  • 开启录制
    • 请求
    • 响应
  • 更新录制
    • 请求
    • 响应
  • 结束录制
    • 请求
    • 响应
  • 获取录制文件信息
    • 请求
    • 响应
  • 分页查询录制或录制合并文件
    • 请求
    • 响应
  • 删除录制或者录制合并文件
    • 请求
    • 响应
浙ICP备20002645号 ©2019-2022 Pano拍乐云