SlideShare a Scribd company logo
1 of 13
Download to read offline
動画視聴ビーコンを
Azure Event Hubに入れて
Power BIで解析
~ブラウザから Azure Event/IoT Hubを叩く方法~
IoT LT 36
2018年2月14日
鍋島 公章
• 動画ストリーミングの視聴解析
• ビーコン型解析が主流
• 再生開始(playing)
• 再生中(timeupdate)
• 終了(ended)等
• 専用の解析系:Adobe、ベンチャー系
• 発展途上
• 汎用解析系にビーコン入れてみた
• Azureで上手く行った:今回のお話
• ブラウザから Event/IoT Hubを叩く方法
• 詳細について
• ストリーミング視聴解析の基礎セミナー
• 3月15日(木)、Jストリーム本社(芝公園)
本日のお話(アウトライン)
HTML5
Video
Player
視聴解析サーバ
ストリーミング
サーバ
動画
ビーコン
ブラウザ
• Amazon AWS: 柔軟だが作りこみが大変
• Microsoft Azure: 動けば一番簡単
• 課題:ブラウザからEvent/IoT Hubへのイベント投入
• Javascriptのクロスドメイン問題
• Javascriptによるアクセスキー(Shared Access Signatures, SAS) 生成
解析環境と課題
• 概要
• ブラウザは、Javscriptをダウンロードしたドメインのみに通信を許す
• 他ドメインへの通信
• 無条件に許すとセキュリティ上問題(悪意を持ったJavascriptはやりたい放題)
• 通信先が明示的にCORS(Cross-Origin Resource Sharing)ヘッダを送信
• 課題
• Event hub, IoT HubともにCORSをサポートせず
ブラウザJavascriptのクロスドメイン問題
HTML5
Video
Player
視聴解析サーバ
ストリーミング
サーバ
動画
ビーコン
Player.js
HTTPレスポンス(CORSヘッダ)
Access-Control-Allow-Origin "*"
Access-Control-Allow-Headers "Content-Type,Authorization"
• 環境
Azure ビッグデータ
Function
Apps
HTML5
Video
Player
Event
Hub
Streaming
Analytics
Job
Time
Series
Insight
SQL
Server
Power
BI
Storage
Reverse Proxy イベント受付
バッファ
リアルタイム
処理 (SAQL)
生データ保存簡易グラフ
ビジネス
インテリジェンス
データベース
CORSヘッダ生成
(クロスドメイン対応)SAS生成
• 基本設定
• かませるだけ(パススルー)
Function Apps Proxy
Event Hub URL
Function Apps Proxy URL
• クロスドメイン(CORS)設定
Function Apps Proxy
*設定(無条件に許可)
• Javascriptコード
• var getSAS = function(keyName, key, endPoint) {
• var expiry = Math.floor(new Date().getTime() / 1000) + 3600 ;
• var encodedURI = encodeURIComponent(endpoint)
• var $str2 = encodedURI + "¥n" + expiry;
• var sha256 = new jsSHA('SHA-256', 'TEXT');
• sha256.setHMACKey(key,'TEXT');
• sha256.update($str2);
• var sig = sha256.getHMAC('B64');
• sig = encodeURIComponent(sig);
• var sas = “SharedAccessSignature sig=“ + sig + “&se=“ +
expiry+”&skn=“+keyName+”&sr=“ + encodedURI;
• return sas;
• }
SAS (Shared Access Signature)
• 送信部分
• var sas = getSAS("player“,
"Ak3t2SuZY2EqNkj6LCjMkxKgGHPHwl16UKjFVfzQebE=",
"https://xxx.servicebus.windows.net/video/publishers/player/messages";);
• var xmlHttpRequest = new XMLHttpRequest();
• $target = "https://xxx.azurewebsites.net/video/publishers/player/messages";
• xmlHttpRequest.open("POST", $target, true);
• xmlHttpRequest.setRequestHeader('Content-
Type',"application/atom+xml;type=entry;charset=utf-8");
• xmlHttpRequest.setRequestHeader("Authorization", sas);
• xmlHttpRequest.send(JSON.stringify(data));
イベント送信(REST)
Event Hub URL
Function Apps Proxy URL
Key Name Key
Authorization Header
• 簡易グラフ
Time Series Insight
イベント毎の発生回数を表示
• リアルタイム解析
• 例
• 同時接続数
• 再生開始数
• 再生終了数
• SAQL
• Stream
Analytics
Query
Language
Streaming Analytics Job
SAQLによる分析
• ビジネスインテリジェンス
• 各種グラフ、解析
Power BI
青:再生開始
黄色:同時接続数
ピンク:再生終了
• 日時
• 2018年3月15日(木)16:00~17:30 (受付開始 15:45)
• 会場
• 株式会社Jストリーム 7階(東京都港区芝2-5-6 芝256スクエアビル)
• 内容
• プレイヤーの内部イベント詳細(HTML5およびVideo.jsを題材)
• プレイヤーにおけるビーコン生成方法
• 汎用イベント管理システム(Microsoft Azure Event/IoT Hub)におけるビーコン
受付方法
• 汎用ビックデータ解析プラットフォーム(Microsoft Time Series Insight、Power
BI)によるイベントの可視化および解析方法
• MQTTによるバックエンドとプレイヤーの両方向接続
• 申し込み
• https://connpass.com/event/79604/
ストリーミング視聴解析の基礎セミナー

More Related Content

More from Masaaki Nabeshima

サイマルキャスト コストと可能性についての考察
サイマルキャスト コストと可能性についての考察サイマルキャスト コストと可能性についての考察
サイマルキャスト コストと可能性についての考察Masaaki Nabeshima
 
ストリーミング視聴解析の基本とその応用 IPv4・IPv6デュアルソース
ストリーミング視聴解析の基本とその応用 IPv4・IPv6デュアルソースストリーミング視聴解析の基本とその応用 IPv4・IPv6デュアルソース
ストリーミング視聴解析の基本とその応用 IPv4・IPv6デュアルソースMasaaki Nabeshima
 
海賊版対策:CDN事業者からの視点
海賊版対策:CDN事業者からの視点海賊版対策:CDN事業者からの視点
海賊版対策:CDN事業者からの視点Masaaki Nabeshima
 
ストリーミング視聴解析の分類(ドラフト20180718)
ストリーミング視聴解析の分類(ドラフト20180718)ストリーミング視聴解析の分類(ドラフト20180718)
ストリーミング視聴解析の分類(ドラフト20180718)Masaaki Nabeshima
 
ストリーミング用マルチCDN
ストリーミング用マルチCDNストリーミング用マルチCDN
ストリーミング用マルチCDNMasaaki Nabeshima
 
ストリーミング視聴解析の基礎セミナー(続き)
ストリーミング視聴解析の基礎セミナー(続き)ストリーミング視聴解析の基礎セミナー(続き)
ストリーミング視聴解析の基礎セミナー(続き)Masaaki Nabeshima
 
プレイヤーサイド・マルチCDN
プレイヤーサイド・マルチCDNプレイヤーサイド・マルチCDN
プレイヤーサイド・マルチCDNMasaaki Nabeshima
 
Video analytics seminar 2018
Video analytics seminar 2018Video analytics seminar 2018
Video analytics seminar 2018Masaaki Nabeshima
 
CDNとCDSPビジネスの動向と展望
CDNとCDSPビジネスの動向と展望CDNとCDSPビジネスの動向と展望
CDNとCDSPビジネスの動向と展望Masaaki Nabeshima
 
ストリーミングCDN2002
ストリーミングCDN2002ストリーミングCDN2002
ストリーミングCDN2002Masaaki Nabeshima
 
ストリーミングCDN2001
ストリーミングCDN2001ストリーミングCDN2001
ストリーミングCDN2001Masaaki Nabeshima
 
キャッシュサーバ運用技術
キャッシュサーバ運用技術キャッシュサーバ運用技術
キャッシュサーバ運用技術Masaaki Nabeshima
 

More from Masaaki Nabeshima (20)

サイマルキャスト コストと可能性についての考察
サイマルキャスト コストと可能性についての考察サイマルキャスト コストと可能性についての考察
サイマルキャスト コストと可能性についての考察
 
ストリーミング視聴解析の基本とその応用 IPv4・IPv6デュアルソース
ストリーミング視聴解析の基本とその応用 IPv4・IPv6デュアルソースストリーミング視聴解析の基本とその応用 IPv4・IPv6デュアルソース
ストリーミング視聴解析の基本とその応用 IPv4・IPv6デュアルソース
 
IPv4 IPv6 Media Player
IPv4 IPv6 Media PlayerIPv4 IPv6 Media Player
IPv4 IPv6 Media Player
 
IPv6 Survey 2019 Dec Update
IPv6 Survey 2019 Dec UpdateIPv6 Survey 2019 Dec Update
IPv6 Survey 2019 Dec Update
 
JP Web Sites IPv6 Survey
JP Web Sites IPv6 SurveyJP Web Sites IPv6 Survey
JP Web Sites IPv6 Survey
 
IPv6 Survey 2019
IPv6 Survey 2019IPv6 Survey 2019
IPv6 Survey 2019
 
海賊版対策:CDN事業者からの視点
海賊版対策:CDN事業者からの視点海賊版対策:CDN事業者からの視点
海賊版対策:CDN事業者からの視点
 
ストリーミング視聴解析の分類(ドラフト20180718)
ストリーミング視聴解析の分類(ドラフト20180718)ストリーミング視聴解析の分類(ドラフト20180718)
ストリーミング視聴解析の分類(ドラフト20180718)
 
ストリーミング用マルチCDN
ストリーミング用マルチCDNストリーミング用マルチCDN
ストリーミング用マルチCDN
 
ストリーミング視聴解析の基礎セミナー(続き)
ストリーミング視聴解析の基礎セミナー(続き)ストリーミング視聴解析の基礎セミナー(続き)
ストリーミング視聴解析の基礎セミナー(続き)
 
ISP CDN draft2
ISP CDN draft2ISP CDN draft2
ISP CDN draft2
 
プレイヤーサイド・マルチCDN
プレイヤーサイド・マルチCDNプレイヤーサイド・マルチCDN
プレイヤーサイド・マルチCDN
 
Video mqtt
Video mqttVideo mqtt
Video mqtt
 
Video analytics seminar 2018
Video analytics seminar 2018Video analytics seminar 2018
Video analytics seminar 2018
 
CDNの必要性と将来性
CDNの必要性と将来性CDNの必要性と将来性
CDNの必要性と将来性
 
CDNとCDSPビジネスの動向と展望
CDNとCDSPビジネスの動向と展望CDNとCDSPビジネスの動向と展望
CDNとCDSPビジネスの動向と展望
 
P2P型CDN
P2P型CDNP2P型CDN
P2P型CDN
 
ストリーミングCDN2002
ストリーミングCDN2002ストリーミングCDN2002
ストリーミングCDN2002
 
ストリーミングCDN2001
ストリーミングCDN2001ストリーミングCDN2001
ストリーミングCDN2001
 
キャッシュサーバ運用技術
キャッシュサーバ運用技術キャッシュサーバ運用技術
キャッシュサーバ運用技術
 

Recently uploaded

Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 

Recently uploaded (9)

Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 

動画視聴ビーコンを Azure Event Hubに入れて Power BIで解析

  • 1. 動画視聴ビーコンを Azure Event Hubに入れて Power BIで解析 ~ブラウザから Azure Event/IoT Hubを叩く方法~ IoT LT 36 2018年2月14日 鍋島 公章
  • 2. • 動画ストリーミングの視聴解析 • ビーコン型解析が主流 • 再生開始(playing) • 再生中(timeupdate) • 終了(ended)等 • 専用の解析系:Adobe、ベンチャー系 • 発展途上 • 汎用解析系にビーコン入れてみた • Azureで上手く行った:今回のお話 • ブラウザから Event/IoT Hubを叩く方法 • 詳細について • ストリーミング視聴解析の基礎セミナー • 3月15日(木)、Jストリーム本社(芝公園) 本日のお話(アウトライン) HTML5 Video Player 視聴解析サーバ ストリーミング サーバ 動画 ビーコン ブラウザ
  • 3. • Amazon AWS: 柔軟だが作りこみが大変 • Microsoft Azure: 動けば一番簡単 • 課題:ブラウザからEvent/IoT Hubへのイベント投入 • Javascriptのクロスドメイン問題 • Javascriptによるアクセスキー(Shared Access Signatures, SAS) 生成 解析環境と課題
  • 4. • 概要 • ブラウザは、Javscriptをダウンロードしたドメインのみに通信を許す • 他ドメインへの通信 • 無条件に許すとセキュリティ上問題(悪意を持ったJavascriptはやりたい放題) • 通信先が明示的にCORS(Cross-Origin Resource Sharing)ヘッダを送信 • 課題 • Event hub, IoT HubともにCORSをサポートせず ブラウザJavascriptのクロスドメイン問題 HTML5 Video Player 視聴解析サーバ ストリーミング サーバ 動画 ビーコン Player.js HTTPレスポンス(CORSヘッダ) Access-Control-Allow-Origin "*" Access-Control-Allow-Headers "Content-Type,Authorization"
  • 5. • 環境 Azure ビッグデータ Function Apps HTML5 Video Player Event Hub Streaming Analytics Job Time Series Insight SQL Server Power BI Storage Reverse Proxy イベント受付 バッファ リアルタイム 処理 (SAQL) 生データ保存簡易グラフ ビジネス インテリジェンス データベース CORSヘッダ生成 (クロスドメイン対応)SAS生成
  • 6. • 基本設定 • かませるだけ(パススルー) Function Apps Proxy Event Hub URL Function Apps Proxy URL
  • 7. • クロスドメイン(CORS)設定 Function Apps Proxy *設定(無条件に許可)
  • 8. • Javascriptコード • var getSAS = function(keyName, key, endPoint) { • var expiry = Math.floor(new Date().getTime() / 1000) + 3600 ; • var encodedURI = encodeURIComponent(endpoint) • var $str2 = encodedURI + "¥n" + expiry; • var sha256 = new jsSHA('SHA-256', 'TEXT'); • sha256.setHMACKey(key,'TEXT'); • sha256.update($str2); • var sig = sha256.getHMAC('B64'); • sig = encodeURIComponent(sig); • var sas = “SharedAccessSignature sig=“ + sig + “&se=“ + expiry+”&skn=“+keyName+”&sr=“ + encodedURI; • return sas; • } SAS (Shared Access Signature)
  • 9. • 送信部分 • var sas = getSAS("player“, "Ak3t2SuZY2EqNkj6LCjMkxKgGHPHwl16UKjFVfzQebE=", "https://xxx.servicebus.windows.net/video/publishers/player/messages";); • var xmlHttpRequest = new XMLHttpRequest(); • $target = "https://xxx.azurewebsites.net/video/publishers/player/messages"; • xmlHttpRequest.open("POST", $target, true); • xmlHttpRequest.setRequestHeader('Content- Type',"application/atom+xml;type=entry;charset=utf-8"); • xmlHttpRequest.setRequestHeader("Authorization", sas); • xmlHttpRequest.send(JSON.stringify(data)); イベント送信(REST) Event Hub URL Function Apps Proxy URL Key Name Key Authorization Header
  • 10. • 簡易グラフ Time Series Insight イベント毎の発生回数を表示
  • 11. • リアルタイム解析 • 例 • 同時接続数 • 再生開始数 • 再生終了数 • SAQL • Stream Analytics Query Language Streaming Analytics Job SAQLによる分析
  • 12. • ビジネスインテリジェンス • 各種グラフ、解析 Power BI 青:再生開始 黄色:同時接続数 ピンク:再生終了
  • 13. • 日時 • 2018年3月15日(木)16:00~17:30 (受付開始 15:45) • 会場 • 株式会社Jストリーム 7階(東京都港区芝2-5-6 芝256スクエアビル) • 内容 • プレイヤーの内部イベント詳細(HTML5およびVideo.jsを題材) • プレイヤーにおけるビーコン生成方法 • 汎用イベント管理システム(Microsoft Azure Event/IoT Hub)におけるビーコン 受付方法 • 汎用ビックデータ解析プラットフォーム(Microsoft Time Series Insight、Power BI)によるイベントの可視化および解析方法 • MQTTによるバックエンドとプレイヤーの両方向接続 • 申し込み • https://connpass.com/event/79604/ ストリーミング視聴解析の基礎セミナー