微軟的wmencoder sdk支持將圖片\視頻轉換成標準的WMV文件.可以通過其提供的簡單功能製作簡單的視頻.唯一遺憾的是SDK不提供轉場效果,要做切換效果只能想別的辦法了。該SDK支持VB,C++,C#的編碼.
環境: windows media encoder sdk,可在微軟網站下載
C#實現:
using ...;
using WMEncoderLib;
using WMPREVIEWLib;
private void MyEncoder() {
try
{
// 創建一個Windows Media Encoder對象.
WMEncoder Encoder = new WMEncoder();
//獲取一個源的集合.
IWMEncSourceGroupCollection SrcGrpColl = Encoder.SourceGroupCollection;
//創建一個源"SG_1"
IWMEncSourceGroup2 SrcGrp = (IWMEncSourceGroup2)SrcGrpColl.Add("SG_1");
//創建一個音頻和視頻的源
IWMEncVideoSource2 SrcVid = (IWMEncVideoSource2)SrcGrp.AddSource(WMENC_SOURCE_TYPE.WMENC_VIDEO);
IWMEncSource SrcAud = SrcGrp.AddSource(WMENC_SOURCE_TYPE.WMENC_AUDIO);
//指定源文件
SrcAud.SetInput("C:\\jintian.mp3", "", "");//MP3
SrcVid.SetInput("C:\\result.wmv", "", "");//視頻,可換成圖片
//裁剪場景
SrcVid.CroppingBottomMargin = 25;
SrcVid.CroppingLeftMargin = 25;
SrcVid.CroppingRightMargin = 25;
SrcVid.CroppingTopMargin = 25;
//預覽
IWMEncDataViewCollection DVColl_Postview;
DVColl_Postview = SrcVid.PostviewCollection;
WMEncDataView Postview;
Postview = new WMEncDataView();
int lPostviewStream;
lPostviewStream = DVColl_Postview.Add(Postview);
IWMEncProfileCollection ProColl = Encoder.ProfileCollection;
WMEncProfile2 Pro;
Pro = new WMEncProfile2();
//定義配置文件profile.具體的請看media encoder中的設置
/*for (int i = 0; i < ProColl.Count; i++)
{
Pro = ProColl.Item(i);
if (Pro.Name == "屏幕視頻 - 高(CBR)")
{*/
Pro.LoadFromFile("myPrx.prx");
SrcGrp.set_Profile(Pro);
/*break;
}
}*/
//輸出到目的文件
IWMEncFile2 File = (IWMEncFile2)Encoder.File;
File.LocalFileName = "C:\\test.wmv";
//如果源是圖片則需要取消如下的註釋。因爲圖片是靜止的,本身不會播放.開啓廣播模式將會使圖片進行不間斷廣播,從而實現連續的錄製
/*Encoder.PrepareToEncode(true);
IWMEncBroadcast Brdcst = Encoder.Broadcast;
Brdcst.set_PortNumber(WMENC_BROADCAST_PROTOCOL.WMENC_PROTOCOL_HTTP, 8080);
*/
Encoder.Start();//錄製開始
Postview.SetViewProperties(lPostviewStream, (int)panel2.Handle);
Postview.StartView(lPostviewStream);
MessageBox.Show("ok.");
}
catch (Exception e)
{
MessageBox.Show(e.ToString());
}
}
*建議先熟悉微軟自己的media encoder(編碼器)來熟悉視頻的製作過程與配置文件的設置等.然後再看SDK的幫助文檔.