New RelicのStreaming Video & Adsモニタリングは、動画配信での視聴体験分析を可視化するための強力なツールです。しかし、プラットフォームやコンテンツの特性に合わせたより深い分析を行うには、デフォルトで取得されるデータだけでは不十分なケースがあります。
Streaming Video & Adsで取得されるデータは以下をご確認ください。
New RelicのVideo trackerは、動画の再生開始、バッファリング、エラー発生といった基本的なイベントと、それらにかかる時間などのメトリクスを自動で収集します。これは、全体的な視聴体験の健全性を把握する上で不可欠です。
しかし、ビジネス的なインサイトや問題の根本原因を詳細に分析するためには、詳細な視聴情報が必要です。例えば、「特定のCDN利用時のバッファリング発生率」や「DRM有無による視聴開始エラー率」、「プレイヤーバージョンごとの動画品質比較」といった、セグメントごとの詳細な分析が可能になります。この他、コンテンツタイトル、エンコーディングプロファイル、視聴ユーザーIDなど、動画配信の特性に関わるデータが想定されます。
Video Trackerにおけるカスタム属性の計装方法
New Relic Video Trackerにカスタム属性を設定する方法は、WebページのBrowser Agentとは異なるAPIを使用します。また設定のタイミングによって使い分けが必要です。
New Relic Video Trackerが未導入で動画品質のデータがまだ取得できていない場合は、以下を参考にまずはインストールしてみましょう。
Browser AgentとVideo Trackerでの計装の違い
カスタム属性の設定を行う前に、スコープの違いを理解することが重要です。
-
Browser Agent :
setCustomAttributeを使用します。設定された属性は、Browserイベントに適用されます。 - Video Tracker : 後述する方法で計装します。設定された属性は、Video関連イベント(VideoAction, VideoErrorAction, VideoAdAction, VideoAdErrorAction)のみに適用されます。
Video Trackerでのカスタム属性計装方法
Video Trackerへのカスタム属性設定は、トラッカーインスタンスの customData プロパティを介して行います。
設定を行うタイミングによって、以下の2つの方法を使い分けます。
トラッカー初期化時
トラッカーインスタンスを生成する際に、固定の属性や、事前に確定している初期値を設定する場合に使用します。以下はVideo.jsの例です。
const tracker = new VideojsjsTracker(player, {
customData: {
customPlayerName: 'myGreatPlayer',
customPlayerVersion: 'x.x.x',
},
});
実行時(初期化後)
ユーザーIDの取得後や、動画が選択されメタデータが動的に確定した後など、値が動的に変更・確定するタイミングで属性を更新する場合に使用します。以下はcontentTitleという属性を追加する例です。
tracker.customData.contentTitle = title;
デモ環境実装例に見るカスタム属性の取得と設定
デモ環境での計装の例をみてみましょう。このデモ環境では、動画再生に必要な各種メタデータやユーザー情報が以下のフローで取得・準備されます。
動画メタデータ: 静的ファイル(data/videoMetadata.json)が擬似的なCMSサーバのデータソースとして、APIを介してクライアント側にロードされます。

メタデータとして以下のJSONファイルを配置しています。
[
{
"name": "Sample HLS Video",
"contentTitle": "ローカル検証用 - HLS動画サンプル",
"contentID": "CID_1001",
"contentType": "movie",
"encodingProfile": "H.264_720p",
"drmUsed": "None",
"cdnProvider": "Local_Express",
"manifestUrl": "/videos/sample-hls/manifest.m3u8"
},
]
カスタム属性設定のサンプルコード
動的な属性(ユーザーID、動画メタデータ)は、動画が選択された後、事前に抽出されたqoeMetadataオブジェクトから属性を設定しています。
// 動画メタデータを取り込み
tracker.customData.contentTitle = qoeMetadata.videoTitle; //
tracker.customData.contentID = qoeMetadata.contentID; //
tracker.customData.contentType = qoeMetadata.contentType; //
tracker.customData.encodingProfile = qoeMetadata.encodingProfile; //
tracker.customData.drmUsed = qoeMetadata.drmUsed; //
tracker.customData.cdnProvider = qoeMetadata.cdnProvider; //
カスタム属性を活用した分析例:コンテンツごとのバッファリングレート確認
カスタム属性が計装されると、動画品質に関するデータであるVideoActionに属性が追加されます。NRQL(New Relic Query Language)でこれらのカスタム属性を利用して、より詳細な分析が可能になります。ここでは動画タイトル(カスタム属性: contentTitle)ごとのスタートアップエラーのレート(再生開始時のエラー)を確認してみましょう。
NQLクエリ例
FROM VideoAction, VideoErrorAction
SELECT filter(uniqueCount(viewId), WHERE actionName = 'CONTENT_ERROR' AND timeSinceStarted IS NULL AND entity.guid = 'your entity.guid') / filter(uniqueCount(viewId) , WHERE entity.guid = 'your entity.guid') as 'Start failures'
FACET contentTitle
TIMESERIES SINCE 5 minutes ago UNTIL now
スタートアップエラーが特定の動画コンテンツに起因して発生いるかを確認できました。コンテンツに問題がある場合は、さらにその動画コンテンツにフォーカスしてトラブルシュートすることができます。
ちなみに今回の結果ではコンテンツに起因した問題ではなさそうですね。
この他よくあるユースケースとしては、プレイヤーのバージョン(上記の例ではcustomPlayerVersion)ごとで動画品質に差があるかを分析することもできます。
まとめ
New Relic Streaming Video & Adsのカスタム属性計装は、静的な動画メタデータや技術情報と、動的なユーザー情報を組み合わせることで、包括的な動画品質を計測できます。
これによりNew Relic上で「どのコンテンツを」「誰が」「どの技術的条件下で」視聴したかという背景情報と共に、「どのような視聴体験が発生したか」というような詳細な分析が可能になります。
動画品質に関連したデータも取り込んで視聴体験の高い動画配信サービスを実現しましょう。
その他
New Relicでは、新しい機能やその活用方法について、QiitaやXで発信しています!
無料でアカウント作成も可能なのでぜひお試しください!
New Relic株式会社のQiita Organizationでは、
新機能を含む活用方法を公開していますので、ぜひフォローをお願いします。
無料のアカウントで試してみよう!
New Relic フリープランで始めるオブザーバビリティ!

