DirectShow 多媒体编程中的难题
1. 请看以下程序:
IGraphBuilder* m_IGraphBuilder;
HRESULT hr;
CAUUID cauuid;
IBaseFilter *pcb;
ISpecifyPropertyPages *pSpec;
hr = CoCreateInstance (CLSID_FilterGraph, NULL, CLSCTX_INPROC,
IID_IGraphBuilder, (void **) &m_IGraphBuilder);
if (FAILED(hr))
ShowMessage(TEXT("建m_IGraphBuilder失败"));
if(!AddFilter2(CLSID_VideoRenderer, "Video Renderer")) //我自编的
{
ShowMessage("Add Video Renderer Error!");
return false;
}
m_IGraphBuilder->FindFilterByName(L"Video Renderer",&pcb);
hr = pcb->QueryInterface(IID_ISpecifyPropertyPages, (void **)&pSpec);
if (hr == S_OK) {
hr = pSpec->GetPages(&cauuid);
hr = OleCreatePropertyFrame(NULL, 30, 30, NULL, 1, (IUnknown **)&pcb, cauuid.cElems,
(GUID *)cauuid.pElems, 0, 0, NULL);
CoTaskMemFree(cauuid.pElems);
pSpec->Release();
}
pcb->Release();
...
它每次都要用一DIALOG, 能否不用OleCreatePropertyFrame直接改Filter的属性
2. 我有一StreamMachine 2210 PCI Capture卡, 我想单帧捕捉,我用的是以下程序
IBasicVideo2 * ba = NULL;
HRESULT hr;
long z;
long *image=NULL;
hr = m_IGraphBuilder->QueryInterface(IID_IBasicVideo2, (LPVOID *) &ba);
if (FAILED(hr))
return hr;
hr=ba->GetCurrentImage(&z,image);
char* buffer = new char[z];
Paush(); //暂停
hr = ba->GetCurrentImage(&z,(long*)buffer);
Pause(); //继续
if(SUCCEEDED(hr))
WriteDIB("aaa.bmp",buffer,z);
else
ShowMessage("Error!");
delete buffer;
ba->Release();
但这段程序用于预览时总是Error回放时没问题,Why???
有无其它单帧捕捉的办法?(我的卡不支持AVI捕捉,只支持MPEG1,MPEG2,随卡的应用程序
MPEG PLAY 支持单帧捕捉)
Filter 的连接如下:
preview:
"StreamMachine 2210 PCI Capture"->"Color Space Converter"->"Video Renderer"
Decode:
"File Source (Async.)"->"Ligos MPEG Splitter"->"Ligos MPEG Video Decoder"-> "Color Space Converter"->"Video Renderer"
...全文
相关推荐
delphi directshow 控件
DirectShow是微软开发的一个强大的多媒体处理框架,用于处理视频和音频流。在Delphi编程环境中,我们可以使用DirectShow控件来实现丰富的多媒体功能,如播放、捕获、编辑音视频等。
DirectShow与VMR9在多媒体处理中的应用
视频捕获是多媒体处理中的一个核心环节,它涉及到从视频源(如摄像头、电视调谐器、视频采集卡等)捕获连续的图像序列,并将这些图像序列转换为数字格式存储于计算机中。这一过程通常包括以下几个步骤:信号采集:原始的视频信号通常为模拟信号,需要通过硬件设备如视频采集卡将模拟信号转换为数字信号。压缩编码:数字视频信号占用的数据量非常大,为了便于存储和传输,需要通过压缩算法对数据进行编码,常见压缩格式有MPEG、H.264等。数据传输:编码后的视频数据通过计算机总线或接口传入内存或存储介质。
DirectShow
在开发DirectShow应用程序时,开发者需要熟悉COM(Component Object Model)编程,因为DirectShow是基于COM的。
DirectShow多媒体开发
DirectShow是微软推出的一种强大的多媒体框架,用于处理音频和视频流。它被广泛应用于视频采集、播放、编辑等多媒体应用的开发。
DirectShow编程详解
### DirectShow编程详解#### 一、DirectShow概述**DirectShow** 是一个在 Windows 平台上用于处理多媒体数据的强大框架。



