互联网博客
http://internet.blog.enorth.com.cn >复制 >收藏本站
首页 IT技术(99) 音视频(7) 汽车(6) 搜索引擎(2) 我的日志(34) 歌词(12) James(19) 笑话(10) Blog技术(4) 诗词歌赋(7)

北方博客 > 首页 > Windows media encoder及其SDK编程说明
Google
3上一篇: 保留weblogic中jsp编译后生成的java文件 下一篇: 去掉jsessionid4
[IT技术]Windows media encoder及其SDK编程说明
Tags: windows sdk media encoder

概述


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


发表评论
 
昵称
主页
标题
内容
算式的解
看不清校验算式?
 



 


公告

抗震救灾

众志成城

站内搜索

最新日志

linux 中文显示乱码解决办法
国足欢迎你
A780的快捷键图标设置
Jfreechart中画双Y坐标的折线图
在dwr的回调函数中传递多个参数
Lemon Tree
去掉jsessionid
Windows media encoder及其SDK编程说明
保留weblogic中jsp编译后生成的java文件
行为艺术家扮“房奴”抗议房产商(图)
DWR 调用返回值方法
民间节油“秘笈” “节油王”道出节油六高招
开车十五年心得!真真实实的26条教训!
ChannelSocket INFO: connection timeout reached
杭州干部徐新贤死了都要爱!
创业前请回答这些问题
Linux下让编译安装的Apache自动启动
IllegalStateException: getOutputStream() 异常的解决方案
LINUX下配置系统环境变量
Servlet图像处理 X11错误解决方法
解决winxp搜索不到文件中的某个字或词组的问题
夜的第七章
Linux下两种自动启动Tomcat的方法
使用mod_usertrack跟踪用户
apache2.0 prefork和worker模块性能调优

网友评论

Re:一个女人的十年 [录音+文字]
Re:一个女人的十年 [录音+文字]
Re:一个女人的十年 [录音+文字]
Re:一个女人的十年 [录音+文字]
Re:一个女人的十年 [录音+文字]
Re:一个女人的十年 [录音+文字]
Re:一个女人的十年 [录音+文字]
Re:搜索引擎优化SEO全攻略
Re:搜索引擎优化SEO全攻略
Re:一个女人的十年 [录音+文字]
Re:一个女人的十年 [录音+文字]
Re:一个女人的十年 [录音+文字]
Re:国足欢迎你
Re:国足欢迎你
Re:蒋捷《虞美人·少年听雨歌楼上》
Re:将James配置为需要身份认证的SMTP服务器
Re:将James配置为需要身份认证的SMTP服务器
Re:一个女人的十年 [录音+文字]
Re:一个女人的十年 [录音+文字]
Re:一个女人的十年 [录音+文字]

我的链接

妮妮的世界
小宝成长日记
汽车维修、保养专业站

CSS2中文手册
SpringFramework中文论坛
以前的事 现在的事 将来的事
DynamicDrive
CSDN 金·评·没|YanHui's blog
tomcat 5.0 文档
sixsun的blog
王育琨专栏
西安信息资源网
[埃里克森]的Blog



flashplayer.cn

Apache HTTP Server Version 2.2 文档
天津一汽
Tortoise Cvs Homepage
天津博客
Java开源大全
OpenSymphony
Java视线论坛

网友留言

<写留言>
你的博客做得很棒
认识你好高兴
其实我也是学计算机的
你好,朋友!
你是不是搞程序的?
交朋识有
祝你新年快乐!
经常关注你的blog,希望有机会认识一下!
元旦快乐
奔唐

站内统计

日志总数:200
今日访问:1287
访问总数:1097044
评论总数:309
留言总数:13

存档

2008年01月(1)
2007年12月(3)
2007年11月(2)
2007年10月(1)
2007年08月(2)
2007年07月(1)
2007年06月(3)
2007年05月(2)
2007年04月(5)
2007年03月(2)
2007年01月(2)
2006年12月(3)
2006年11月(1)
2006年09月(5)
2006年08月(2)
2006年07月(8)
2006年06月(7)
2006年05月(9)
2006年04月(13)
2006年03月(30)
2006年02月(23)
2006年01月(9)
2005年12月(12)
2005年11月(23)
2005年10月(23)
2005年09月(2)

控制台入口

用户名
密 码