`
gaofen100
  • 浏览: 1228141 次
文章分类
社区版块
存档分类
最新评论

DirectShow 视频捕获(3)

 
阅读更多

Capture Graph Builder

原文:http://msdn.microsoft.com/en-us/library/ms940047.aspx

执行视频或者音频捕获的过滤图表叫做捕获图表。捕获图表经常比 文件回放图表复杂。为了应用程序更简单的创建捕获图表,DirectShow提供了一个Capture Graph Builder 帮助对象。Capture Graph Builder暴露了ICaptureGraphBuilder2接口,这些接口包含创建和控制捕获图表的方法。

开始时调用CoCreateInstance创建一个新Capture Graph Builder和 Filter Graph Manager实例。然后使用指向过滤器图表管理器的IGraphBuilder 接口的指针调用ICaptureGraphBuilder2::SetFiltergraph来初始化Capture Graph Builder。

下面的代码显示了执行这些步骤的相关函数

HRESULT InitCaptureGraphBuilder(

IGraphBuilder **ppGraph, // Receives the pointer.

ICaptureGraphBuilder2 **ppBuild // Receives the pointer.

)

{

if (!ppGraph || !ppBuild) {

return E_POINTER;

}

IGraphBuilder *pGraph = NULL;

ICaptureGraphBuilder2 *pBuild = NULL;

// Create the Capture Graph Builder.

HRESULT hr = CoCreateInstance(CLSID_CaptureGraphBuilder, NULL,

CLSCTX_INPROC_SERVER, IID_IcaptureGraphBuilder2, (void**)&pBuild);

if (SUCCEEDED(hr)) {

// Create the Filter Graph Manager.

hr = CoCreateInstance(CLSID_FilterGraph, 0, CLSCTX_INPROC_SERVER,

IID_IGraphBuilder, (void**)&pGraph);

if (SUCCEEDED(hr)) {

// Initialize the Capture Graph Builder.

pBuild->SetFiltergraph(pGraph);

// Return both interface pointers to the caller.

*ppBuild = pBuild;

*ppGraph = pGraph; // The caller must release both interfaces.

return S_OK;

}

else {

pBuild->Release();

}

}

return hr; // Failed

}

在这段视频捕获的代码中,假设你使用Capture Graph Builder来创建捕获图表。并且可以使用IGraphBuilder方法来创建完整的捕获图表。这被认为是一个高级的方法,而且Capture Graph Builder 方法要优先选择。要获取更多信息参加Advanced Capture Topics.

分享到:
评论

相关推荐

    通过DirectShow进行视频预览和捕获

    1. **捕获滤波器(Capture Filter)**:这是视频捕获的核心,它可以控制设备的捕获参数,并处理来自设备的数据。 2. **文件写入滤波器(File Writer Filter)**:将捕获的数据写入文件,如ASF Writer Filter用于创建...

    视频捕获源程序 directShow视频捕获

    这个压缩包中的"视频捕获源程序 directShow视频捕获"是一个基于DirectShow的示例程序,它提供了视频捕获的功能,可以帮助开发者深入理解如何利用DirectShow SDK来创建自己的视频捕获应用。 DirectShow主要由两部分...

    VC通过DirectShow进行视频预览和捕获

    对于视频捕获,你还需要配置捕获设备的属性,如分辨率、帧率等,然后使用Sample Grabber或Media Sample Grabber滤镜来截取视频帧。捕获的帧可以保存为文件,或者实时处理。 9. **错误处理**: 在开发过程中,必须...

    directshow 视频捕获例子

    这个压缩包中的内容是一个DirectShow视频捕获的例子,对于初学者或者开发者来说,这是一个非常实用的学习资源。下面将详细解析这个例子中的关键知识点。 1. **DirectShow概念与架构**: DirectShow是一个组件对象...

    利用VC++实现基于DirectShow的视频捕获.pdf

    ### 基于VC++与DirectShow的视频捕获技术详解 #### 引言 在Windows平台上,视频捕获的传统处理方法曾依赖于VFW(Video For Windows)函数,但随着技术的发展,这一传统模式逐渐暴露出其局限性,尤其是在面向对象...

    基于directshow的视频捕获

    基于directshow的视频捕获.pdf,视频捕获,过滤器

    基于DirectShow视频及图片捕获软件的开发

    ### 基于DirectShow视频及图片捕获软件的开发 #### 一、DirectShow概述 **DirectShow** 是微软公司推出的一个强大的流媒体处理框架,主要应用在Windows平台上。DirectShow不仅支持视频和音频的播放,也支持媒体...

    一个简单的基于DirectShow的视频捕获程序

    DirectShow是微软开发的一个强大的...这个简单的DirectShow视频捕获程序的实现,为初学者提供了理解多媒体处理和DirectShow框架的良好起点。通过深入学习和实践,开发者可以构建更复杂的应用,如视频录制、直播推流等。

    基于DirectShow的视频捕获

    #### 五、DirectShow视频捕获实现 在DirectShow中实现视频捕获主要涉及以下步骤: 1. **初始化**:创建过滤器图表管理器对象。 2. **添加过滤器**:将源过滤器(如视频捕获设备)和渲染过滤器添加到过滤器图表中。...

    DirectShow 开发视频捕获.rar

    3. ** IAMStreamConfig 接口**:此接口用于配置视频捕获设备的参数,如分辨率、帧率等。开发者可以通过这个接口来定制捕获的视频质量。 4. ** IAMVideoControl 接口**:这个接口提供了对视频设备的控制功能,如开始...

    DirectShow视频预览捕获

    这个程序示例是基于DirectShow的视频捕获和预览功能,非常适合初学者学习和理解DirectShow的工作原理。 在DirectShow中,视频捕获涉及到以下几个关键概念: 1. **Filter Graph**:Filter Graph是DirectShow的核心...

    F# + DirectShow.NET 捕获摄像头视频源码

    DirectShow.NET是一个开源项目,它为.NET Framework提供了对Microsoft DirectShow API的全面封装,允许开发者轻松地创建多媒体应用程序,如视频播放器、视频编辑工具以及我们的案例——摄像头视频捕获。 首先,让...

    DirectShow 开发视频捕获_Vc_

    在这个“DirectShow 开发视频捕获_Vc_”项目中,我们将探讨如何使用C++(VC++)和DirectShow API来构建一个视频捕获程序。 1. **DirectShow基础知识**: - DirectShow是Microsoft的Media Foundation之前的多媒体...

    directshow实现视频捕获(源码)vs2005

    代码中,`CCaptureClass`是自定义的类,它封装了DirectShow视频捕获的核心功能。这个类的成员包括对滤波器链表的管理、捕获和预览视频的相关接口。例如,`EnumDevices`方法用于枚举可用的视频设备,`ConfigCameraPin...

    DirectShow视频音频捕捉

    在这个“DirectShow视频音频捕捉”的项目中,我们将深入探讨如何利用DirectShow来实现摄像头画面的捕获以及系统声音的捕获。 首先,`CaptionVideo.vcxproj`和`.vcxproj.user`是Visual Studio的项目文件,用于定义...

    DirectShow进行视频预览和捕获.rar

    DirectShow主要应用于Windows平台,它构建在COM(组件对象模型)之上,提供了丰富的API接口,能够实现高质量的媒体播放、视频捕获、视频编码和解码等多种功能。在视频预览和捕获方面,DirectShow提供了一整套的类和...

    Windows下通过DirectShow控制USB摄像头,捕获视频流

    在这个场景下,我们将使用"视频捕获"过滤器来获取摄像头的实时视频流。 要实现这个功能,你需要具备以下关键步骤: 1. **安装DirectX SDK**:如描述中所述,编译和运行相关的DirectShow程序之前,确保已安装了...

    DirectShow 视频捕获源码示例,C 技术实现.rar

    采用C 的DirectShow技术编写的视频捕获源码示例,测试电脑没有摄像头,可能程序还有些小错误,不过对于了解视频捕获原理及编写方法应该有帮助,有这方面需要的朋友可以下载参考一下。

    C# WinForm DirectShow视频采集及图片抓取实例DxSnap(绝对源码)

    1. **视频捕获设备选择**:项目首先需要识别并枚举系统中可用的视频捕获设备,如内置摄像头或外接USB摄像头。这可以通过`ICaptureGraphBuilder2`接口的`FindSourceByCategory`方法实现。 2. **过滤器图构建**:构建...

Global site tag (gtag.js) - Google Analytics