使用 Silverlight Media Framework 构建自定义播放器

      流媒体已在网络上无处不在。似乎所有人(从新闻站点到社交网络再到隔壁的邻居)都在享受在线视频体验。由于用户群的不断攀升,大多数站点需要以一种值得信赖、用户友好的方式为其客户提供高品质视频,通常为高品质带宽感知 视频。

      在线媒体传输体验的核心要素是播放器本身。播放器是用户与之发生交互的介质,它可以驱使用户获得在线体验的每一个要素。播放器如此备受关注,毫无疑问,基于 Web 的现代媒体播放器在实现时势必要比几年前的老款播放器复杂得多。因此,开发人员需要一个稳健的框架来构建播放器。

      Silverlight Media Framework (SMF)是一个开源项目,由 Microsoft 在 2009 年 Microsoft 专业开发人员大会上发布。此项目是一个可扩展的、具备高度伸缩性的 Silverlight 视频框架,它直接解决了开发人员和设计人员的需求,为其提供了稳定的内核来创建自己的播放器。Silverlight Media Framework 的核心代码已根据从 NBC Olympics 和 Sunday Night Football Web 视频项目中所学的课程经过优化。

      本文将介绍 SMF 的基本要素,演示如何将 SMF 集成到您自己的播放器项目中,并通过一个简单项目向您逐步介绍如何使用 SMF 打造自定义播放器体验。我将向您展示如何使用 SMF 的日志记录、设置和事件处理功能。最后,我将创建一个播放器应用程序,该应用程序会在当前的视频播完后显示建议您日后观看的视频。

      SMF 入门

      开始前,您需要先从 Codeplex(smf.codeplex.com)下载框架。您还需要下载平滑流式处理播放器开发工具包(iis.NET/expand/smoothplayer)并在使用 SMF 的任何项目中参考它。平滑流式处理播放器开发工具包不属于 SMF,它是完全独立的封闭源组件。不过,SMF 可以利用该工具包中的一组核心功能,特别是视频播放器本身。在撰写本文档时,平滑流式处理播放器开发工具包为 beta 2 版本。

      SMF 包含大量 Microsoft .NET 程序集(如图 1 所示),每个程序集都构成整个框架的不同功能部分。

 

图 1 Silverlight Media Framework 程序集

      核心程序集是 Microsoft.SilverlightMediaFramework.dll,它由框架其余部分引用的众多实用程序类和类型组成。使用 SMF 的任意部分时,也必须引用 Microsoft.SilverlightMediaFramework.dll 程序集。

      Microsoft.SilverlightMediaFramework.Data 命名空间提供帮助程序类,以使用播放器外部的数据以及封装播放器内部的数据。该数据可以是任何格式的通用数据,但也可以是播放器自身的设置信息。Microsoft.SilverlightMediaFramework.Data.Settings 是另一个命名空间,用于显示类型和处理播放器设置。

除了用于设置的数据以外,您最想要与之发生交互的 Data 命名空间中的类型是流外 DataClient 类,它可以从外部源检索数据。如果您想要下载和使用播放器外部的数据,请引用此程序集。

      SMF 播放器包含稳健的 Microsoft.SilverlightMediaFramework.Logging 框架,该框架使用回调模式。在这种模式下,写入日志记录基础结构会引发事件。您可以使用日志记录系统注册自己的回调方法,这些回调一旦激活,便会执行其他操作,如向 Web 服务发送信息或在文本框中显示信息。如果您想要使用 SMF 的内置日志记录工具,请引用此程序集。

      Microsoft.SilverlightMediaFramework.Player 程序集实现播放器本身。它还提供播放器所需的大量控件,如洗带器、音量控件和时间线标记。默认的 SMF 播放器界面布局简洁、雅致,对于任何需要 Silverlight 播放器的项目来说,都是一个良好的开端。但是,SMF 中定义的所有控件的核心都是控制模板概念,因此每个控件都可以使用 Expression Blend 或 Visual Studio 等工具作为主题。

      构建和引用 SMF

      SMF 作为单个.zip 文件下载,其中包含一个解决方案文件、每个输出库对应的项目,以及用于运行和验证播放器自身的测试项目。

      SMF 依赖于平滑流式处理播放器开发工具包。要引用该工具包,请将平滑流式处理程序集(Microsoft.Web.Media.SmoothStreaming.dll)移到 SMF 项目的 /Lib 文件夹中。

      然后,在 Visual Studio 中打开 SMF 解决方案并进行构建,创建所有需要利用该框架的程序集。要确认是否一切都如期进行,请按 F5 开始进行调试。系统将构建该解决方案并执行 Microsoft.SilverlightMediaFramework.Test.Web 目标,向您显示对“Big Buck Bunny”视频进行流式处理的默认 SMF 播放器(参见图 2)。注意,默认播放器是否已包含洗带的位置元素、播放/停止/暂停按钮、音量控件、全屏控件等。

 

图 2 SMF 播放器和 Big Buck Bunny视频

      下一步是创建自己的独立 Silverlight 项目并利用其所包含的 SMF 功能。在 Visual Studio 中,单击“文件”|“新建”|“项目”|“Silverlight 应用程序”。调用 SMFPlayerTest 解决方案,然后单击“确定”。将弹出一个模式对话框,询问您是否要将 Silverlight 应用程序托管到新的网站中。单击“确定”,您将看到一个基本的 Silverlight 应用程序解决方案,该解决方案由两个项目组成,分别是 SMFPlayerTest 和 SMFPlayerTest.Web。

      最后一步是从新建项目中引用平滑流式处理播放器开发工具包和 SMF 程序集。将输出 SMF 程序集和平滑流式处理播放器开发工具包从 SMF 解决方案的 Debug 文件夹中复制并粘贴到新项目中(如图 3 所示)。现在,新解决方案将包含利用 SMF 所需的所有程序集引用。

 

图 3 引用所需的程序集

      显示播放器

      要开始使用 SMF,请将 SMF 播放器的命名空间添加到 MainPage.xaml 页中。这样做可以确保所有引用都可以正确地解析: 

xmlns:p="clr-namespace:Microsoft.SilverlightMediaFramework.Player;assembly=Microsoft.SilverlightMediaFramework.Player"

NET技术使用 Silverlight Media Framework 构建自定义播放器,转载需保留来源!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。