2016 年六月

第 31 卷,第 6 期

本文章是由機器翻譯。

Power BI - Microsoft Azure 媒體服務與 Power BI

Sagar Bhanudas Bhanudas |2016 年 6 月

Microsoft Azure 媒體服務提供豐富的平台開發人員和獨立軟體廠商透過 Web 和原生應用程式傳遞點播視訊及即時資料流的經驗。豐富的消費者體驗,並深入了解內容/應用程式使用方式,是分析和資料視覺效果的後端中逐漸強大的跨平台解決方案。撰寫本文時,Azure 媒體服務平台並未提供內建的; 分析因此,開發人員永遠挑戰的商務需求使用量資料分析的立場。

本文章聚焦於協助開發人員於 Azure 媒體服務 (與播放器) 上建置分析平台,讓使用方式趨勢顯現出來。方案空間包括中繼 (Web API) 的服務及資料庫的使用方式,以及累積的 Power BI 視覺效果。

案例

大部分的建立/內嵌媒體內容的組織需要深入的使用情況/分析資料工作,則使用者體驗。若要達到此目的,開發人員需要其視訊/媒體耗用量與相關的關鍵效能指標 (Kpi) 的一些記錄。以下是一些最常見且令人滿意的 Kpi:

  • 這是最監看的影片?
  • 有多少人會保存到完成為止的視訊?
  • 多少次是視訊已暫停,且在哪個位置?
  • 這是最資料流處理的格式/位元速率?
  • 平台資訊及其他統計詳細資料。

為了讓您決定服務和工具,幫助您提供這些 Kpi 的適當組合,很長一段時間和精力花在註冊時建立全新的每個元件或建置經過實證的平台服務之上。

謝天謝地,在 Azure 雲端平台有一組豐富的服務,可用來擷取和地址的分析需求的整體解決方案設計的。此案例中,將使用下列元件 ︰

  • Azure 媒體服務
  • Azure Media Player
  • Azure Web 應用程式
  • Azure SQL Database
  • Power BI

這意思是擷取 Azure Media Player 從原始資料,並送回中介層 (Web API),這不會使用受管理的 (報告) 的 Azure SQL database 連接的代理人。然後,您會連接 Power BI 中呈現出媒體/方面的耗用量透過視覺效果的趨勢的報告資料庫的資料來源。

本文中的其他章節將詳細說明啟用此案例的實際實作。

動態封裝和視訊的耗用量的準備

使用 Azure 媒體服務的棒的是您可以採取視訊/音訊內容,並準備在各種平台上使用。您可以達成此目的使用 Azure 入口網站,或從程式碼執行相同的步驟,如果您需要自動化步驟/方案。案例的這個章節會討論下列工作 ︰

  • 識別的內容 (在此情況下,我將選擇示範的視訊內容),供隨選
  • 將視訊上傳到 Azure 媒體服務 (Azure 儲存體帳戶所支援)
  • 監視上傳進度,並提交動態封裝工作
  • 取得在各種平台上使用相關的 Url

我將使用 Azure 的範例位於 bit.ly/22Iy1ST 若要開始使用 C# 主控台應用程式實現這些工作。雖然這個範例會利用 NuGet 封裝和 C# 程式,您可以使用其他語言,也可以使用 Sdk。最重要的程式碼來提交編碼的視訊,並取得 Url 中所示 [圖 1

圖 1 的程式碼以提交編碼工作

static public IAsset EncodeToAdaptiveBitrateMP4s(IAsset asset,
    AssetCreationOptions options)
{
  IJob job = _context.Jobs.CreateWithSingleTask(
    "Media Encoder Standard",
    "H264 Multiple Bitrate 720p",
    asset,
    "Adaptive Bitrate MP4",
    options);
  Console.WriteLine("Submitting transcoding job...");
  job.Submit();
  job = job.StartExecutionProgressTask(
  j =>
    {
      Console.WriteLine("Job state: {0}", j.State);
      Console.WriteLine("Job progress: {0:0.##}%",
        j.GetOverallProgress());
    },
    CancellationToken.None).Result;
  Console.WriteLine("Transcoding job finished.");
  IAsset outputAsset = job.OutputMediaAssets[0];
  return outputAsset;
}

