65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 Microsoft Media Platform (MMPPF) 增强 Silverlight 中的媒体体验

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.55/5 (7投票s)

2011 年 6 月 26 日

CPOL

7分钟阅读

viewsIcon

40082

downloadIcon

1397

Microsoft 提供的 Microsoft Media Platform Player Framework (MMPPF) 是一个开源的播放器框架及其实现。

引言

当 Silverlight 推出时,由于其处理丰富媒体的能力,它被视为一个播放器框架。它是最早处理真正的 720p 和 1080p 高清媒体的技术之一。从 Silverlight 1 到 Silverlight 5 的发展,数字媒体体验得到了极大的提升。在这篇文章中,我们将深入探讨媒体概念及其与 Silverlight 的集成,以及可用的各种选项。

本文将重点介绍 Microsoft 的 Microsoft Media Platform Framework,这是一个开源的播放器框架及其实现。

image

媒体、流媒体、Silverlight……迄今为止的历程

Silverlight 1 推出了 MediaElement 对象,以实现丰富的媒体体验。MediaElement 是一个控件区域,可以渲染音频和视频文件。它支持 Windows Media Video (WMV)、Windows Media Audio (WMA) 和 MP3 文件/容器。支持的格式和协议的详细列表可以在此链接中找到:支持的媒体格式、协议和日志字段MediaElement 对象支持通过 HTTP 将媒体内容下载和流式传输到客户端。除了这些指定的容器类型,Silverlight 还提供了 MediaStreamSource 选项,使您能够提供不属于受支持容器类型的媒体。

除了格式,媒体渲染的另一个重要方面是内容将如何交付到客户端。这就是所谓的交付方法。有各种内容交付方法,如流媒体渐进式下载平滑流媒体等。MediaElement 根据文件格式类型和 URI 决定交付方法。

MediaElement 的默认交付行为是渐进式下载。如果您将 MediaElement 与以 http:https: 开头的 URL 结合使用,Silverlight 将开始渐进式下载。如果您将 MediaElement 与以 mms: 开头的 URL 结合使用,Silverlight 将尝试流式传输,如果流式传输失败则回退到渐进式下载。请注意,MediaElement 不支持平滑流媒体。

在继续之前,让我们快速了解一下各种交付方法及其比较。

渐进式下载 流媒体(传统) 平滑流媒体或自适应流媒体
简单 HTTP 下载文件 基于 HTTP 但有状态(不完全是 HTTP,而是 HTTP 的修改版本) HTTP 流媒体与文件块下载的混合组合
将文件块下载到客户端系统,用户可以访问已下载的内容 媒体作为一系列数据包发送到客户端 媒体源被分成许多短片段并进行编码。块下载到客户端并按线性顺序播放。
不考虑客户端环境 可以有多个文件版本,并且根据客户端环境,我们可以决定发送哪个版本 根据 CPU 和带宽使用情况,更改流媒体质量级别
用户可以在已下载的部分之间导航 用户可以向前/向后搜寻音轨 平滑搜寻
比流媒体更长的初始播放时间 快速启动,无缓冲

如果您想详细了解以上主题,请查看 Microsoft 门户上发布的白皮书

在直播流媒体和点播视频时代,平滑流媒体应运而生,它能在给定的网络和客户端环境中提供最佳效果。这使我们能够使用基于 Microsoft Media Platform 的播放器,该播放器能够在客户端识别源内容并启用平滑流媒体。

Microsoft Media Platform: Player Framework 2.5

Microsoft Media Platform (MMPPF) 是 Microsoft 的一个开源项目,支持平滑流媒体、渐进式下载和 Windows Media 流媒体等媒体插件。

image

这是否足以使用 MMPPF?为什么应该使用该框架,它提供什么好处?以下列表显示了其当前版本 2.5 中一些值得称赞的突出功能:

  • 支持 Windows Phone 和 Silverlight
  • 根据您的选择选择媒体插件(平滑流媒体/渐进式下载/WMS)
  • 慢动作
  • 播放线标记
  • 自定义和品牌化
  • 日志记录
  • 广告支持
  • 通过插件进行扩展
  • 流媒体图叠加

功能列表的更详细描述可以在这里找到。

IIS 平滑流媒体

请注意,常规流媒体和渐进式下载是默认功能,无需额外努力。平滑流媒体需要将文件存储为不同比特率的块,以便能够流畅地流式传输到客户端。在这里,客户端根据客户端环境选择要下载哪个比特率块。

但是,有时在服务器上管理如此多的文件块可能很困难,这时 IIS 平滑流媒体就派上用场了。借助 IIS 平滑流媒体,文件块是在客户端请求时虚拟创建的,但实际视频存储在磁盘上,每个编码比特率只有一个完整的视频文件。这提供了巨大的文件管理优势。

但是,对于 IIS 平滑流媒体,需要充分配置 IIS 服务器,并且需要对视频文件进行编码。有许多服务器/CDN 提供平滑流媒体服务,但是如果您想配置自己的服务器来支持平滑流媒体,请参考这篇文章

