DirectShow配置_配置directshow

2020-02-27 其他范文 下载本文

DirectShow配置由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“配置directshow”。

vs2008下directshow的配置(2009-09-14 16:56:09)

转载

标签:分类: 沧海拾贝

directx

directshow

vs2008

配置

近来由于要做一个流媒体播放器,调研后决定在directshow的框架下做。在比较老的资料里可以知道:directshow是包含在directx SDK里面的。这里要强调一点,这是在DirectX 9.0b之前的情况,在9.0c以后,directshow和DirectX就彻底分家了,directshow被移到了windows platform sdk里。如果你只安装了DirectX9.0b之后的版本,是没有directshow的。

我的安装目录是C:Program FilesMicrosoft DirectX SDK(December 2005)。安装好了后,找到C:Program FilesMicrosoft DirectX SDK(December 2005)SamplesC++DirectShowBaseClaes下的baseclaes.sln,打开后可能会提示转换,注意留下备份。编译通过后会生成strmbasd.lib,在debug或者release目录下(取决于你程序生成的版本),第一步工作就结束了。如果编译的时候出现错误,一般是一些变量定义方面的错误,VS2k8不支持默认int定义,也就是说你如果不指定一个数据的类型,编译器会生成一个错误。而directshow里的sample代码很多都是基于VC6版本的老代码。总之根据编译器的提示把变量类型声明添上就行了,不难。

第一步工作完成后,就可以开始用directshow了。下面是使用前的准备工作。

1.首先,点击工具->选项->项目和解决方案->VC++目录。如图添加两个引用: C:Program FilesMicrosoft DirectX SDK(December

2005)SamplesC++DirectShowBaseClaes

C:Program FilesMicrosoft DirectX SDK(December 2005)Include 注意:请将C:Program FilesMicrosoft DirectX SDK(December 2005)替换为你安装directX所在的目录。

2.如图,再添加库文件的引用。

C:Program FilesMicrosoft DirectX SDK(December

2005SamplesC++DirectShowBaseClaesDebug

C:Program FilesMicrosoft DirectX SDK(December 2005)Lib

3.新建一基于对话框的MFC程序DirectShowEx,建成后点项目->属性->连接器->命令行,在附加选项中输入strmbasd.lib

4.在directShowEx.h中添加

#include

#include

将对话框初始化函数OnInitDialog()中的内容替代如下:

CDialog::OnInitDialog();

// Add “About...” menu item to system menu.// IDM_ABOUTBOX must be in the system command range.ASSERT((IDM_ABOUTBOX & 0xFFF0)== IDM_ABOUTBOX);

ASSERT(IDM_ABOUTBOX

CMenu* pSysMenu = GetSystemMenu(FALSE);

if(pSysMenu!= NULL)

{

CString strAboutMenu;

strAboutMenu.LoadString(IDS_ABOUTBOX);

if(!strAboutMenu.IsEmpty())

{

pSysMenu->AppendMenu(MF_SEPARATOR);

pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);

}

}

// Set the icon for this dialog.The framework does this automatically//when the application's main window is not a dialog

SetIcon(m_hIcon, TRUE);// Set big icon

SetIcon(m_hIcon, FALSE);// Set small icon

// TODO: Add extra initialization here

IGraphBuilder *pGraph = NULL;

IMediaControl *pControl = NULL;

IMediaEvent *pEvent = NULL;

HRESULT hr = CoInitialize(NULL);

if(FAILED(hr))

{

printf(“can't coinitizlize”);

return-1;

};

hr = CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER,IID_IGraphBuilder,(void**)&pGraph);

if(FAILED(hr))

{

printf(“can't create filtergraph”);

return-1;

}

hr = pGraph->QueryInterface(IID_IMediaControl,(void**)&pControl);hr = pGraph->QueryInterface(IID_IMediaEvent,(void**)&pEvent);

hr = pGraph->RenderFile(L“F://lx.avi”, NULL);

if(FAILED(hr))

{

printf(“cant't renderfile”);

return-1;

}

hr = pControl->Run();

if(FAILED(hr))

{

printf(“can't run”);

return-1;

}

long evCode;

pEvent->WaitForCompletion(INFINITE, &evCode);

pControl->Release();

pEvent->Release();

pControl->Release();

CoUninitialize();

printf(“Hello World!n”);

return 0;

return TRUE;// return TRUEunle you set the focus to a control

Ctrl+F5编译运行,一切OK。

《DirectShow配置.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
DirectShow配置
点击下载文档
相关专题 配置directshow directshow 配置directshow directshow
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文