C# windows media encoder编程 JPG与MP3制作WMV视频-windows media encoder sdk解决方案

http://hi.baidu.com/xulei1143/blog/item/ed443ef44908b363dcc4742d.html

网上转载的,我测试成功了。

我是win7下面,程序有不少问题,有些需要修改的地方。

 

     微软的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());
     }


}

你可能感兴趣的:(编程,exception,windows,C#,微软,audio)