您的位置:首页 > 编程语言 > C#

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

2010-07-17 09:30 483 查看
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());

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: