Articles of directshow

WebCam预览和捕获到文件(Windows)

创build允许预览摄像头并将当前networking摄像头图像导出到文件的应用程序的可用选项有哪些? 编辑:我从那以后发现,MS 媒体基础提供了类似的function,从Vista向上工作的DirectShow。 然而,虽然文件,样本和论坛显然是可能的,但并不build议简单的方法来执行上述操作。 另一方面,使用DirectShow,你可以很容易地合并两个示例应用程序来实现它。 编辑:研究可用的摄像头API我也发现MS MediaCapture API看起来很有用,但是这似乎只在Windows 8上(可能被限制在托pipeC ++ / .net / javascript)。 编辑:Windows 8标准桌面上支持DirectShow(对于Metro风格的应用程序,video平台是媒体基础)。

哪些事件在UAC提示符上被触发?

显示UAC提升提示时是否触发了任何Windows事件? 我已经看过SwitchDesktop,但是看不到有关如何接收通知的任何提及。 我的直接显示应用程序performance不好,我希望能够暂停图表,当提示显示,恢复时被解雇。 我正在使用C ++与MFC,VS2008,目标XP,Vista和7。 非常感谢

DirectShow编译问题

我在64位平台和Windows SDKv 7.1上使用vs2010。 我构build了64位平台的基类,并将其configuration在我的项目中。 但我面临以下问题。我试图连接一台Logitech 910高清摄像机。 1>LogitechC910Interface.obj : error LNK2001: unresolved external symbol __imp_VariantClear 1>LogitechC910Interface.obj : error LNK2001: unresolved external symbol __imp_CoCreateInstance 1>LogitechC910Interface.obj : error LNK2001: unresolved external symbol __imp_CoUninitialize 1>LogitechC910Interface.obj : error LNK2001: unresolved external symbol __imp_VariantInit 1>LogitechC910Interface.obj : error LNK2001: unresolved external symbol __imp_CoInitializeEx 1>C:\PMD\windows\windows64bit\PMDSDK\examples\Release\simple.exe : fatal error LNK1120: 5 unresolved externals ========== […]

如何使我的DirectShowfilter的安装程序?

我一直在编写Windows程序和DLL多年,但从来没有创build一个安装程序。 我怎样才能为我编写的一些DirectShowfilter创build一个轻量级的安装程序? 安装程序需要将filter二进制文件提取到程序文件中的某个位置,然后注册它们。 它还需要提供有效的卸载。 很简单,但我不知道从哪里开始。 我正在使用Visual Studio 2010,我的代码是C ++。

UVC扩展单元和Directshow集成

我试图修改MSDN链接中提供的UVC扩展单元代码。 我已经向XUProxy.cpp中提供的CExtension类添加了其他方法。 所有这些方法都添加到interface.idl文件中。 这是代码片段。 STDMETHODIMP CExtension::GetAllCapDevices( PDEVICELIST pList, ULONG *pulDevCount, ULONG ulListNum) { HRESULT hr = S_OK; IEnumMoniker *pEnum; CoInitializeEx(NULL, COINIT_MULTITHREADED); hr = EnumerateDevices(CLSID_VideoInputDeviceCategory, &pEnum); if (SUCCEEDED(hr)) { DisplayDeviceInformation(pEnum); pEnum->Release(); } return hr; } EnumerateDevices和DisplayDeviceInformation与http://msdn.microsoft.com/en-us/library/windows/desktop/dd377566%28v=vs.85%29.aspx中提供的相同。 我已经将streams.h,strmbase.lib和strmiids.lib添加到源文件中,如下所示。 TARGETLIBS= \ $(SDK_LIB_PATH)\kernel32.lib \ $(SDK_LIB_PATH)\user32.lib \ $(SDK_LIB_PATH)\gdi32.lib \ $(SDK_LIB_PATH)\advapi32.lib \ $(SDK_LIB_PATH)\comdlg32.lib \ $(SDK_LIB_PATH)\ole32.lib \ $(SDK_LIB_PATH)\oleaut32.lib \ $(SDK_LIB_PATH)\uuid.lib \ $(SDK_LIB_PATH)\comctl32.lib […]

将DirectShowfiltergraphics转储为图像或文本文件

对于debugging/日志logging的目的,我想看看我的filter图表在客户端的PC上看起来。 为此,我添加了将图转储到一个graphedit文件的代码,但问题是只能在安装了完全相同的filter的PC上查看。 有没有办法将graphics转储为图像(如图片截图),甚至只是一个文本文件(filter1> filter2等)?

