2016 年 6 月

第 31 卷,第 6 期

此文章由机器翻译。

Power BI - Microsoft Azure 媒体服务和 Power BI

通过 Sagar Bhanudas Bhanudas | 2016 年 6 月

Microsoft Azure Media Services 提供了丰富的平台,开发人员和独立软件供应商可以通过 Web 和本机应用程序传送视频点播和实时流式处理体验。若要丰富消费者体验并获得见解上下文/应用程序使用情况,务必在分析和数据可视化的后端中将强大的跨平台解决方案。在撰写本文时,Azure Media Services 平台并不提供现成的; 分析因此,开发人员始终面临的挑战的业务需求使用情况数据从分析的角度。

本文将重点介绍开发者该如何在 Azure 媒体服务(和播放器)的基础上构建分析平台,从而体现使用趋势。解决方案空间包括对 Power bi 的可视化效果的中间 (Web API) 服务和数据库,使用情况。

应用场景

大部分创建/嵌入媒体内容的组织需要深入了解使用情况/分析数据中,以期自己想办法最终用户体验。若要实现此目的,开发人员需要记录一些与根据视频/媒体消耗相关的关键绩效指标 (Kpi)。下面是一些最常见和最理想 Kpi:

  • 这是最受监视的视频?
  • 有多少人完成后才能观看视频?
  • 多少次是视频已暂停且在哪个位置?
  • 这是最流式处理的格式/比特率?
  • 平台信息和其他人口统计的详细信息。

为了使您决定采用适当的服务和工具,可帮助提供这些 Kpi 组合,花费大量的时间和精力来创建从零开始的每个组件或生成基于经验证的平台服务。

幸运的是,Azure 云平台都有一组丰富的服务可以利用在整个解决方案的设计中捕获和地址分析要求。对于这种情况下,将使用以下组件 ︰

  • Azure 媒体服务
  • Azure 媒体播放器
  • Azure Web 应用程序
  • Azure SQL 数据库
  • Power BI

这里的思路是捕获来自 Azure Media Player 的原始数据并将其返回到中间层 (Web API),以便代理与托管的 (报告) 的 Azure SQL 数据库的连接。然后将 Power BI 连接到数据源中呈现出介质的使用情况耗时,可通过可视化效果的趋势的报告数据库。

在这篇文章中的进一步部分详细介绍实现这一情境的实际实现。

动态打包和准备视频消耗

