最近一段時間一直在研究wms,因為大多數流媒體平台都離不開它,當然helix也不錯!
WMS 即windows media services ,是微軟提供的搭建流媒體平台的服務,主要支援mms協定,當然9 系列也支援rtsp協定,有很多優點,不在這一一講解。這裡主要闡述基于 Windows Media Services系列9SDK和 .NET 架構定制插件程式的一些關鍵内容。
其實作步驟主要分為:
一.建立“類庫(Class Library)”項目
二.“添加引用”到“Windows Media Services Server Object Model and Plugin 9.0 Type Library”
三.實作接口IWMSBasicPlugin
四.實作特定插件類型的接口(如IWMSEventNotificationPlugin, IWMSCacheProxy),甚至更多如認證插件和監控插件的接口等。
其中的幾個重要接口:
一.IWMSBasicPlugin接口:
DisablePlugin
EnablePlugin
GetCustomAdminInterface
InitializePlugin
OnHeartbeat
ShutdownPlugin
二.IWMSEventNotificationPlugin接口:
GetHandledEvents ()
OnEvent(ref WMS_EVENT Event,
IWMSContext UserCtx,
IWMSContext PresentationCtx,
IWMSCommandContext CommandCtx )
三. IWMSContext接口:
GetAndQueryIUnknownValue,
GetArrayValue,
GetContextType,
GetDateValue,
GetIndexedValue,
GetIUnknownValue,
GetLongValue,
GetQwordValue,
GetStringValue,
GetValue,
GetValueCount
SetArrayValue,
SetDateValue,
SetIUnknownValue,
SetLongValue,
SetQwordValue,
SetStringValue,
SetValue
RemoveAllValues,
RemoveValue
EraseCommandRequest
EraseCommandResponse
GetCommandRequest
GetCommandResponse
GetPlaylistGenerationID
SetPlaylistGenerationID
Contexts 指名稱/值對的集合,同http. 它是由WMS建立,并傳給插件,用于插件運作需要的大部分資訊,其值大部分由WMS寫入,插件可以讀/寫值
不同類型的Contexts
一.Server Context
描述全局的WMS狀态
WMS_SERVER_DOMAIN_NAME
WMS_SERVER
WMS_SERVER_EVENT_LOG
二.User Context
描述單一使用者
WMS_USER_AGENT
WMS_USER_NAME
WMS_USER_IP_ADDRESS
三.Presentation Context
描述單一的資料路徑(Data Path)
WMS_PRESENT_REQUEST_NAME
WMS_PRESENT_PHYSICAL_NAME
WMS_PRESENT_PLAYLIST_ENTRY_ROLE
四.Command Context
描述單一的使用者請求(User Request)
WMS_COMMAND_CONTEXT_EVENT
WMS_COMMAND_CONTEXT_URL
WMS_COMMAND_CONTEXT_URL_EXTRAINFO
WMS_COMMAND_CONTEXT_PUBPOINT_NAME
以上是對WMS插件開發的一些總結,因為發現在開發中尋找這方面的資料簡直屈指可數,甚至MSDN和CSDN。我相信2007年将是流媒體平台快速發展的一年,是以有這方面的資料指導簡直太可貴了。
另外關于WMS伺服器監控的一些東東也有相關的SDK,有興趣的可以看看WMI和WPSDK。都是有幫助的!
技術資源
WMS SDK 技術資訊: http://msdn.microsoft.com/windowsmedia
下載下傳WMS SDK : http://www.microsoft.com/msdownload/platformsdk/sdkupdate/