Windows Media Encode 9是Windows Media 9 Series組成部分之一,它的主要作用是進行編碼。Windows Media 9 Series包括了 Windows Media Audio 9 Series、Windows Media Video 9 Series、Windows Media Encoder 9 Series、Windows Media Services 9 Series、Windows Media Player 9 Series、Windows Media Rights Manager 9 Series、Windows Media 9 Series SDK。基於這個平臺,開發者可以利用播放器、解碼器以及伺服器端配合開發出數字媒體應用程式,通過與Windows 家族的最新成員:Windows XP Media Center Edition配合,相信能給使用者帶來更流暢的數碼娛樂享受。
以上是微軟的一些產品,微軟提供給我們,讓我們可以進行開發的是Windows Media 9 SDK。SDK是軟體開發工具包Software Develop Kits。Windows Media 9 SDK主要包括Windows Media Player SDK、Windows Media Format SDK、Windows Media Rights Manager SDK、Windows Media Encoder SDK、Windows Media Services SDK。
我們可以使用Windows Media Encoder SDK開發自己的編碼應用。微軟的Windows Media Encoder(Windows Media 編碼器)就是使用Windows Media Encoder SDK進行開發的。編碼應該如何理解呢?或者說編碼器應該具有什麼功能呢?將裝置或者檔案中的流媒體採集到並按照微軟的媒體格式進行編碼,並輸出,這就是編碼器的作用。用更加執白的話說就是採集、格式轉換、壓縮。Windows Media Encoder的源可以是裝置也可以是檔案,裝置可以是螢幕或者攝像頭或者其他的視訊、音訊裝置,檔案可以是視訊檔案、音訊檔案。Windows Media Encoder的輸出可以將內容編碼到檔案,也可以對內容進行實況廣播。如果要進行廣播,既可以通過推傳遞(在客戶端沒有請求資料的情況下傳遞)將流傳輸到執行 Windows Media Services 的伺服器上,也可以允許 Windows Media 伺服器和播放機通過拉傳遞(僅在客戶端發出請求時將資料傳遞給客戶)直接從編碼器接收流。
Windows Media Encoder SDK不會和Windows Media Encoder一起安裝,需要單獨下載,Windows Media Encoder SDK中安裝了一些示例和幫助檔案。Windows Media Encoder SDK以COM元件的方式提供服務,可以參考wmencsdk.chm的內容。
下面以一個簡單的例子來展示一下C#使用Windows Media Encoder SDK進行開發的情形。
try
{
// 建立WMEncoder object.
WMEncoder Encoder = new WMEncoder();
//獲得組源集合
IWMEncSourceGroupCollection SrcGrpColl = Encoder.SourceGroupCollection;
//向集合中增加一個組源
IWMEncSourceGroup SrcGrp = SrcGrpColl.Add("SG_1");
//向組源中增加一個音訊源和視訊源
IWMEncSource SrcAud = SrcGrp.AddSource(WMENC_SOURCE_TYPE.WMENC_AUDIO);
SrcAud.SetInput("C:\\愛就愛了.rm", "", "");
IWMEncVideoSource2 SrcVid = (IWMEncVideoSource2)SrcGrp.AddSource(WMENC_SOURCE_TYPE.WMENC_VIDEO);
SrcVid.SetInput("C:\\愛就愛了.rm", "", "");
//制定一個輸出檔案
IWMEncFile File = Encoder.File;
File.LocalFileName = "C:\\OutputFile.wmv";
//裝載配置檔案
WMEncProfile2 Pro = new WMEncProfile2();
Pro.LoadFromFile("c:\\schi.prx");
SrcGrp.set_Profile(Pro);
//增加檔案描述資訊
IWMEncDisplayInfo Descr = Encoder.DisplayInfo;
Descr.Author = "Author name";
Descr.Copyright = "Copyright information";
Descr.Description = "Text description of encoded content";
Descr.Rating = "Rating information";
Descr.Title = "Title of encoded content";
IWMEncAttributes Attr = Encoder.Attributes;
Attr.Add("URL", "IP address");
//開始編碼處理
Encoder.PrepareToEncode(true);
Encoder.Start();
MessageBox.Show("It's OK");
}
catch (Exception e1)
{
MessageBox.Show(e1.Message+e1.StackTrace);
}
{
// 建立WMEncoder object.
WMEncoder Encoder = new WMEncoder();
//獲得組源集合
IWMEncSourceGroupCollection SrcGrpColl = Encoder.SourceGroupCollection;
//向集合中增加一個組源
IWMEncSourceGroup SrcGrp = SrcGrpColl.Add("SG_1");
//向組源中增加一個音訊源和視訊源
IWMEncSource SrcAud = SrcGrp.AddSource(WMENC_SOURCE_TYPE.WMENC_AUDIO);
SrcAud.SetInput("C:\\愛就愛了.rm", "", "");
IWMEncVideoSource2 SrcVid = (IWMEncVideoSource2)SrcGrp.AddSource(WMENC_SOURCE_TYPE.WMENC_VIDEO);
SrcVid.SetInput("C:\\愛就愛了.rm", "", "");
//制定一個輸出檔案
IWMEncFile File = Encoder.File;
File.LocalFileName = "C:\\OutputFile.wmv";
//裝載配置檔案
WMEncProfile2 Pro = new WMEncProfile2();
Pro.LoadFromFile("c:\\schi.prx");
SrcGrp.set_Profile(Pro);
//增加檔案描述資訊
IWMEncDisplayInfo Descr = Encoder.DisplayInfo;
Descr.Author = "Author name";
Descr.Copyright = "Copyright information";
Descr.Description = "Text description of encoded content";
Descr.Rating = "Rating information";
Descr.Title = "Title of encoded content";
IWMEncAttributes Attr = Encoder.Attributes;
Attr.Add("URL", "IP address");
//開始編碼處理
Encoder.PrepareToEncode(true);
Encoder.Start();
MessageBox.Show("It's OK");
}
catch (Exception e1)
{
MessageBox.Show(e1.Message+e1.StackTrace);
}
Windows Media Encoder SDK的下載可以去微軟網站下載,本Blog提供英文版SDK幫助檔案下載。wmencsdk.chm