使用 Azure Media Services 的最值得称道之可以取得视频/音频内容,并准备在各种平台上使用。您可以实现此目标,使用 Azure 门户或通过从代码中执行相同的步骤,如果您需要自动执行步骤/解决方案。该方案的此部分讨论以下任务 ︰

  • 识别的内容 (在这种情况下,我将选择演示视频内容) 将使用按需
  • 将视频上载到 Azure Media Services (支持不受 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 Media Services,下面是快速的术语列表 ︰

  • 资产 (或 IAsset)-表示包含 Azure Media Services 的媒体包的实体。它可能包含一个或多个内容文件。
  • 作业 (或 IJob),表示要由 Azure 媒体服务执行的"编码"工作单位的实体。可以将其视为将文件从一种格式转换为另一个。
  • 自适应比特率 — 适应 CPU/网络功能的目标系统和设备提供最适合与条件匹配的内容的编码格式。您只需创建自适应比特率文件,并且 Azure Media Services 将确定正确的比特率,以将其传输到客户端设备。

现在,将这些片段组合在一起从代码中 图 1, ,该函数将提交到源格式自适应比特率 MP4 资产转换使用 Media Services 标准 Encoder"资产"。

该示例还演示作业进度,或您可以跟踪它通过 Azure 门户中所示 图 2 "作业"部分中。(我已留空的 ID 字段值。)

Azure Media Services 显示作业进度示例
图 2 Azure 媒体服务的示例显示作业进度

既然您已成功创建媒体资产已准备好使用跨设备和平台,您必须确保让 Azure Media Services 知道目标设备的平台,以便它可以出正确的编码和内容格式流式传输。例如,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 Media Services。现在,已准备好将其传输到设备的介质,让我们来创建 HTML 页以使用通过 Azure Media Player 视频 (bit.ly/1SQ8Rwr)。

使用媒体并将分析数据发送到后端

Azure Media Player 是 Web 视频播放器是在客户端的 Azure Media Services 内容的播放的补充。它使用 JavaScript 代码中的最少配置适用于基础的浏览器平台,来呈现视频内容 (主要来自 Azure 媒体服务)。但是,目标是不仅要播放的媒体,而且还要派生的使用情况分析数据并将其记录到后端。因为的目的是用于查看聚合数据以进行分析解决方案年底,我将重点介绍仅选择数量的参数记录;例如,视频内容、 视频、 暂停时间、 时间戳和额外的备注数据的标题的标识符。

因此,播放机的 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="https://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 特有的属性来表示播放机的用户界面元素。请注意 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 中收集的属性的最简单形式。解决方案 media player 可以附加许多详细的事件处理程序并捕获更丰富的度量值 (请参阅 bit.ly/1VA5osy)。虽然该代码引用平滑流式处理格式,可以检测平台功能和快速做好相关内容的格式的媒体 URL。

在此示例中,一个处理程序附加到 Azure Media Player 中,调用通过 AJAX 调用 (JQuery) 以避免与视频播放任何阻塞的后端 Web API 的"暂停"的事件。因此,每当用户一直暂停播放视频,后端进行调用以将数据推送以异步方式给分析数据库中,没有任何反应,传递回 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 的唯一 ID。绝对没有收到的反馈发送成功的操作的数据库的其他方法,并且其中任何在这里,也可以。

若要表示结构化的格式在数据库中的分析数据,我创建了紧密匹配的模型 (MVC) 或 HTML 前端,从接收到的 JSON 对象中所示的表 图 6

简单的表设计
图 6 简单表设计

提示: 另一种快速的方法来创建作为服务的后端是使用 Azure 移动应用,使您能够快速地设置 Web API,以及 Azure SQL 数据库服务创建过程中。

拼接在一起工作流 ︰ 获得通过 Power BI 的见解

所有阶段以前都已设置为演示非常此处讨论的主题的最终目标阶段的构建基块 ︰ 分析/BI 使用 Azure Media Services 组件。

使用 Azure Media Services 和 Azure Media Player 的组合,您就能迅速而无需担心过多的编码和流式处理功能提供视频体验。但是,大多数组织都还希望获得深入到面出消耗趋势的介质的使用模式。Azure 提供了很好的可视化平台创新,使解决方案开发人员能够创建具有吸引力遇到围绕其功耗云服务。Power BI 是数据可视化和分析工具,它支持的交互式仪表板来监视指标/Kpi 通过轻松配置开发环境的创建。

若要创建的媒体内容的使用情况的可视化对象和出趋势图面,将使用 Power BI 的桌面工具 (bit.ly/1S8XkLO) 来配置和创建的报表,然后将发布为用于监视 Kpi 仪表板。在 Power BI desktop 中,单击获取数据按钮并选择从下拉列表中的详细信息。您应看到各种受支持的数据库源的列表,并且,对于此情况下,您将选择 Microsoft Azure SQL Database,如中所示 图 7

Power BI 入门
图 7 Power BI 入门

获取数据向导然后连接到数据库,您可以指定用于将数据导入设计器的其他选项。Power BI 使用数据集来从数据源加载数据。

导入数据后,您将创建报表使用可视化图表/项目以反映 Kpi。在多表方案中,可以有关系在模型中,也可以描述复杂的用户对象的表之间。数据集和可视化效果可以进行配对通过 Power BI 的桌面工具右上窗格中所示 图 8

创建可视化图
图 8 创建可视化图表

每个可视化效果窗体在 Power BI 报表以反映特定 KPI 中的磁贴界面。在此方案中,视频完成率、 暂停时间和大多数已消耗的媒体内容应提供总体趋势的使用率,然后可用于市场营销活动,用户参与度分析,依此类推。

一旦确定 Kpi,它们可以固定到仪表板 – 这可以构成该产品的单一视图 Cxo,开发人员而言,IT、 支持功能和其他有关各方。图块可以分布在不同的仪表板以窗体视图或感兴趣的组的团队的 Kpi。例如,Cxo 感兴趣查看媒体完成率、 人口统计的详细信息以及最消耗的类别,而 IT 和工程团队可以选择监视其他 Kpi,如失败率,最流比特率、 网络分析,依此类推。

最后,在 Web 上发布报表 PowerBI.com 广泛消耗和使用情况,如中所示 图 9

显示报表的 power BI 仪表板
图 9 Power BI 仪表板显示报表

总结

这是只是冰山的一角有关解决方案和服务 Microsoft Azure 开发人员和解决方案提供商可以提供。点播视频,以及 Azure Media Services 还可以提供更丰富的媒体体验的实时流式处理服务。没有足够用例周围的文档和 Azure Media Services 中,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 生态系统,让他们用于云平台上构建的解决方案的平台。