北方博客 > 首页 > Windows media encoder及其SDK编程说明
[IT技术]Windows media encoder及其SDK编程说明
概述 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 必须在处理时每一步都管理数据流。
原文 http://dev-club.esnai.com/club/bbs/showEssence.asp?id=21128
| 字体:大 中 小 |
引用地址 http://internet.blog.enorth.com.cn/article/290029.shtml |
|
|
allenzz7 | 2007-12-28 16:25
|