流媒体学习笔记----用配置好的文件进行编码 (转)

流媒体学习笔记----用配置好的文件进行编码 (转)[@more@]

 编写编码程序可以使用已经配置好的文件进行编码,文件为“,wme”文件。

这需要调用IWMEncoder的Load()方法。其定义为:

HRESULT Load(XML:namespace prefix = o ns = "urn:schemas-microsoft-com:Office:office" />

 
 

  BSTR  bstrFileName

 
 

)  其中,BSTR是一个类似CString类的指向宽字符串的类,bstrFileName包含了编码文件的文件名,即相对路径。

 
 

HRESULTCOM中用来向用户报告各种情况的32位值。这个名称很容易让人将这种类型的值当成一个指向某个结果的句柄,

 
 

实际上并不是这样。它是一个可分为三个区域的32位值。可理解为“Heres the Result”。返值为S_OK时,表示成功。

 
 

S_OK被定义为0。失败时支持IerrorInfo接口,不同的错误有不同的错误号。

 
 

使用IWMEncoder前,需要先定义并初始化COM库,返回一个指向该接口的指针。

HRESULT hr;

 
 

  IWMEncoder* pEncoder;

 
 

// Initialize the com library and retrieve a pointer

 
 

// to an IWMEncoder interface.

 
 

  hr = CoInitialize(NULL);

 
 

  CoCreateInstance(CLSID_WMEncoder,

 
 

  NULL,

 
 

  CLSCTX_INPROC_SERVER,

 
 

  IID_IWMEncoder,

 
 

  (void**) &pEncoder);

 
 

//装载.wme文件

CComBSTR bstrFileName(L"file_name.wme");

 
 

hr = pEncoder->Load(bstrFileName);

//可以用IWMEncoder->Save()将配置文件备份保存

//准备编码

hr = pEncoder->PrepareToEncode(VARIANT_TRUE)

 
 

//启动编码

hr = pEncoder->Start();

//此时,可以用IWMEncoder->get_RunState()得到编码进程的状态。1代表正在开始,2代表正在编码,4代表正在停止,5代表已经停止。

WMENC_ENCODER_STATE enumEncoderState;

 
 

hr = pEncoder->get_RunState(&enumEncoderState);

 
 

//可用一个判断编码是否结束的if语句控制编码  如果结束,退出循环。

 
 

while(1)

 
 

{

 
 

if (enumEncoderState != WMENC_ENCODER_RUNNING)

 
 

  {

 
 

  break;

 
 

}

 
 

}

 
 

//停止编码

 
 

hr = pEncoder->Stop();

 
 

//释放占用资源

 
 

hr = pEncoder->Release();

 
 

 

 
 

 

 
 

程序需要的头文件为:

 
 

#include <windows.h>

 
 

#include   // Includes CComBSTR.

 
 

#include "wmencode.h"

 
 

 

 
 

 

 
 

 总结:这是进行编码编程的一个最基本的程序,使用已经配置好的文件进行编码。

 
 

在做的过程中,遇到了很多问题,比如:hr的含义,CComBSTR的类型,

 
 

COM的初始化。尤其是在最后编码的时候,不能得到编码的内容,是因为过早地结束了程序,

 
 

没有编码时间。经过老师的悉心指点和教导,最后终于完成。从中收获颇多。

 
 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10790690/viewspace-972320/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10790690/viewspace-972320/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值