Windows Media Encode 9 及SDK

it2022-05-05  172

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进行开发的情形。

 

             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); Windows Media Encoder SDK的下载可以去微软网站下载,本Blog提供英文版SDK帮助文件下载。wmencsdk.chm   转自:http://www.cnblogs.com/hobe/archive/2006/09/28/517366.html#1554305

概述

windows media 是微软推出的流式播放媒体格式,有asf(advanced stream format),wma(windows media audio),wmv(windows media vedio)三种格式,其中.asf可以包括音频和视频的内容,可以用windows media on-demond producer 将wav文件或avi压缩而成,且只能压缩这两种格式。asf文件与wma及wmv两种格式等价,微软推荐使用wma和wmv格式。 wma是音频文件,wmv是视频文件。利用微软的windows media encoder 7可以将wav,mp3,wma,asf以及直接的输入设备作为音频的输入,将asf,avi,wmv,mpg,bmp,以及视频捕获作为视频输入。 输出可以是wma和wmv文件,也可以是通过网络端口实况播放。 Windows media format SDK 缺少授权证书文件(WMStub.lib)不能用,该文件可以向微软注册后得到。要求填写打印表格并邮寄到微软公司(不是电子邮寄)。

通过SDK编码的步骤

请参照所附示例 a 首先生成Windows media encoder 对象(vb),得到IWMEncoder 接口指针(vc) 有两个途径:如果不希望有界面,直接创建WMEncoder对象;如果要界面(UI),创建WMEncoderApp对象,通过它得到WMEncoder对象。因为WMEncoderApp是进程外(out-of-process)对象,而后者是进程内对象。 b.创建一个源组(source group)来放置多媒体流 源组保存被编码的同步多媒体流。一个源组必须包括一个音频(Audio)流,可以包括视频和脚本(script)。可以创建多个源组,用 IWMEncSourceGroupCollection接口来管理。 IWMEncSourceGroup 接口管理一个特定源组, IWMEncSource接口来管理特定源。 c.从文件或设备中捕获多媒体流 IWMEncSource接口从文件中载入流或从设备中捕获流,用 IWMEncSourceGroup接口将流加入到源组 d.从编码会话(encode  session)中选一个配置文件(profile) 配置文件指定编解码器(codec),确定比特率等。一个编码会话的多个源组只能指定一个配置文件。配置文件包括不能编辑删除的系统配置文件和自定义配置文件,后者可以用配置文件管理器创建和编辑。但程序化的创建和编辑配置文件只能用Windows media Format SDK进行。或者用 IWMEncProfileManager 接口创建配置文件管理器对话框来创建和管理配置文件。 由于我们Format SDK不能用,用 IWMEncProfileManager接口来创建一个对话框时,程序从Wav转到wma时就正确,而不出现这个接口创建的对话框,则只能转成一个文件头或者一截文件。用VB,VC,Windows script运行都如此。当出现任何Windows Media界面的东西,回调类会检测到OnSourceStateChange,执行WMENC_SOURCE_START,不出现界面则没有执行此步。 不明白的地方是为何只能生成一个文件头或者编码不完全,按理要么不编码,报告错误,要么完全编码。问题就出在这里。 可能的原因:由于没有在其他的装有windows 2000的机子上编译,我不能确定是否与我的计算机相关。例如我的编译器的问题,我安装SDK的问题等。如果排除,会不会SDK本身有问题。因为微软的这套SDK是要注册的,没有注册有可能出错。然后,可能是我程序本身的问题,比如缺少应有的初始化,或缺少启动源组的语句,这种情况应该比较微小。 解决办法:针对以上原因查找,或者创建一个线程关闭出现的界面。 e.确定输出选项 可以归档或者广播。用 IWMEncBroadcast接口选地址和端口广播,用 IWMEncFile 接口来指定一个文件存储编码的内容。 f.加入可选描述信息 IWMEncAttributes 接口用来指定属性, IWMEncDisplayInfo 接口用来指定内容的一般描述信息, MSPropShell 用来显示预定义会话属性界面。这些都不是必须的。 g.运行编码器 用 IWMEncoder 接口开始和停止编码。

Encoder和Fomat SDK的关系

Format SDK 是Encoder的底层。Windows Media Encoder SDK 是建立在Format SDK 之上的应用程序接口(API),后者包含的接口从文件或缓冲读取媒体数据,写基于windows media 的内容(content)。前者扩展以上功能以便建立更高层次的编程解决方案,例如配置(configuration),捕获,转换和编码处理。二者都将原始多媒体内容(raw multimedia content)转换为windows media 文件或流,但用Format SDK 必须在处理时每一步都管理数据流。

 

 

转载于:https://www.cnblogs.com/willwayer/archive/2009/08/07/1541443.html

相关资源:各显卡算力对照表!

最新回复(0)