Articles of directshow

如何检查我的DirectShow渲染器filter是否被使用?

在我的DirectShow项目中,我创build了一个filter(从CBaseVideoRenderer派生)来渲染到一块内存。 这在大多数情况下工作得很好,我添加了filter mGraphBuilder->AddFilter(pInterfaceInfo, MemoryRendererName); 并依靠GraphBuilder来完成剩下的工作。 但是,在某些情况下,graphics构build器和我的filter无法达成共同的格式,并会绕过我的filter创build一个新的ActiveMovie窗口。 我想知道这是什么时候发生的,所以我知道我的filter没有被使用,但不能解决问题。 我列举了我的图中的所有filter,使用以下方法查找我的filter: (编辑:我把我的GraphBuilder对象作为pGraphparameter passing给我时) HRESULT MediaPlayer::CheckFilterGraphFor(IFilterGraph *pGraph, IBaseFilter* pFilterToLookFor) { IEnumFilters *pEnum = NULL; IBaseFilter *pFilter; ULONG cFetched; HRESULT enumeratedFilterCount = 0; FILTER_INFO pRefFilterInfo; pFilterToLookFor->QueryFilterInfo(&pRefFilterInfo); HRESULT hr = pGraph->EnumFilters(&pEnum); if (SUCCEEDED(hr)) { while(pEnum->Next(1, &pFilter, &cFetched) == S_OK) { enumeratedFilterCount–; FILTER_INFO FilterInfo; hr = pFilter->QueryFilterInfo(&FilterInfo); if (SUCCEEDED(hr)) { if(wcscmp(FilterInfo.achName, pRefFilterInfo.achName) […]

虚拟摄像头input为字节stream

我没有摄像头。 我想实现虚拟摄像头(或假设备驱动程序可能),将作为正常的networking摄像头( 虚拟networking摄像头 ),并将内存stream或字节作为input。 我该如何开发? DirectShow可以帮助吗? 我什么都不知道 请帮忙 我发现有很多软件把video文件作为input,但是我想把字节stream作为input。

如何从Wave Out捕获PCM数据

如何以编程方式捕捉audio? 我正在实现一个应用程序,实时在networking上的桌面stream。 video部分完成。 我需要实现audio部分。 我需要一种方法来从声卡获取PCM数据,并将其提供给我的编码器(使用Windows Media格式实现)。 我认为答案与Win32 API中的openMixer(),waveInOpen()函数有关,但我不确定该怎么做。 如何打开必要的频道以及如何从中读取PCM数据? 提前致谢。

如何从相机捕获数据不使用DirectShow?

如何使用DirectShow从摄像头捕获数据? (在Windows的C#中)

DirectShow – 获取video帧

我正在创build一个Windowsvideo捕获应用程序,并使用DirectShow进行捕获。 随着每帧的进入,我想把它作为一个原始的RGB位图到一个缓冲区,在这一点上我的代码将做我需要的任何处理。 我一直在寻找类似于我想要做的样本,并且在我看起来在线的任何地方,人们推荐使用IMediaDet和/或ISampleGrabber接口来进行逐帧捕获。 不幸的是,两者都被弃用,甚至没有在最新版本的Windows SDK中。 在DirectShow中进行逐帧捕获的最佳(现代)方式是什么? 如果没有,我是否应该使用一个不同的库,这将使我逐帧捕获?

DirectShow在Windows上的video捕获的替代品

我正在更新目前使用DirectShow进行video捕获的程序。 虽然DirectShow似乎工作得很好,但我想知道是否还有其他function强大的或最新的SDK或API。 一些有用的function将是: 在捕捉期间提供一致的帧速率(在NTSC之间为33ms)。 使用DirectShow兼容的捕获设备。 不需要在客户的PC上安装额外的许可证。 允许同时预览和硬件编码的video。 能够被集成到一个C ++ / MFC应用程序中。 我已经研究过LeadTools多媒体捕获SDK和VisioForge Capture SDK以及微软媒体基金会 ,但是只是想知道其他人已经成功地使用了什么,然后才投入时间或资金到其中一个替代scheme中。 我不在乎这是一个商业还是开源的产品。 编辑:虽然我很欣赏解决我的特定问题的尝试,但这个问题应该是关于DirectShow的替代scheme。 所以,我删除了所有对我的具体问题的引用。 解决这个问题需要等待另一个问题。

如何让DirectShow从资源播放video?

我正在扩展应用程序,以在对话框中的控件上播放几个video之一。 从无窗口示例开始,我已经有了这个工作,但是video必须是与主可执行文件分开的文件。 从包装的angular度来看,理想的情况是将video作为资源包含在可执行文件中。 我做了一些Googlesearch,有一些“有人应该这样做”,还有几个指向Async样本的指针,尽pipe目前还不清楚如何从那里得到我想要的地方。 有谁知道一个简单的方法来做到这一点? 这似乎不是一个angular落的情况下,我有点惊讶,这不是在框中。

IGraphBuilder :: RenderFile()与VFW_E_BAD_KEY失败 – 0x800403f2

继续调查embedded式WindowsMediaPlayer问题 ,我试图做一个简单的文件播放通过DirectShow进程内服务器: ::CoInitializeEx(0, COINIT_MULTITHREADED); CComPtr<IGraphBuilder> spGraph; spGraph.CoCreateInstance(CLSID_FilterGraph, 0, CLSCTX_INPROC_SERVER); CComQIPtr<IMediaControl> spMediaControl(spGraph); // … later: spGraph->RenderFile(L"c:\\foo.wav", 0); // fails with VFW_E_BAD_KEY spMediaControl->Run(); 有趣的是,当在独立应用程序中进行testing时,这两个系统(Windows XP 32和x64)都能正常运行。 但是,在我的真实使用情况下,这是一个基于NPAPI的浏览器插件,也就是一个加载到Firefox / Chrome / Opera中的DLL。 有没有人有一个想法在这里可能会出错? 或者还有什么想法? 更新:也在微软论坛上提问。 UPDATE2: IGraphBuilder::AddSourceFilter(path,path,&base)已经失败与以下registry调用(在进程监视器中看到): “RegOpenKey”,“HKCU \ Software \ Classes \ c”,“NAME NOT FOUND”,“Desired Access:Query Value,Maximum Allowed” “RegOpenKey”,“HKCU \ Software \ Classes \ Media Type \ […]

Windows:如何获得相机支持的决议?

所以要获取摄像机列表并让用户select一个(C ++,Boost,dshow,windows),我使用这样的代码: #include "StdAfx.h" #include "list.h" #include <windows.h> #include <dshow.h> #include <boost/lexical_cast.hpp> HRESULT CamerasList::EnumerateDevices( REFGUID category, IEnumMoniker **ppEnum ) { // Create the System Device Enumerator. ICreateDevEnum *pDevEnum; HRESULT hr = CoCreateInstance(CLSID_SystemDeviceEnum, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pDevEnum)); if (SUCCEEDED(hr)) { // Create an enumerator for the category. hr = pDevEnum->CreateClassEnumerator(category, ppEnum, 0); if (hr == S_FALSE) { […]