Tag: directshow.net

使用DirectShow.NET在C#中的IVideoWindow上显示半透明的Image对象

我一直在使用DirectShow.NET与C#中的网络摄像头连接,到目前为止一切都进展顺利。 但是,现在我正在尝试设置一种“裁剪”图像的方法(当它仍然显示为网络摄像头预览时)。 基本上,我试图在IVideoWindow对象的顶部显示某种大多数透明的图像。 然而,处理C#的透明度已经远远没有结束。 那么,我如何在IVideoWindow上层叠Image对象? 谢谢!

在IGraphBuilder.RenderFile中无法播放具有COMexception的MP3文件

我是新手直接展示开发。 我正在学习关于直接表演的事情。 我正在尝试编写播放一些音频文件的方法。 它适用于许多.mp3文件,但对于我的一些mp3文件,接口IGraphBuilder的方法RenderFile()抛出以下exception 发生COMException:“由于不支持相同的传输,引脚无法连接。” 我最好的猜测是我错过了一些编解码器来播放这些文件。 任何人都可以建议我做错了什么。 有没有办法选择可以播放这些文件的filter。 我可以用Windows Media Player播放这些文件,所以我相信我已经安装了编解码器。 任何帮助都将具有重要价值。 提前致谢。

使用DirectShow.NET从网络摄像头捕获帧

我是DirectShow的新手,所以这个库的某些部分我不太懂。 我已经看到了DxSnap的示例,但我需要捕获帧而不进行预览 ,以便进一步处理。 我该怎么做?

使用DirectShow获取MP4文件持续时间

我需要获取mp4文件的持续时间,最好是以秒为单位的两倍。 我正在使用DirectShow(参见下面的代码),但它一直在抛出一个特别无益的错误。 我想知道是否有人有一个简单的解决方案。 (说真的,谁知道获取这些信息会非常困难) public static void getDuration(string moviePath) { FilgraphManager m_objFilterGraph = null; m_objFilterGraph = new FilgraphManager(); m_objFilterGraph.RenderFile(moviePath); IMediaPosition m_objMediaPosition = null; m_objMediaPosition = m_objFilterGraph as IMediaPosition; Console.WriteLine(m_objMediaPosition.Duration); } 每当我运行此代码时,我都会收到错误:“来自HRESULT的exception:0x80040265” 我也试过使用这个: 得到video的长度,但它不起作用,因为我不认为它适用于MP4文件。 说真的,我觉得必须有一个更简单的方法来做到这一点。 注意:我宁愿避免使用类似ffmpeg的exe,然后解析输出以获取信息。

使用DirectShow从内存渲染

我是DirectShow的新手,我正在寻找一种方法来渲染已经使用DirectShow.NET加载到内存中的video。 我怎样才能做到这一点? 即使你给我一个亮点,我也要感恩。

我使用GMFBridge.DLL正确预览/捕获流吗?

我正在尝试使用GMFBuilder,以便我可以预览来自网络摄像头的流并定期保存,而无需重新启动整个图形。 但是,我不确定这是否正确,我试图按照示例,但代码已更新,事情已发生变化。 我试着创造: WEbcam -> Smart Tee (preview) -> AVI Decompressor -> Video Renderer Smart Tee (Capture) -> BridgeSinkFilter 并且: BridgeSourceFilter -> ffdshow video encoder -> haali mastroska muxer (只是因为它易于使用) 关于让代码正常运行的输入将非常感激。 private void button2_Click(object sender, EventArgs e) { IGraphBuilder firstGraph = (IGraphBuilder)new FilterGraph(); IGraphBuilder secondGraph = (IGraphBuilder)new FilterGraph(); IBaseFilter BridgeSinkFilter; IBaseFilter BridgeSourceFilter; IBaseFilter Source; IBaseFilter […]

如何使用DirectShow.NET C#访问音频流

我想要做的是将任意音频文件传递给DirectShowfilter图并最终使用.NET 3.5 C#和DirectShow.NET接收(PCM音频)流对象。 我想说的是我可以说: Stream OpenFile(string filename) {…} 和 stream.Read(…) 我已经阅读了DirectShow几天,并认为我已经开始掌握filter和filter图的想法。 我找到了如何播放音频或将其写入文件的示例( 文件 / 设备 ),但似乎无法找到Stream对象的解决方案。 这有可能吗? 如果我错过了什么,你能指出我正确的方向吗? 最好, Hauke

如何在c#中创建音频频谱

我想用信号频谱在c#中制作一个音频播放器。 我在网上看到了一些关于如何制作播放器但却无法找到频谱示例的例子。 有人可以给我指点吗? http://www.codeproject.com/KB/directx/directshowmediaplayer.aspx http://www.codeproject.com/KB/directx/directshownet.aspx?fid=4377&select=2579548&fr=1#xx0xx

尽管改变了分辨率,但video捕获输出始终为320×240

好的,我已经在这2天了,需要最后一部分的帮助。 我有一台Microsoft LifeCam Cinema相机,我使用.NET DirectShowLib来捕获video流。 实际上我使用WPFMediaKit,但我现在直接处理直接显示库的源代码。 我的工作是: – 查看摄像机的video输出 – 以ASF或AVI记录摄像机的video输出(ICaptureGraphBuilder2支持的唯一2个MediaType) 问题是:我可以将其保存为.avi。 这工作正常,分辨率为1280×720,但它将文件保存在RAW输出中。 这意味着它大约是每秒50-60MB。 方式太高了。 或者我可以将其切换为.asf并输出WMV,但是当我这样做时,捕获和输出都转到分辨率320×240。 在WPFMediaKit中有一个我改变的function,因为很明显有微软LifeCam Cinema相机很多人都有这个问题。 因此,不是创建或更改您迭代的AMMediaType,而是使用它来调用SetFormat。 ///* Make the VIDEOINFOHEADER ‘readable’ */ var videoInfo = new VideoInfoHeader(); int iCount = 0, iSize = 0; videoStreamConfig.GetNumberOfCapabilities(out iCount, out iSize); IntPtr TaskMemPointer = Marshal.AllocCoTaskMem(iSize); AMMediaType pmtConfig = null; for (int iFormat = 0; iFormat […]

C#+ DirectShow.NET =简单的WebCam访问?

我找到了一个用C#访问网络摄像头的例子 。 该示例使用DirectShow.NET库。 我试图理解代码,但到目前为止我唯一可以理解的是,usercontrol以某种方式调用directshow直接绘制到用户控件的表面。 我想访问每个帧并将其放入Bitmap对象。 如何判断新帧何时到达? 如何将这个新帧捕获到位图对象中? 如果您了解DirectShow.NET的方法,这可能很容易回答。