Stream 通过下方描述的 GraphQL API 以及 Cloudflare 仪表板的 Stream Analytics 页面提供直播视频和上传到 Stream 的视频的分析数据。
Go to Analytics ↗Stream Analytics API 使用 Cloudflare GraphQL Analytics API,可用于许多 Cloudflare 产品。有关 GraphQL、速率限制、过滤和排序的更多信息,请参阅 Cloudflare GraphQL Analytics API 文档。
-
在 Cloudflare 仪表板中,前往 Account API tokens(账户 API 令牌) 页面。
Go to Account API tokens ↗ -
生成具有 Account Analytics 权限的 API token。
-
使用您选择的 GraphQL 客户端发送第一个查询。Postman ↗ 内置 GraphQL 客户端,可帮助您运行第一个查询并 introspect GraphQL schema 以了解可用功能。
请参阅以下部分了解可用指标、维度、字段和示例查询。
Stream 收集通过 HLS 或 DASH 播放的所有直播和点播视频交付给观众的分钟数数据,无论您是否使用 Stream Player。
| 字段 | 描述 |
|---|---|
date |
日期 |
datetime |
日期时间 |
uid |
视频的 UID |
clientCountryName |
观看视频的客户端 ISO 3166 alpha2 国家代码 |
creator |
与单个视频关联的 Creator ID(如有) |
某些过滤器(如 date)可与 gt(大于)和 lt(小于)等运算符配合使用,如下面的示例查询所示。有关更多高级过滤选项,请参阅 过滤。
| 节点 | 字段 | 描述 |
|---|---|---|
streamMinutesViewedAdaptiveGroups |
minutesViewed |
交付的视频分钟数 |
query StreamGetMinutesExample($accountTag: string!, $start: Date, $end: Date) {
viewer {
accounts(filter: { accountTag: $accountTag }) {
streamMinutesViewedAdaptiveGroups(
filter: { date_geq: $start, date_lt: $end }
orderBy: [sum_minutesViewed_DESC]
limit: 100
) {
sum {
minutesViewed
}
dimensions {
uid
clientCountryName
}
}
}
}
}{
"data": {
"viewer": {
"accounts": [
{
"streamMinutesViewedAdaptiveGroups": [
{
"dimensions": {
"clientCountryName": "US",
"uid": "73c514082b154945a753d0011e9d7525"
},
"sum": {
"minutesViewed": 2234
}
},
{
"dimensions": {
"clientCountryName": "CN",
"uid": "73c514082b154945a753d0011e9d7525"
},
"sum": {
"minutesViewed": 700
}
},
{
"dimensions": {
"clientCountryName": "IN",
"uid": "73c514082b154945a753d0011e9d7525"
},
"sum": {
"minutesViewed": 553
}
}
]
}
]
}
},
"errors": null
}GraphQL API 支持 seek 分页:使用过滤器,您可以指定最后一个 video UID,使响应仅包含该 video UID 之后的视频数据。
以下查询将返回 video UID 5646153f8dea17f44d542a42e76cfd 之后 2 个视频的数据:
query StreamPaginationExample(
$accountTag: string!
$start: Date
$end: Date
$uId: string
) {
viewer {
accounts(filter: { accountTag: $accountTag }) {
videoPlaybackEventsAdaptiveGroups(
filter: { date_geq: $start, date_lt: $end, uid_gt: $uId }
orderBy: [uid_ASC]
limit: 2
) {
count
sum {
timeViewedMinutes
}
dimensions {
uid
}
}
}
}
}实现分页的步骤:
- 调用第一个查询(不带 uid_gt 过滤器)以获取第一组视频
- 从第一个查询的响应中获取最后一个 video UID
- 调用下一个查询,指定 uid_gt 属性并将其设为最后一个 video UID。这将返回下一组视频
有关分页的更多信息,请参阅 Cloudflare GraphQL Analytics API 文档。
- 单个查询的最大查询间隔为 31 天
- 最大数据保留期为 90 天