快捷搜索:

IIS 7 Smooth Streaming技术在Silverlight 3中的应用

微软的全新一代操作系统将IIS 7(Internet Information Services 7)引入到人们的视线中,作为IIS 6.0的一个进级版本,IIS 7在很多地方都做了改进,诸如模块化办事功能,与.NET的无缝集成,简单的操作和支配,改进的治理功能,以及安然性、历程改进、差错诊断、兼容性等很多新特点,要想周全懂得IIS 7所带来的更多新特点,可以查看“探索用于Windows Vista的Web办事器和更多内容”一文。

IIS 7的很多功能都是作为模块(插件)被集成到办事器上的,默认安装的IIS 7上已经集成了很多常用的功能,下图展示了IIS 7上的一些常用模块。

IIS 7支持很多的插件,The Offical Microsoft IIS Site上列出了当前IIS 7上的所有扩展,如SEO(Search Engine Optimization Toolkit,搜索引擎优化),Web Platform Installer(如上图中已安装在Management分类下),Application Request Routing,URL Rewrite Module(我在“应用URL Rewriter进行URL重写掉效”和“ASP.NET URL双向改写的实现” 中具体先容过在非IIS 7的情况写若何经由过程ASP.NET实现URL的重写,现在IIS 7已经将这个功能集成了),Smooth Streaming(这个功能是本文即将要先容的)等。IIS 7的这些插件在很大年夜程度上给站点开拓职员带来了便利性,可能曩昔我们必要在Web法度榜样中添加许多很繁杂的代码才能实现的功能,现在借助于IIS 7和插件,险些不用改动任何代码就可以搞定。是不是让人感觉很愉快呢?先别发急,要想懂得或掌握IIS 7的这些插件,照样必要消费点光阴的,The Offical Microsoft IIS Site官方网站上有许多具体的先容和示例,可供我们进修和钻研。

在本文中,我想重点先容下Smooth Streaming技巧的利用。

什么是Smooth Streaming?

官方站点上有具体的先容和示例,信托也有许多人已经见过了,还记得那个活跃的动画短片Big Buck Bunny吗?那个有趣的影片很好地展现了Smooth Streaming技巧在Silverlight 3中的利用。那么,究竟什么是Smooth Streaming技巧呢?一个很好的解释便是,Smooth Streaming是IIS Media Services的扩展,它使得Silverlight客户端可以经由过程HTTP来适应流媒体的带宽,经由过程对视频源文件(如wmv等常用视频文件款式)的特殊处置惩罚,会在办事器上按照不合带宽要求天生多个不合版本的视频文件副本,IIS在接管到Silverlight客户端哀求后再抉择将哪个视频文件副本经由过程流媒体发送到客户端,这个历程是完全动态的,也便是说当客户真个带宽发生变更时,传送流媒体的视频文件副本也会响应地改变。如当前客户真个带宽在 300kbps以下,则当前的流媒体文件副本可能为280kbps的那个;当客户真个带宽上升到1mbps时,当前的流媒体文件副本就可能变成 1.5mbps的那个了。是不是感觉很神奇啊?当然,所有这些都是必要IIS 7和Silverlight 3.0的支持。

必要些什么?

事实上,我在钻研Smooth Streaming技巧之前,已经有很多人先容过它了,看来它也不是那么陌生!这里是我在网上汇集到得一些资料,大年夜家可以先懂得一下:

http://www.cnblogs.com/ibillguo/archive/2009/04/08/1431302.html

http://blogs.neudesic.com/blogs/robert_altland/archive/2009/10/13/130445.aspx

基础上,我们在开始Smooth Streaming之前,有些对象是必备的,否则将无法进行后面的事情。

1. IIS 7。据我所知,在Vista之后的Windows操作系统中基础上都支持IIS 7,假如你在操作系统的“治理对象”中没有发明“Internet Information Services(IIS) Manager”,则你必要经由过程添加Windows Feature来添加它。我的系统情况是Windows 7,下面是截图。

除了经由过程Web Platform Installer安装Smooth Streaming外,你还可以直接下载安装包进行安装,下载后的Smooth Streaming插件是一个msi包,叫IISMedia32.msi(64位版本应该叫IISMedia64.msi)。

3. Microsoft Expression Encoder 3。着实Encoder 2也完全可以,不过我小我保举应用Encoder 3,这样可以省去你很多的麻烦,而且功能也更富厚。

4. Visual Studio 2008和Silverlight 3.0。这个基础上都是必备,假如你是作为一个Silverlight开拓职员的话,这里就不多说了。

好了,筹备事情完成后,下面就让我们开始体验在Silverlight 3中应用Smooth Streaming吧。

若何开始?

我们都知道,要想在Silverlight中播放影片,必要MediaElement控件的支持,在以往的利用中,我们只必要给这个控件指定一个Source属性,将本地或远程的视频文件(或视频办事)地址奉告MediaElement控件就可以了,然后我们经由过程Media Template(这个可以经由过程Encoder自动天生或完全自定义)中的按钮、进度条等节制视频的播放。这个历程是对照简单的,当然,假如你想做一些很酷的效果可能就要费掉落周折了。

