使用Microsoft Media Service实现网络影音多媒体应用系列第三篇---技术要点
技术要点解说:
l 对Media Service的引用
Imports Microsoft.WindowsMediaServices.Interop
Imports System.Runtime.InteropServices
引入以上两个命名空间以后,就可以看到WMSServer这个类,它就是指向Media Service的类。Activator.CreateInstance(tServerType)获取的就是当前开发服务器上的Media Service的实例。
l PublishPoint播放点
所谓播放点,就是我们在Media Service上可以看到的点播,直播与广播节目。以上三种影音服务方式的特点及异同,后面再讨论。
我们通过上一步骤获取了当前服务器上Media Service实例之后,就可以在它的属性中找到PublishPoints属性,引用的就是已经存在的播放点集合。
播放点对应的类,包括IWMSPublishingPoint,IWMSPublishingPoint2这两个,我们通常只需要使用前一个,后一个如何使用,可以参阅SDK说明。
使用如下语法来添加播放点:
PublishingPoints.Add(PubName,WMS_PUBLISHING_POINT_CATEGORY.WMS_PUBLISHING_POINT_ON_DEMAND, MediaPath)
PublishingPoints.Remove()可以移除一个已经存在的播放点
播放点类型的枚举:
WMS_PUBLISHING_POINT_CATEGORY.WMS_PUBLISHING_POINT_ON_DEMAND
WMS_PUBLISHING_POINT_CATEGORY.WMS_PUBLISHING_POINT_ON_BROADCAST
l 播放列表PlayList概念
所谓播放列表,就是把多个媒体档或播放列表组合嵌套,以一定的顺序,由一个播放点来依次播出。
一个播放列表,实际就是一个XML档,我们这里介绍的播放列表是.wsx,形式如下所示:
<?wsx version = '1.0'?>
<smil>
<media src="c:\media\自然百科\Butterfly.wmv">
<clientdata title="myPlaylist" author="Liucy"/>
</media>
</smil>
除了.wsx播放列表以外,还有一种播放列表,就是.asx,这种播放列表是一种客户端播放列表,形式如下:
<ASX Version = "3.0">
<Entry> <Ref href = "http://server/song1.asf" /> </Entry>
<Entry> <Ref href = "http://server/song2.asf" /> </Entry>
<Entry> <Ref href = "http://server/song3.asf" /> </Entry>
<Entry> <Ref href = "http://server/song4.asf" /> </Entry>
</ASX>
这种播放列表,是随页面加载到客户端以后,由客户端播放插件或完整播放器来使用。从这一点来看.wsx就是服务器端播放列表。
备注:关于播放列表的具体语法,请参阅Media Service SDK
l 播放列表如何在开发中使用:
Imports interop_msxml
必须引入以上命名空间,播放列表相关类,如下:
Dim Playlist As IXMLDOMDocument
Dim ElementSmil As IXMLDOMElement
Dim ElementMedia As IXMLDOMElement
Dim ElementClientData As IXMLDOMElement
Dim ProcInst As IXMLDOMNode
Dim Root As IXMLDOMNode
Dim Node As IXMLDOMNode
新建播放列表:
MediaService实例.CreatePlaylist()
播放列表实例创建以后,我们就可以把它作为一个普通的XML档一样来操作。
播放列表可以像一个普通媒体档一样作为播放点的节目来源。
l 关于播放点的节目来源分类:
- 本机普通媒体档,注意必须是.wmv/.wma/.avi这些微软专有媒体格式才可以
- 播放列表
- 局域网内其他位置具有相应访问权限的档案
- 以Http协议从Internet获取远端媒体流
- 从远端直播服务器推送过来的直播媒体流