输入在线媒体流消息通知服务

最近更新时间:2022-09-20 05:17:40

概述

anyRTC 消息通知服务可以将输入在线媒体流业务中的发生的一些事件以 HTTP 或 HTTPS 请求的方式通知到你的服务器。

开通服务

使用 anyRTC 消息通知服务前需要申请开通并进行配置,关于如何开通服务以及消息通知回调的数据格式详见消息通知服务

事件

消息通知服务器可以通知该业务下的三种事件:云端播放器创建成功、云端播放器销毁成功、云端播放器运行状态改变。

云端播放器创建成功

当你调用 Create 成功创建一个云端播放器时,消息通知服务器会向你的服务器通知该事件。

eventType1(Player Created)payload 示例如下:

{
  "player": {
    "channelName": "class32",
    "playTs": 1575508644,
    "createTs": 1575508644,
    "id": "2a784467d647bb87b60b719f6fa56317",
    "idleTimeout": 300,
    "name": "teacher101",
    "streamUrl": "rtmp://example.anyrtc.io/live/class32/teacher101",
    "token": "2a784467d6",
    "account": "1011111",
    "status": "connecting"
  },
  "lts": 1575508644149,
  "xRequestId": "7bbcc8a4acce48c78b53c5a261a8a564"
}
  • player 包含的字段:

    • channelName:String 型字段,anyRTC 频道名称。
    • playTs:Number 型字段,云端播放器开始播放在线媒体流时的 Unix 时间戳(秒)。
    • createTs:Number 型字段,云端播放器创建的 Unix 时间戳 (s)。
    • id:String 型字段,云端播放器的 ID。它是 anyRTC 服务器生成的一个 UUID(通用唯一识别码),标识已创建的一个云端播放器。
    • idleTimeout:Number 型字段,云端播放器处于“空闲”状态(即媒体流为非播放状态)的最大时长 (s)。空闲状态超过设置的 idleTimeout 后,该 player 会自动销毁。
    • name:String 型字段,云端播放器的名字。
    • streamUrl:String 型字段,在线媒体流 URL 地址。
    • token:String 型字段,云端播放器在 anyRTC 频道内使用的动态密钥。
    • account:String 型字段,云端播放器在 anyRTC 频道内的 UID。
    • status:String 字段,云端播放器的状态。该事件中会报告 "connecting",表示业务服务器正在连接媒体流地址或正在探测音视频数据。
  • lts:Number 型字段,该事件在业务服务器上发生的的 Unix 时间戳 (ms)。

  • xRequestId:String 型字段,标识本次请求的 UUID(通用唯一识别码)。该值为本次请求 header 中 X-Request-ID。

云端播放器销毁成功

当一个云端播放器被销毁时,消息通知服务器会向你的服务器通知该事件。

销毁的原因请参考 destroyReason 字段。

eventType3(Player Destroyed)payload 示例如下:

{
  "player": {
    "channelName": "class32",
    "id": "2a784467d647bb87b60b719f6fa56317",
    "name": "teacher101",
    "playTs": 1575508644
  },
  "lts": 1575508666666,
  "destroyReason": "Delete Request",
  "fields": "player.name,player.channelName,player.id"
}
  • player 包含的字段:
    • channelName:String 型字段,anyRTC 频道名称。
    • id:String 型字段,云端播放器的 ID。它是 anyRTC 服务器生成的一个 UUID(通用唯一识别码),标识已创建的一个云端播放器。
    • name:String 型字段,云端播放器的名字。
    • playTs:Number 型字段,云端播放器开始播放在线媒体流时的 Unix 时间戳(秒)。
  • lts:Number 型字段,该事件在业务服务器上发生的的 Unix 时间戳 (ms)。
  • destroyReason:String 型字段,描述该云端播放器销毁的原因:
    • Delete Request:业务服务器收到你的 Delete 请求。
    • Internal Error:anyRTC 频道相关的错误。常见错误为 Token 无效或 Token 超时。
    • Idle Timeout:在你设置的 idleTimeout 时间内,业务服务器无法连接你指定的媒体流地址或该媒体流无法播放。
  • fields: JSON 编码方式的字段掩码,详见谷歌 protobuf FieldMask 文档。用于指定返回 player 字段的子集。在此示例中表示 anyRTC 服务器返回 player 字段中的 name、channelName 和 id 字段子集。

云端播放器运行状态改变

成功创建一个云端播放器后,当云端播放器运行状态改变时,消息通知服务器会向你的服务器通知该事件。

eventType4(Player Status Changed)payload 示例如下:

{
  "player": {
    "channelName": "class32",
    "id": "2a784467d647bb87b60b719f6fa56317",
    "name": "teacher101",
    "status": "running"
  },
  "lts": 1575508645000,
  "fields": "player.name,player.channelName,player.id,player.status"
}
  • player 包含的字段:
    • channelName:String 型字段,anyRTC 频道名称。
    • id:String 型字段,云端播放器的 ID。它是 anyRTC 服务器生成的一个 UUID(通用唯一识别码),标识已创建的一个云端播放器。
    • name:String 型字段,云端播放器的名字。
    • status:String 字段,云端播放器的状态:
      • "connecting":业务服务器正在连接媒体流地址或正在探测音视频数据。该状态报告运行中的云端播放器出现问题后与业务服务器重新开始连接。
      • "running":云端播放器正常运行,正在 anyRTC 频道内播放媒体流。
      • "failed":业务服务器无法连接媒体流地址或该媒体流无法播放,该状态报告运行中的云端播放器出现问题。
  • lts:Number 型字段,该事件在业务服务器上发生的的 Unix 时间戳 (ms)。
  • fields:JSON 编码方式的字段掩码,详见谷歌 protobuf FieldMask 文档。用于指定返回 player 字段的子集。在此示例中表示 anyRTC 服务器返回 player 字段中的 name、channelName 、 id 和 status 字段子集。