如果您是 Azure 媒體服務的新手,以下是快速既定的清單 ︰

  • 資產 (或 IAsset),代表 Azure 媒體服務的媒體套件實體。它可能包含一個或多個內容檔案。
  • 工作 (或 IJob),代表要執行的 Azure 媒體服務的 「 編碼 」 工作單位實體。將它視為將檔案從一種格式轉換成另一個。
  • 調適性位元速率-編碼的格式,以配合目標系統的 CPU/網路功能,並且傳遞內容的最佳花色的準則相符的裝置。您只需要建立彈性位元速率檔案,Azure 媒體服務會識別要串流處理到用戶端裝置的右位元速率。

現在,拼湊中的程式碼從 [圖 1, ,函式將提交至媒體服務標準編碼器來轉換來源格式調適性位元速率 MP4 資產為 「 資產 」。

此範例也會顯示工作進度,或您可以追蹤它透過 Azure 入口網站中所示 [圖 2 「 工作 」 一節。(我已變成空白 ID 欄位值。)

Azure 媒體服務範例,示範工作進度
[圖 2 Azure 媒體服務範例顯示工作進度

既然您已成功建立媒體資產準備跨裝置和平台,您必須讓 Azure 媒體服務知道目標裝置的平台,使其可以串流處理正確的編碼方式和內容的格式。例如,Windows 裝置通常支援播放 Silverlight Smooth Streaming 格式 ︰

http://testendpoint-testaccount.streaming.mediaservices.windows.net/fecebb23-46f6-490d-8b70-203e86b0df58/­assetvideo.ism/Manifest

在 iOS 裝置支援 HLS 視訊格式及其他 ︰

http://testendpoint-testaccount.streaming.mediaservices.­windows.net/fecebb23-46f6-490d-8b70-203e86b0df58/­assetvideo.ism/Manifest(format=m3u8-aapl-v3)

請注意結尾的幾個字母的 url 會附加後 「 資訊清單 」。 這些格式表示法說明 Azure 媒體服務端點會識別要串流處理到裝置內容的格式。您現在已準備好串流處理至裝置的媒體,讓我們建立 HTML 網頁使用透過 Azure Media Player 的視訊 (bit.ly/1SQ8Rwr)。

取用媒體,並將分析資料傳送至後端

Azure Media Player 是補充的用戶端上的 Azure 媒體服務內容播放網頁視訊播放器。適用於基礎的瀏覽器平台 (主要是從 Azure 媒體服務) 轉譯視訊內容以 JavaScript 程式碼中的最小組態。不過,目標是不只播放媒體,也可讓衍生的使用方式分析資料並將其記錄至後端。由於目標是要檢視彙總的資料分析的解決方案的尾端,我將著重只在特定數目的記錄; 參數例如,識別項的視訊內容、 視訊、 暫停的時間、 時間戳記和額外的註解資料的標題。

因此,播放程式的 HTML 程式碼看起來像這樣 [圖 3

[圖 3 的 HTML 前端程式碼

<!DOCTYPE html>
<html>
<head>
  <title>Welcome to the awesome world of Azure Media Services</title>
  <link href="http://amp.azure.net/libs/amp/1.6.3/skins/amp-default/
    azuremediaplayer.min.css"
    rel="stylesheet">
  <script src="http://amp.azure.net/libs/amp/1.6.3/azuremediaplayer.min.
    js"></script>
  <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.2.1.min.
    js"></script>
    <meta charset="utf-8" />
</head>
<body>
  <video id="azuremediaplayer" class="azuremediaplayer
    amp-default-skin amp-big-play-centered"
    tabindex="0"></video>
  <script src="scripts/Player/Player.js"></script>
</body>
</html>

中的 HTML (設計) 程式碼 [圖 3 只宣告視訊的項目,以及 Azure Media Player 特有的屬性來表示播放程式的 UI。請注意 Player.js 檔案,這樣會執行偵測將視訊 URL 指定的平台的工作、 建立物件的分析資料的自訂後端以非同步方式傳送。

最簡單的程式碼中 Player.js 可以看起來像這樣 [圖 4

[圖 4 設定視訊來源及擷取 Azure Media Player 屬性

var myOptions = {
  "nativeControlsForTouch": true,
  controls: true,
  autoplay: true,
  width: "640",
  height: "400",
    }
myPlayer = amp("azuremediaplayer", myOptions);
  myPlayer.src([
    {
// For feature detection, you can use libraries like Modernizr and then
// construct the URL
  "src": "http://demoendpoint.streaming.mediaservices.windows.
    net/8frnf8nf-1jd8-l9i8-009w-92073ffd3fsce/assetvideo.ism/Manifest",
  "type": "application/vnd.ms-sstr+xml",
  }
  ]);
  // Events
  myPlayer.addEventListener(amp.eventName.pause, _ampEventHandler);
  // More events like
  // Content load complete
  // Media completed
  // Video seek
  // Page unload
  function _ampEventHandler(eventDetails)
  {
    var eventName = eventDetails.type;
    var pauseTime = eventDetails.presentationTimeInSec;
    var title = "Hello Azure Media Service ! ";
    var ExtraData = "None";
    var dateTime = new Date().toUTCString();
    var data = {
      'MediaRef': 9999,
      'EventTime': pauseTime,
      'MediaTitle': title,
      'TimeStamp': dateTime,
      'ExtraData' : ExtraData
    }
  $(function () {
  $.ajax({
    type: "POST",
    data: JSON.stringify(data),
    url: "http://demowebapi.azurewebsites.net/api/MediaAnalytics",
    contentType: "application/json"
  });
  });
  }

[圖 4 示範可收集來自 Azure Media Player,供您參考屬性的最簡單形式。您方案的媒體播放程式可以連接許多其他的事件處理常式和擷取更豐富的度量 (請參閱 bit.ly/1VA5osy)。雖然此程式碼中參考 smooth streaming 格式,您可以偵測平台功能,並快速準備媒體 URL 的內容相關的格式。

在此範例中,處理常式已連接至 Azure Media player,它會呼叫後端 Web API 透過 AJAX 呼叫 (JQuery) 以避免任何封鎖的視訊播放干擾 「 暫停 」 的事件。因此,每當使用者暫停影片,後端呼叫時將資料推送以非同步方式分析資料庫,而不需要任何傳遞至 HTML 網頁的回應。

JavaScript 不是強型別的語言,因為您可以建立並附加至物件的動態內容並設定其值。在此範例中的 「 資料 」 物件代表屬性擷取自 Azure Media Player 和做為 JSON 字串傳送至後端的其中一種常用的格式為 Web API 通訊的執行個體。

JSON 字串看起來像這樣 ︰

{
"MediaRef":12345,
"EventTime":15.5499976,"
MediaTitle":"Video - 21",
"TimeStamp":"Mon, 04 Apr 2016 16:03:36 GMT",
"ExtraData":"None"
}

Web API 和資料庫

Web API 和資料庫的選擇可能會在另一方面,因為此案例中的報告工具 Power BI (powerbi.microsoft.com)。不過,為了讓這個簡單明瞭,ASP.NET Web API 專案已建立快速設定後端服務。這可協助您輕鬆地設定從前端通訊,而不必擔心撰寫了大批程式碼連接到資料庫系統。不同於前端的 AJAX 呼叫,很重要,確保連線和資料庫層級的意見。Db CRUD 作業的任何問題可能會導致無法擷取用戶端的度量。這個方法也有助於測試 Web API-資料庫連線,而不需要撰寫複雜的測試案例。

中的程式碼 [圖 5 顯示後端 Web API 的 HTML 前端從所收到的 「 資料 」 JSON 物件,並將其發送至 SQL Azure 資料庫。

[圖 5 Web API 和資料庫

public class MediaAnalyticsController : ApiController
{
    async public void Post([FromBody]MediaWebAPI.Models.MediaData value)
  {
  using (SqlConnection connection =
    SQLConnHelper.CreateDatabaseConnection())
  {
    await connection.OpenAsync();
    int EntryID  =
       SQLConnHelper.SQLWriteAnalyticsDataAsync(value, connection);
    connection.Close();
    connection.Dispose();
  }
}
}

我要抽象化大部分資料存取層的類別程式碼和資料庫的實際影響時,選項可能會以下,這可能是一般的程式碼可以表示所使用的多個類型的中介軟體加上資料庫的組合。在成功進入資料庫時,您會收到 EntryId 資料列的唯一識別碼。一定還有其他方法,從資料庫操作成功收到意見的它們也可以使用這裡。

若要顯示在資料庫中的結構化格式的分析資料,我建立了接近的模型 (MVC) 或從 HTML 前端,我收到的 JSON 物件中所示的資料表 [圖 6

簡單的資料表設計
[圖 6] 簡單的資料表設計

提示: 建立以服務的後端的另一個快速方式是使用 Azure 行動應用程式,可讓您快速佈建 Web API,以及 Azure SQL 資料庫,在服務建立期間。

編結在一起的工作流程 ︰ 深入了解透過 Power BI

所有階段先前都已設定為示範此處所討論主題的最終目的的建置組塊 ︰ 分析/BI 使用 Azure 媒體服務元件。

使用 Azure 媒體服務和 Azure Media Player 的組合,您就可以快速傳遞視訊體驗,而不必擔心的編碼和串流功能。不過,大部分的組織也會感興趣取得深入了解耗用量趨勢的介面媒體的使用模式。Azure 提供創新與讓方案開發人員建立更吸引人的絕佳的視覺效果平台體驗其雲端架構服務。Power BI 是資料視覺化與分析工具,可支援建立互動式儀表板來監視度量/Kpi 透過輕鬆設定開發環境。

若要建立媒體內容的使用方式的視覺效果和出趨勢的介面,您將使用 Power BI 桌上型電腦工具 (bit.ly/1S8XkLO) 設定和建立的報表,然後將發佈為儀表板監視 Kpi。在 Power BI 桌面上,按一下 [取得資料] 按鈕並選取多個從下拉式清單。您應該會看到各種支援的資料庫來源的清單,和這個執行個體,您需要選取 Microsoft Azure SQL Database 中所示 [圖 7

Power BI 快速入門
[圖 7 Power BI 快速入門

取得資料精靈接著會連接到資料庫,您可以指定將資料匯入設計工具的其他選項。Power BI 會將資料載入資料來源使用資料集。

在匯入資料之後,您將建立報表,以反映 Kpi 使用視覺化圖表/成品。在多重資料表案例中,可以有關聯性複雜的使用者物件,描述在模型中,以及資料表之間。資料集和視覺效果可以配對透過 Power BI desktop 工具的右上方窗格中所示 [圖 8

建立視覺效果的圖表
[圖 8 建立的視覺化圖表

每一個視覺效果會形成磚中的介面以反映特定 KPI Power BI 報表。在此案例中,視訊的完成速度、 暫停時間和大部分的已使用的媒體內容應可提供整體的使用量,然後可用於等等行銷活動,使用者參與分析的趨勢。

一旦完成 Kpi,它們可以釘選到儀表板 – 此舉可以形成單一檢視產品的 CXOs,開發人員、 IT 支援函式和其他相關的人員。並排顯示分散到不同的儀表板來檢視或感興趣的小組設定的 Kpi。例如,CXOs 可能感興趣檢視媒體完成率、 人口統計的詳細資訊和最已使用的類別,而 IT 工程小組可以選擇監視其他 Kpi,例如失敗率,最串流的位元速率,網路分析,依此類推。

最後,可以在 Web 上發行報表 PowerBI.com 廣泛的耗用量和使用方式中所示 [圖 9

Power BI 儀表板顯示報表
[圖 9 Power BI 顯示報表的儀表板

總結

這是只是冰山一角解決方案有關,而且開發人員和解決方案提供者,可以提供 Microsoft Azure 服務。隨選視訊,以及 Azure 媒體服務也可以提供更豐富的媒體體驗的即時串流服務。沒有足夠的文件案例並佈建 Azure 媒體服務,Web 應用程式和資料庫,可協助開發人員的案例,並開始執行應用程式在幾分鐘內。持續改進併入 Azure 和 Power BI 平台幾乎每個月來啟用服務的相關案例。

小小的自訂可協助您解決特定的需求及這篇文章是為了示範可以如何擷取和擴充,以提供媒體耗用量分析使用量統計資料的起始點。


Sagar Bhanudas Joshi曾與開發人員和 Isv 通用 Windows 平台和 Microsoft Azure 平台上的六年以上。他的職責包括使用 Isv 與初學者,幫助他們架構設計人員、 設計和內建的解決方案與 Microsoft Azure、 Windows 和 Office 365 平台的應用程式。Joshi 存在及運作孟買,印度的。在 Twitter 上與他聯絡:: @sagarjms 處理。

感謝以下的微軟技術專家對本文的審閱: Sandeep J.Alur,會導致推廣人員

Sandeep Alur 有超過 16 年的企業客戶提供技術以及架構指導方針的業界經驗。他的經歷範圍 dotcom 天至下一代可散發和雲端運算技術紀元。在 Microsoft,他會導致技術推廣許可印度的且為他們提供雲端平台上建置解決方案的平台的啟動和 ISV 生態系統的運作方式。