Stream は、ライブ動画と Stream にアップロードした動画の両方について、次の GraphQL API と、Cloudflare ダッシュボードの Stream Analytics ページでアナリティクスを提供します。
Analytics を開く ↗Stream Analytics API は Cloudflare GraphQL Analytics API を使います。この API は多くの Cloudflare 製品で共通です。GraphQL、レート制限、フィルター、ソートの詳細は Cloudflare GraphQL Analytics API のドキュメント を参照してください。
-
Cloudflare ダッシュボードで Account API tokens ページを開きます。
Account API tokens を開く ↗ -
Account Analytics 権限付きの API トークンを発行します。
-
任意の GraphQL クライアントで最初のクエリを実行します。Postman ↗ には組み込みの GraphQL クライアントがあり、最初のクエリ実行と、GraphQL スキーマのイントロスペクションに使えます。
利用できる指標、ディメンション、フィールド、クエリ例は、以降のセクションを参照してください。
Stream は、Stream Player を使うかどうかにかかわらず、HLS または DASH で再生されたすべてのライブ動画とオンデマンド動画について、視聴者へ配信した動画の分数を収集します。
| Field | Description |
|---|---|
date |
日付 |
datetime |
DateTime |
uid |
動画の UID |
clientCountryName |
動画を視聴したクライアントの ISO 3166 alpha2 国コード |
creator |
各動画に関連付けられた Creator ID(ある場合) |
date などの一部のフィルターは、下のクエリ例のように gt(より大きい)や lt(より小さい)などの演算子と組み合わせて使えます。より高度なフィルターは フィルタリング を参照してください。
| Node | Field | Description |
|---|---|---|
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 はシークページネーションに対応しています。フィルターで最後の動画 UID を指定すると、その UID より後の動画のデータだけが返ります。
次のクエリは、動画 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フィルターなしで最初のクエリを呼び、最初の動画セットを取得します- 最初のクエリのレスポンスから、最後の動画 UID を取り出します
uid_gtプロパティに最後の動画 UID を指定して次のクエリを呼びます。次の動画セットが返ります
ページネーションの詳細は Cloudflare GraphQL Analytics API のドキュメント を参照してください。
- 1 回のクエリで指定できる最大照会期間は 31 日です
- データの最大保持期間は 90 日です