`
bint79bint
  • 浏览: 13221 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

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

 
阅读更多

C# windows media encoder编程 JPG与MP3制作WMV视频-windows media encoder sdk解决方案
2010年07月17日
  http://hi.baidu.com/xulei1143/blog/item/ed443ef449 08b363dcc4742d.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.WME NC_PROTOCOL_HTTP, 8080);
  */
  Encoder.Start();//录制开始
  Postview.SetViewProperties(lPostviewStream, (int)panel2.Handle);
  Postview.StartView(lPostviewStream);
  MessageBox.Show("ok.");
  }
  catch (Exception e)
  {
  MessageBox.Show(e.ToString());
  }
  }
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics