New RelicのStreaming Video & Adsは、動画コンテンツのパフォーマンスとユーザー体験を深く理解するための強力なツールです。
この記事ではこの機能で収集しているイベントデータの詳細と、これを基に計算される動画品質における主要な指標の意味を解説します。
ちなみに、Streaming Video & Adsで動画を計装する方法については以下のブログで書いているので参考にご確認ください。
1. 収集されるイベントデータ
Streaming Video & Adsでは、ビデオストリーミングに関わる様々なアクションをVideoAction
とVideoErrorAction
というイベントデータとして記録します。このイベントデータによって、ユーザーがビデオプレイヤーで行うアクションや、再生中に発生する問題を詳細に捉えることができます。
アクションごとのイベントデータ
動画の再生は、単一の事象ではなく、以下のような一連のイベントによって成り立っています。New Relicは、以下のタイミングでイベントを生成します。
-
PLAYER_READY
: プレイヤーがイベントの送信を開始する準備ができた時点 -
DOWNLOAD
: コンテンツデータのダウンロード中 -
CONTENT_REQUEST
: コンテンツビデオがリクエストされた時点 -
CONTENT_START
: コンテンツビデオが開始された時点(最初のフレームが表示された時点) -
CONTENT_END
: コンテンツビデオが終了した時点 -
CONTENT_PAUSE
: コンテンツビデオが一時停止された時点 -
CONTENT_RESUME
: コンテンツビデオが再開された時点 -
CONTENT_SEEK_START
: コンテンツビデオのシーク(スキップ)が開始された時点 -
CONTENT_SEEK_END
: コンテンツビデオのシークが終了した時点 -
CONTENT_BUFFER_START
: コンテンツビデオのバッファリングが開始された時点 -
CONTENT_BUFFER_END
: コンテンツビデオのバッファリングが終了した時点 -
CONTENT_HEARTBEAT
: ビデオ再生中に30秒ごとに発生
これらのイベントは主にVideoAction
イベントとして収集され、再生中のエラーについてはVideoErrorAction
イベントとして記録されます。
要するに動画再生中に何かイベントが発生すればそのタイミングで記録されて、何もなく再生が続いている場合は、CONTENT_HEARTBEAT
で30秒ごとに情報を収集する仕組みです。
2. イベントに付随する属性データ
VideoAction
やVideoErrorAction
には、アクションの詳細を把握するための様々な属性が付与されています。これらの属性を分析することで、問題の根本原因を特定したり、ユーザーセグメントごとのパフォーマンスを比較したりすることができます。もしコンテキストが不足している場合はプレイヤーから取得できる情報である限り、カスタム属性として計装を追加することも可能です。ユーザーIDなどはデフォルトでは収集されないので必要に応じて追加しましょう。
ユーザーに関する属性
視聴者の環境に関する情報を提供する属性の例として以下のようなものがあります。視聴者環境の属性ごとでFACET
しながら分析すると、問題の切り分けができます。
-
deviceType
: デバイスの種類 (mobile
,desktop
,tv
など) -
osName
: オペレーティングシステム (iOS
,Android
,Windows
など) -
playerName
: 使用されているビデオプレイヤーのバージョン -
asnOrganization
: ISP -
viewSession
: New Relicのトラッカーが付与するセッションを一意に識別するID
*これら以外の属性も多数収集されています。
再生に関する属性
視聴者の環境に関する属性の他には、ビデオコンテンツ自体や再生状況に関する情報を提供します。これらの情報から動画品質を分析するための指標を計算できます。
-
contentTitle
: 視聴されているコンテンツの名前 -
contentSrc
: コンテンツのマニフェストファイルへのリンク -
contentBitrate
: 現在のビットレート -
timeSinceRequest
: ビデオがリクエストされてからの経過時間 -
timeSinceBufferBegin
: バッファリングが始まってからの経過時間
*これら以外の属性も多数収集されています。
3. イベントデータから重要指標を算出する
Streaming Video & Adsのキュレーテッドダッシュボードに表示される指標は、これらのイベントデータを基に計算されています。
このセクションでは、特に重要な6つの指標について、その意味と計算方法を詳しく解説します。
Rebuffering ratio
Rebuffering ratioは、再生中に発生したバッファリング時間の総計を、再生時間の総計で割った割合です。この数値が高いほど、ユーザーは頻繁な再生の途切れを経験していることになります。ここでは再生開始時のバッファ(必ず発生する)は除外して、再生中に発生したものに絞って計算しています。
NRQL:
FROM VideoAction SELECT 100 * filter(sum(timeSinceBufferBegin), WHERE actionName = 'CONTENT_BUFFER_END' AND bufferType = 'connection') / (filter(sum(playtimeSinceLastEvent), WHERE contentPlayhead > 0) + filter(sum(timeSinceBufferBegin), WHERE actionName = 'CONTENT_BUFFER_END' AND bufferType = 'connection')) as 'Buffer Ratio(%)' TIMESERIES SINCE 5 minutes ago UNTIL now
Video Attempts
Video Attemptsは、ユーザーがビデオ再生を試みた回数です。再生の成否にかかわらずカウントされます。動画がリクエストされたセッションのユニーク数をカウントしています。
NRQL:
FROM VideoAction SELECT uniqueCount(viewId) as 'Video attempts' WHERE actionName = 'CONTENT_REQUEST' TIMESERIES SINCE 5 minutes ago UNTIL now
Avg. bitrate
Avg. bitrateは、ビデオ再生中に提供されたコンテンツの平均ビットレートです。再生開始(timeSinceStarted
)から時間経過があるイベントの平均値で算出します。再生されている解像度によって適正なビットレートがあるため、contentRendition
と組み合わせて見ると良いでしょう(contentRendition
はHighとWidthを別の属性として収集しています)
NRQL:
FROM VideoAction SELECT average(contentBitrate/(1000000)) as 'Avg Bitrate(Mbps)' WHERE timeSinceStarted > 1 TIMESERIES SINCE 5 minutes ago UNTIL now
Avg. start time
Avg. start timeは、再生ボタンがクリックされてからビデオが実際に始まるまでの平均時間です。この遅延は、ユーザーの離脱に直結する重要な指標です。動画再生が始まったことを意味するイベント(CONTENT_START
)に含まれる動画リクエストされてからの経過時間(timeSinceRequested
)の平均値で求めます。
NRQL:
FROM VideoAction SELECT average(timeSinceRequested / 1000) as 'Avg start time' WHERE actionName = 'CONTENT_START' TIMESERIES SINCE 5 minutes ago UNTIL now
Video start failure
Video start failureは、再生を試みたものの、開始できなかった失敗の総数です。これは、再生開始時の深刻な問題を特定するのに役立ちます。これはエラーが記録されているイベントで再生時間が0のものを数えると算出できます。
NRQL:
FROM VideoErrorAction SELECT uniqueCount(viewId) as 'Start failures' WHERE actionName = 'CONTENT_ERROR' AND timeSinceStarted IS NULL TIMESERIES SINCE 5 minutes ago UNTIL now
Video playback failure
Video playback failureは、再生中に発生したエラーの回数です。
NRQL:
FROM VideoAction SELECT uniqueCount(viewId) as 'Playback failures' WHERE actionName = 'CONTENT_END' AND timeSinceLastError < 1000 AND timeSinceStarted > 0 TIMESERIES SINCE 5 minutes ago UNTIL now
4. まとめ
New RelicのStreaming Video & Adsがどのようなデータを使っているのかご理解いただけたのではないでしょうか?キュレーテッドのダッシュボードで多くの情報を得ることができますが、もしも独自の分析が必要になった場合はこれらの情報を基に必要なクエリを考えてみてください。Streaming Video & Ads以外でも同じですが、NRQLはかなり柔軟にデータを分析することが出来るので、動画品質についても様々な視点から分析し、ユーザー満足度を高めるためのインサイトを得ることができます。
その他
New Relicでは、新しい機能やその活用方法について、QiitaやXで発信しています!
無料でアカウント作成も可能なのでぜひお試しください!
New Relic株式会社のQiita Organizationでは、
新機能を含む活用方法を公開していますので、ぜひフォローをお願いします。
無料のアカウントで試してみよう!
New Relic フリープランで始めるオブザーバビリティ!