Windows Media Encode 9简介及SDK

Windows Media Encode 9是Windows Media 9 Series组成部分之一,它的主要作用是进行编码。Windows Media 9 Series包括了 Windows Media Audio 9 Series、Windows Media Video 9 Series、Windows Media Encoder 9 Series、Windows Media Services 9 Series、Windows Media Player 9 Series、Windows Media Rights Manager 9 Series、Windows Media 9 Series SDK。基于这个平台,开发者可以利用播放器、解码器以及服务器端配合开发出数字媒体应用程序,通过与Windows 家族的最新成员:Windows XP Media Center Edition配合,相信能给用户带来更流畅的数码娱乐享受。

以上是微软的一些产品,微软提供给我们,让我们可以进行开发的是Windows Media 9 SDK。SDK是软件开发工具包Software Develop Kits。Windows Media 9 SDK主要包括Windows Media Player SDK、Windows Media Format   SDK、Windows Media Rights Manager SDK、Windows Media Encoder SDK、Windows Media Services SDK。

我们可以使用Windows Media Encoder SDK开发自己的编码应用。微软的Windows Media Encoder(Windows Media 编码器)就是使用Windows Media Encoder SDK进行开发的。编码应该如何理解呢?或者说编码器应该具有什么功能呢?将设备或者文件中的流媒体采集到并按照微软的媒体格式进行编码,并输出,这就是编码器的作用。用更加执白的话说就是采集、格式转换、压缩。Windows Media Encoder的源可以是设备也可以是文件,设备可以是屏幕或者摄像头或者其他的视频、音频设备,文件可以是视频文件、音频文件。Windows Media Encoder的输出可以将内容编码到文件,也可以对内容进行实况广播。如果要进行广播,既可以通过推传递(在客户端没有请求数据的情况下传递)将流传输到运行 Windows Media Services 的服务器上,也可以允许Windows Media 服务器和播放机通过拉传递(仅在客户端发出请求时将数据传递给客户)直接从编码器接收流。

Windows Media Encoder SDK不会和Windows Media Encoder一起安装,需要单独下载,Windows Media Encoder SDK中安装了一些示例和帮助文件。Windows Media Encoder SDK以COM组件的方式提供服务,可以参考wmencsdk.chm的内容。

下面以一个简单的例子来展示一下C#使用Windows Media Encoder SDK进行开发的情形。

1 创建Windows Media Encoder 对象
要想运行Windows Media Encoder,要创建一个WMEncoder 对象。你可以有两种方法:如果你不要显示Windows Media Encoder用户界面(UI),你可以直接创建一个WMEncoder 对象。如果你要显示界面,你可以创建一个WMEncoderApp 对象,然后用该对象获取WMEncoder 对象。因为WMEncoderApp 是一个进程外对象,WMEncoder是一个进程内对象。
2 创建多媒体流的源组
源组包括同步的要编码的多媒体流,它必须包含一个音频流,并且可以再包括一个视频或者脚本。你可以创建多个源组,但是在某一个时刻,必须只有一个源组被编码,使用IWMEncSourceGroupCollection 管理源组,IWMEncSourceGroup管理特定的源组,IWMEncSource 管理特定的多媒体流
3 从文件或设备中捕获多媒体流
使用IWMEncSource 去装载流,或者从文件装载,或者从设备中装载,使用IWMEncSourceGroup可以添加流到源组中。
4 选择编码过程的配置文件
配置文件指定编解码率,指定输出流的速率。只能有一个配置文件可以被配置到流文件中。Windows Media Encoder 提供的缺省的配置文件不可以被编辑或者删除,但用户可以自己Profile Manager自己创建配置文件。使用IWMEncProfileCollection 来管理配置文件,使用IWMEncProfile 管理特定的配置文件。也可以用Windows Media Format SDK自主开发(虎哥注:如果这也叫自主开发,那没有什么不是自主开发的了,呵呵) 创建和编辑配置文件的系统,你也可以使用IWMEncProfileManager 创建Profile Manager dialog boxes使用户可以自由的编辑和添加。
5 指定输出 
你可以将编码后的流或者存档或者广播,用IWMEncBroadcast 指定广播的端口,IWMEncFile可以指定存档的文件名的存储位置。
6 增加选择性的描述信息.
IWMEncAttributes可以使你指定自定义的编码内容的信息。IWMEncDisplayInfo 可以使你能显示编码内容的信息,你也可以通过使用MSPropShell控件来显示会话信息。你也可以将这些数据自己显示出来。
7 运行Windows Media Encoder
使用IWMEncoder来开始或者停止编码过程。


 

             try
             {
                // 创建WMEncoder object.
                 WMEncoder Encoder = new WMEncoder();
                //获得组源集合
                 IWMEncSourceGroupCollection SrcGrpColl = Encoder.SourceGroupCollection;

                //向集合中增加一个组源
                 IWMEncSourceGroup SrcGrp = SrcGrpColl.Add("SG_1");

                //向组源中增加一个音频源和视频源
                 IWMEncSource SrcAud = SrcGrp.AddSource(WMENC_SOURCE_TYPE.WMENC_AUDIO);
                 SrcAud.SetInput("C://爱就爱了.rm", "", "");

                 IWMEncVideoSource2 SrcVid = (IWMEncVideoSource2)SrcGrp.AddSource(WMENC_SOURCE_TYPE.WMENC_VIDEO);
                 SrcVid.SetInput("C://爱就爱了.rm", "", "");

                //制定一个输出文件
                 IWMEncFile File = Encoder.File;
                 File.LocalFileName = "C://OutputFile.wmv";

                //装载配置文件
                 WMEncProfile2 Pro = new WMEncProfile2();
                 Pro.LoadFromFile("c://schi.prx");
                 SrcGrp.set_Profile(Pro);
              
                //增加文件描述信息
                 IWMEncDisplayInfo Descr = Encoder.DisplayInfo;
                 Descr.Author = "Author name";
                 Descr.Copyright = "Copyright information";
                 Descr.Description = "Text description of encoded content";
                 Descr.Rating = "Rating information";
                 Descr.Title = "Title of encoded content";

                 IWMEncAttributes Attr = Encoder.Attributes;
                 Attr.Add("URL", "IP address");
               
                //开始编码处理
                 Encoder.PrepareToEncode(true);
                 Encoder.Start();
                 MessageBox.Show("It's OK");

             }
             catch  (Exception e1)
             {
                 MessageBox.Show(e1.Message+e1.StackTrace);
             }

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值