在stream媒体时退出VLCstream程

我有两个程序通过命令行启动一个VLC实例。 一个streamvideo,另一个streamaudio,都来自dshow:// 当我要求程序停止logging并退出VLC时,即使两个实例都退出了,第二个程序总是使进程在后台运行。 现在,我可以强行杀死它,但这意味着我的录音不会被释放,并保持损坏,我不想这样做。 我已经尝试了几种退出方法: 调用CTRL+Q (我把它设置为退出Global HotKey) 在cmd.exe上的taskkill /PID xxx 添加vlc://quit到我的命令行的末尾,然后调用下一个(我有ALT+N设置为下一个全局热键) 调用停止(再次通过HotKeys),然后退出。 这些似乎没有工作。 有任何想法吗? 我正在运行Windows 7 x64和VLC 2.2.2(我试过32和64位)

强制第三方DirectShowfilter使用自定义分配器

在第三方filter中使用自定义分配器的原因: 我有一个NUMA系统,并且在错误的NUMA节点上分配内存的filter会导致性能问题,并丢失从相机接收到的图像。 我目前的做法: 我会写一个迭代所有filter的函数,并询问他们的input引脚是否有分配器。 然后,我问这个分配器我的特殊的分配器接口,最后如果没有find接口,我创build新的自定义分配器,并应用与以前的分配器相同的属性。 然后我在input引脚上调用NotifyAllocator来通知它有关新的分配器。 我试图在graphics构build的不同时间调用这个函数, 目前在IMediaControl::Pause之前, IMediaControl::Run之前,但我的自定义分配器不被任何第三方filter使用。 样本驻留在错误的NUMA节点上。 此外,我还跟踪在IMediaControl::Pause调用期间创build的线程,并将其线程关系更改为正确的CPU,因此通常这些DirectShowfilter应具有正确的NUMA节点,因为它们应该在其运行的CPU的NUMA节点上分配。

“标准用户”帐户上的FFDShowvideo解码器上的System.InvalidCastException

例外: 无法将“System .__ ComObject”types的COM对象转换为接口types“DirectShowLib.IBaseFilter”。 此操作失败,因为IIC“{56A86895-0AD4-11CE-B03A-0020AF0BA770}”接口的COM组件上的QueryInterface调用由于以下错误而失败:没有此类接口支持(exception来自HRESULT:0x80004002(E_NOINTERFACE)) 。 我的图表: 自定义文件源(asynchronous) – > GDCL Mpeg-4解复用器 – > ffdshowvideo解码器 – >video渲染器 我的graphics在pipe理员帐户上构build并正确播放。 但是,如果在“标准用户”帐户上,则在投射FFDShowfilter时会引发exception。 码: IBaseFilter pffdshowVideoDecoder = (IBaseFilter)Activator.CreateInstance(Type.GetTypeFromCLSID(CLSID_ffdshowVideoDecoder)); 创build实例不会抛出exception,只有当我试图在标准用户帐户下强制转换时才会抛出exception。 附加信息: 我的程序设置为STAThread 该对象的创build和投射在我的主线程上

神秘的MFSourceFilter

几天前,我想给媒体基金会一个尝试。 我注意到的第一件事是不播放MPEG2文件(至less不是在Windows 7),但是,Windows媒体播放器12。 因此,我运行mftrace wmplayer.exe并检查输出。 9052,2BF4 14:06:36.00364 COle32ExportDetours::CoCreateInstance @ Created {14D7A407-396B-44B3-BE85-5199A0F0F80A} Media Foundation DShow Source Resolver (C:\Windows\SysWOW64\mfds.dll) @0984E950 – traced interfaces: 9052,1BEC 14:06:36.00450 COle32ExportDetours::CoCreateInstance @ Created {CDA42200-BD88-11D0-BD4E-00A0C911CE86} Filter Mapper2 (C:\Windows\SysWOW64\quartz.dll) @0821B894 – traced interfaces: 9052,2BF4 14:06:36.00723 COle32ExportDetours::CoCreateInstance @ Created {E436EBB3-524F-11CE-9F53-0020AF0BA770} Filter Graph (C:\Windows\SysWOW64\quartz.dll) @081C7DD0 – traced interfaces: IGraphBuilder @081C7DD0, IMediaControl @04E6D66C, 9052,2BF4 14:06:36.00741 COle32ExportDetours::CoCreateInstance @ […]