Live Smooth Streaming的那些事儿
在MIX 09发布了IIS Media Services 3.0 Beta
这是一个IIS的扩展包,其集成了Bit Rate Throttling,Live Smooth Streaming等等组件
其中Live Smooth Streaming用于支持视频的平滑播放/直播
其是微软在总结了2008年NBC北京奥运会以及民主党全国会议(美国)直播等大规模应用的基础上
应对不同带宽的用户,都能流畅的看上网络视频而推出的
安装IIS Media Services 3.0 Beta的方式是先安装Microsoft Web Platform
其安装后将启动去获取最新版本的Web相关软件,选择安装IIS Media Service 3.0 Beta
这样你的IIS就已经支持了平滑流媒体播放了
实现自适应性流媒体的播放的过程如下
创建Smooth Streaming Video
创建Smooth Streaming Video需要使用注册好了的Microsoft Expression Encoder 2 SP1
(试用版本将没有自适应流媒体的选项)
1.启动Encoder后,选择文件->导入…(快捷键是CTRL+I)来导入视频
2.在右边的编码那个选项卡中选择视频为自适应流媒体处理,并选择输出模式为IIS平滑流式处理如下
3.设置输出目录,我采用了默认的
4.点击左下角的编码按钮开始进行视频格式转换
这是一个非常漫长的过程,可能需要几个小时
编码完成后,将生成不同码率的自适应视频文件如下所示
生成的文件说明如下:
.ismv文件:包含了视频和音频的文件,事实上是一个MP4文件。不同的码率是单独一个文件
如上图,共生成了四种码率是视频文件350Kbps, 600Kbps, 1050Kbps, 1450Kbps
当然也可以改变预设的码率以及增加希望生成的码率,如下增加一个码率为280Kbps的
.ism文件:服务器解析文件,用于描述在硬盘上的不同码率文件之间的关系,事实上是一个xml描述文件,只能IIS Smooth Streaming Server访问
1: <?xml version="1.0" encoding="utf-16"?>
2: <!--Created with Expression Encoder version 2.1.1216.0-->
3: <smil xmlns="http://www.w3.org/2001/SMIL20/Language">
4: <head>
5: <meta
6: name="clientManifestRelativePath"
7: content="1.ismc" />
8: </head>
9: <body>
10: <switch>
11: <video
12: src="1_1450000.ismv"
13: systemBitrate="1450000">
14: <param
15: name="trackID"
16: value="2"
17: valuetype="data" />
18: </video>
19: <video
20: src="1_1050000.ismv"
21: systemBitrate="1050000">
22: <param
23: name="trackID"
24: value="2"
25: valuetype="data" />
26: </video>
27: <video
28: src="1_600000.ismv"
29: systemBitrate="600000">
30: <param
31: name="trackID"
32: value="2"
33: valuetype="data" />
34: </video>
35: <video
36: src="1_350000.ismv"
37: systemBitrate="350000">
38: <param
39: name="trackID"
40: value="2"
41: valuetype="data" />
42: </video>
43: <audio
44: src="1_1450000.ismv"
45: systemBitrate="64000">
46: <param
47: name="trackID"
48: value="1"
49: valuetype="data" />
50: </audio>
51: </switch>
52: </body>
53: </smil>
.ismc文件:客户端解析文件,其也是一个xml文件,是第一个创送给客户端用来决定下面下载哪个码率的视频的解释性文件
其内容包括描述可用的码率的视频,采用什么解码器,视频分辨率等等。由于这个描述文件很大,其代码我在这里就不贴了
感兴趣的大家可以使用Encoder自己试试
为了我们演示方便,我将直接使用微软提供的工具包来演示
下载Encoder Simulator and Sample Client Starter Kit
并解压其到任意一个目录
这个文件生成的文件如下
可以看出这是一个可以部署网站了
将其部署到IIS上如下
Live Smooth Streaming Publishing Point
为了能支持Smooth Streaming,你需要添加一个Publishing Point如下
1.选择Live Smooth Streaming Publishing Point并双击,点击右边的Add…来添加一个Publishing Point
2.选取生成的.isml文件名并设置其参数如下(Estimated duration暂时无用,随便设置就可以了,但是Live source type请设置成Push Encoder)
3.启动这个Publishing point
4.拷贝之前用Encoder转换后的视频文件.ismv以及配置文件.ism、.ismc到和SampleLiveClient.xap一个目录
下面我们需要做的就是将这段视频发布出去
可以通过如下代码来建立发布点
32位系统
pushencoder32 <url-of-publishingpoint> <ism-file>
64位系统
pushencoder64 <url-of-publishingpoint> <ism-file>
启动Smooth Streaming
1.修改和SampleLiveClient.xap一个目录的default.html文件中的属性mediaSource="LiveSmooth.isml/Manifest"
2.输入http://ServerName/Smooth/default.html来启动程序
调整了最大下载码率后
我上面采用手动的方式来调整最大下载速度来模拟不同网络的带宽
也就是说Silverlight播放器将自动的根据你的带宽去下载不同码率的视频来播放,也就是自适应流媒体播放了