播放器下载和 CodePlex 源代码

在跳到示例应用程序之前,让我与您分享 CodePlex 上的下载链接和项目。它以 MSI 包的形式提供,可以安装。基本上,它是一组 DLL,可以根据需要引用到项目中。

创建一个简单的媒体播放器项目

项目设置

您可以下载二进制文件或完整的 MSI 包,它会将 MMPPF 模板添加到项目窗口。一旦您下载了上述二进制文件,您就会发现一组程序集,可以根据场景使用。但是对于一个非常基础的应用程序,我们需要将以下程序集引用到项目中。

SNAGHTML5a119e

一旦您将 Microsoft.SilverlightMediaFramework.Core.dll 拖放到工具箱,SMFPlayer 控件就可以让您直接在页面上使用该控件。(由于该项目以前称为 Silverlight Media Player (SMF),请不要在意控件名称)。

image

使用此控件时,VS 会包含 xmlns:smf=http://schemas.microsoft.com/smf/2010/xaml/player 命名空间。

<Grid x:Name="LayoutRoot" Background="White">
    <smf:SMFPlayer HorizontalAlignment="Stretch" Margin="0" 
               Name="sMFPlayer" VerticalAlignment="Stretch" />
</Grid> 

快速播放媒体源

PlayListPlayListItem 是 MMPPF 的基础。PlayListItem 指的是将添加到媒体播放列表集合中的媒体源对象。每个单独的播放项都可以选择其到客户端的交付模式。以下源显示了从媒体源创建 PlaylistItem

//Create a new PlayList Item
PlaylistItem item=new PlaylistItem();
item.MediaSource = new Uri("http://manaspatnaik.com/blog/downloads/Demolishor_WMV_HD.wmv");
item.ThumbSource=new Uri("http://manaspatnaik.com/blog/downloads/demolishor.jpg");
item.DeliveryMethod = 
  Microsoft.SilverlightMediaFramework.Plugins.Primitives.DeliveryMethods.Streaming;
 
//Add PlaylistItem to the Media playlist
sMFPlayer.Playlist.Add(item);
sMFPlayer.Play();

出于安全原因或其他原因,它不支持相对于播放列表的源;相反,您可以使用绝对 URI 路径作为媒体项。与视频 URI 相同,它支持音频播放。

播放平滑流媒体

正如我所提到的,基于 IIS 的平滑流媒体需要配置服务器,为了演示,我将使用托管在 playready.directtaps.net 上的示例媒体源。平滑流媒体媒体源带有 .ism 扩展名。直接使用此扩展名将无法播放媒体。相反,您必须使用包含“/Manifest”的完整链接。此清单文件定义了服务器上的媒体轨道、比特率和文件之间的关系。

SNAGHTML61cb1d

PlaylistItem item = new PlaylistItem();
item.MediaSource = new Uri("http://playready.directtaps.net/" + 
                   "smoothstreaming/SSWSS720H264/SuperSpeedway_720.ism/Manifest");
item.ThumbSource = new Uri(thumbImgUri);
item.DeliveryMethod = 
  Microsoft.SilverlightMediaFramework.Plugins.Primitives.DeliveryMethods.AdaptiveStreaming;
 
//Add PlaylistItem to the Media playlist
sMFPlayer.Playlist.Add(item);

请参阅本文顶部提供的实时链接,了解渐进式下载和 IIS 平滑流媒体之间的区别。

image

将媒体播放器嵌入到 WordPress 或非 Silverlight 网站中

嵌入平滑流媒体媒体播放器需要 XAP 文件,该文件可以从这里下载。将 XAP 文件包含在您的托管提供商的根目录中,并在新的 WordPress 文章中,切换到 HTML 视图,您可以使用以下代码

<object data="data:application/x-silverlight-2," height="100%" 
            type="application/x-silverlight-2" width="100%">
    <param name="source" value="SmoothStreamingPlayer.xap" />
    <param name="minRuntimeVersion" value="4.0.50401.0" />
    <param name="autoUpgrade" value="true" />
    <param name="InitParams" 
      value="mediaurl=http://playready.directtaps.net/smoothstreaming/
             TTLSS720VC1/To_The_Limit_720.ism/Manifest" />
</object>

如上例所示,这是针对平滑流媒体的,它仅支持 ism 文件,即仅支持 IIS 7 平滑流媒体的媒体源。如果您想托管自己的媒体 URL,则需要一个渐进式媒体播放器,该播放器可以从这里下载。

结束语

媒体播放器框架提供了许多我几乎没有涉及的功能,例如日志记录、分析和插件。MMPPF 非常有前途,是所有媒体渲染活动的一站式解决方案。希望本文能让您全面了解 Silverlight 提供的媒体处理能力。请随时发表您的观点和评论。

附加链接和阅读材料

© . All rights reserved.