要想经由过程Smooth Streaming播放影片,对影片的款式是有要求的,这便是我们为什么必要Microsoft Expression Encoder的缘故原由。经由过程Encoder,我们可以将视频源文件转换成Smooth Streaming所支持的文件款式,这个步骤在上面我给出的两篇文章中都有具体的先容(见“必要些什么”那一节),着实我也是参考了此中的内容。这里我再简单做下先容吧。

打开Encoder,导入要转换的视频文件,选择右边的Encoder面板,将Output Format选择为IIS Smooth Streaming。

别的,为了能够快速演示Smooth Streaming,我们可以直接下载并安装IIS Smooth Streaming Player Development Kit,它会供给演示要用的xap文件也页面。

创建站点

当然了,要让Smooth Streaming能事情,我们必要在办事器上架设一个Smooth Streaming的站点。很简单!首先将前面Encoder转换的文件中的整个ismv文件以及ism、ismc文件复制到你要创建的网站的物理目录下。按照官方网站领导上的先容(你可以辞官方网站高低载pdf或doc的领导文档,不过都是英文的),一共有两种Smooth Streaming规划可供选择,打开IIS 7,点击我们所创建的站点,在右边功能视图的Media Services分类下会看到Live Smooth Streaming和Smooth Streaming两个插件,事实上它们便是领导上所说的Serving On-Demand Smooth Streaming(按需Smooth Streaming)和Serving Live Smooth Streaming(实时Smooth Streaming),领导上对这两种规划的架设说得都很具体,包括若何经由过程Encoder转换视频文件,若何宣布视频文件等,让人感觉全部历程很繁琐,事实上没有这么麻烦!

首先,视频文件的宣布在Encoder中可以经由过程WebDAV完成,然则这个必要在IIS上设置设置设备摆设摆设权限和认证,对照麻烦,我们可以经由过程手动将转换文件复制到网站下(仅仅便是复制而已,没有其余)。

然后便是宣布Smooth Streaming了。

先说说宣布Live Smooth Streaming。在IIS中打开Live Smooth Streaming,点击“Add”,在弹出的窗口中输入你想要创建的Live Smooth Streaming的文件的名字,并选择Live Source Type为Push,其它的选项如Title、Estimated duration等都可以完全不用填写。

好了,基础上已经成功了,当你看到上面这个画面时表示你的Live Smooth Streaming已经架设成功了,接下来便是在Default.html文件中设置播放地址让影片播放起来。用记事本打开Default.html,找到Silverlight控件的mediaSource属性,将后面的地址改动为“http://localhost:77/livesmoothstream.isml/manifest”,留意“localhost:77”是我机械上的网站地址,可能跟你的不一样,“livesmoothstreaming.isml”为你创建的Live Smooth Streaming办事器解析文件的名称。现在你应该可以在浏览器中看到你所宣布的影片了,由于我们直接应用了IIS Smooth Streaming Player Development Kit供给的播放器,以是我们只必要改动地址就能直接播放影片,在这个播放器中,你会看到跟着客户端带宽的变更影片的质量也会发生改变,这恰是Live Smooth Streaming所供给的功能。

恩,我不知道你是不是也跟我一样成功架设好了站点,假如你没有成功那你可能就要再仔细反省反省了,大概哪个环节出了问题,假如你也可以不雅看到影片,那么恭喜你,你已经学会了若何宣布Live Smooth Streaming了。还记得我在前面说Live Smooth Streaming是“实时平滑流媒体”吗?不错,这种要领可以在线供给实时视频播放,然则存在一个问题,当我们重启IIS时(最糟糕的是当我们重启机械时)我们必要从新宣布isml解析文件,也便是经由过程pushencoder敕令从新天生isml文件的内容,我不太清楚为什么非要这么做,但这样确凿带来不少麻烦。下面我们看看Smooth Streaming(按需平滑流媒体)吧。

好了,现在你可以宁神大年夜胆地改动你的Silverlight代码了。下面是我给出的例子,你应该不丢脸懂!

using System.Windows.Controls;

using System.Windows.Documents;

using System.Windows.Input;

using System.Windows.Media;

using System.Windows.Media.Animation;

using System.Windows.Shapes;

using Microsoft.Expression.Encoder.AdaptiveStreaming;

namespace SmoothStreamingTest

{

public partial class MainPage : UserControl

{

private string uriString = "http://localhost:77/Wildlife.ism/manifest";

private AdaptiveStreamingSource MainSrc = new AdaptiveStreamingSource();

public MainPage()

{

InitializeComponent();

MainSrc.MediaElement = mediaElement;

MainSrc.ManifestUrl = new Uri(uriString);

}

private void mediaElement_Loaded(object sender, RoutedEventArgs e)

{

MainSrc.StartPlayback();

}

}

}

您可能还会对下面的文章感兴趣: