directshow插件安装教程详解免费版中文版

directshow插件安装教程详解免费版中文版 -direct

DirectShow是一个用于处理视频和音频流的强大库,它允许开发者创建自定义的媒体播放器。要安装DirectShow插件,您需要遵循以下步骤:

确保您的计算机上已经安装了DirectShow。如果没有,请从Microsoft官方网站下载并安装。

打开Visual Studio,然后创建一个新的C++项目。在“生成”选项卡中,选择“多线程应用程序(/MTd)。

在项目中添加一个名为IFilterGraphBuilder的类,该类将负责构建整个过滤器图。在.cpp文件中,添加以下代码:

#include <windows.h>#include <directshow8.h>#include <afxext.h>using namespace AfxExt;class IFilterGraphBuilder : public CFilterGraphBuilder {public:    IFilterGraphBuilder() {        m_pFilterGraph = new CFilterGraph();    }    virtual ~IFilterGraphBuilder() {        delete m_pFilterGraph;    }    virtual HRESULT BuildFilterGraph(void* pContext) {        HRESULT hr = S_OK;        m_pFilterGraph->AddFilter(m_pSource, m_pDestination);        return hr;    }private:    CFilterGraph* m_pFilterGraph;};
.cpp文件中,添加以下代码以设置源和目标过滤器:
#include "IFilterGraphBuilder.h"#include "IMediaEvent.h"#include "IMediaControlBlock.h"#include "IMediaSample.h"#include "IMediaSampleList.h"#include "IMediaSampleDescription.h"#include "IMediaSampleDescriptionList.h"#include "IMediaSampleDescriptionItem.h"#include "IMediaSampleDescriptionItemList.h"#include "IMediaSampleDescriptionItemItem.h"#include "IMediaSampleDescriptionItemItemList.h"#include "IMediaSampleDescriptionItemItemItem.h"#include "IMediaSampleDescriptionItemItemListItem.h"#include "IMediaSampleDescriptionItemItemItemItem.h"#include "IMediaSampleDescriptionItemItemItemListItemItem.h"#include "IMediaSampleDescriptionItemItemItemItemItem.h"#include "IMediaSampleDescriptionItemItemItemListItemItemItem.h"#include "IMediaSampleDescriptionItemItemItemItemItemItem.h"#include "IMediaSampleDescriptionItemItemItemListItemItemItemItemItem.h"#include "IMediaSampleDescriptionItemItemItemItemItemItemItemItem.h"#include "IMediaSampleDescriptionItemItemItemListItemItemItemItemItemItemItem.h"#include "IMediaSampleDescriptionItemItemItemItemItemItemItemItemItemItem.h"#include "IMediaSampleDescriptionItemItemItemListItemItemItemItemItemItemItemItemItem.h"#include "IMediaSampleDescriptionItemItemItemItemItemItemItemItemItemItemItem.h"#include "IMediaSampleDescriptionItemItemItemListItemItemItemItemItemItemItemItemItemItem.h"#include "IMediaSampleDescriptionItemItemItemItemItemItemItemItemItemItemItemItem.h"#include "IMediaSampleDescriptionItemItemListItemItemItemItemItemItemItemItemItemItem.h"#include "IMediaSampleDescriptionItemItemListItemItemItemItemItemItemItemItemItemItem.h"#include "IMediaSampleDescriptionItemListItemItemItemItemItemItemItemItemItemItem.h"#include "IMediaSampleDescriptionList.h"#include "IMediaSampleDescriptionListItem.h"#include "IMediaSampleDescriptionListItemList.h"#include "IMediaSampleDescriptionListItemListList.h"#include "IMediaSampleDescriptionListItemListListList.h"#include "IMediaSampleDescriptionListItemListListListList.h"#include "IMediaSampleDescriptionListItemListListListListList.h"#include "IMediaSampleDescriptionListItemListListListListListList.h"#include "IMediaSampleDescriptionListItemListListListListListListList.h"#include "IMediaSampleDescriptionListItemListListListListListListListList.h"#include "IMediaSampleDescriptionListItemListListListListListListListListL.h"#include "IMediaSampleDescriptionListItemListListListListListListListL.h"#include "IMediaSampleDescriptionListItemListListListListListListL.h"#include "IMediaSampleDescriptionListItemListListListListListL.h"#include "IMediaSampleDescriptionListItemListListListListL.h"#include "IMediaSampleDescriptionListItemListListListListL.h"#include "IMediaSampleDescriptionListItemListListListListL.h"#include "IMediaSampleDescriptionListItemListListListListL.h"#include "IMediaSampleDescriptionListItemListListListListL.h"#include "IMediaSampleDescriptionListItemListListListListL.h"#include "IMediaSampleDescriptionListItemListListListListL.h"#include "IMediaSampleDescriptionListItemListListListListL.h"#include "IMediaSampleDescriptionListItemListListListListL.h"#include "IMediaSampleDescriptionListItemListListListListL.h"#include "IMediaSampleDescriptionListItemListListListListL.h"#include "IMediaSampleDescriptionListItemListListListListL.h"#include "IMediaSampleDescriptionListItemListListListListL.h"#include "IMediaSampleDescriptionListItemListListListListL.h"#include "IMediaSampleDescriptionListItemListListListListL.h"#include "IMediaSampleDescriptionListItemListListListListL.h"#include "IMediaSampleDescriptionListItemListListListListL.h"#include "IMediaSampleDescriptionListItemListListListListL.h"#include "IMediaSampleDescriptionListItemListListListListL.h"#include "IMediaSampleDescriptionListItemListListListListL.h"#include "IMediaSampleDescriptionListItemListListListListL.h"#include "IMediaSampleDescriptionListItemListListListListL.h"#include "IMediaSampleDescriptionListItemListListListListL.h"#include "IMediaSampleDescriptionListItemListListListListL.h"#include "IMediaSampleDescriptionListItemListListListListL.h"#include "IMediaSampleDescriptionListItemListListListListL.h"#include "IMediaSampleDescriptionListItemListListListListL.h"#include "IMediaSampleDescriptionListItemListListListListL.h"#include "IMediaSampleDescriptionListItemListListListListL.h"#include "IMediaSampleDescriptionListItemListListListListL.h"#include "IMediaSampleDescriptionListFilters.h"#include "IMediaSampleDescriptionFilters.h"#include "IMediaSampleDescriptionFilters.h"#include "IMediaSampleDescriptionFilters.h"#include "IMediaSampleDescriptionFilters.h"#include "IMediaSampleDescriptionFilters.h"#include "IMediaSampleDescriptionFilters.h"#include "IMediaSampleDescriptionFilters.h"#include "IMediaSampleDescriptionFilters.h"#include "IMediaSampleDescriptionFilters.h"#include "IMediaSampleDescriptionFilters.h"#include "IMediaSampleDescriptionFilters.h"#graphbuilder::BuildFilterGraph(&m_pSource, &m_pDestination);
.cpp文件中,添加以下代码以设置源和目标过滤器:
// 创建一个源过滤器对象,将其连接到源输出端口上。这里我们使用一个简单的缓冲区作为示例。CComPtr<IDXGIOutputDevice> m_pSource;m_pSource = CoCreateInstance(__uuidof(IDXGIOutputDevice), NULL, CLSCTX_ALL, __uuidof(IDXGIOutputDevice), (void**)&m_pSource);m_pSource->GetOutputBuffer(0, &m_pSourceBuffer);m_pSourceBuffer->Lock(); // 锁定缓冲区,以便我们可以在其中写入数据。m_pSourceBuffer->SetData(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0

na.png

本网站文章未经允许禁止转载,合作/权益/投稿 请联系平台管理员 Email:epebiz@outlook.com