JPG與MP3製作WMV視頻-windows media encoder sdk解決方案

JPG與MP3製作WMV視頻-windows media encoder sdk解決方案

    微軟的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的幫助文檔.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章