Tag: directshow.net

使用directshow在桌面录制上翻转光标图标

使用Directshow.NET我开发了一个应用程序,它将记录桌面屏幕,获取我们需要绘制鼠标指针的鼠标指针。 所以我在BufferCB添加了SampleGrabber BufferCB我写了下面的代码: public const Int32 CURSOR_SHOWING = 0x00000001; [StructLayout(LayoutKind.Sequential)] public struct ICONINFO { public bool fIcon; public Int32 xHotspot; public Int32 yHotspot; public IntPtr hbmMask; public IntPtr hbmColor; } [StructLayout(LayoutKind.Sequential)] public struct POINT { public Int32 x; public Int32 y; } [StructLayout(LayoutKind.Sequential)] public struct CURSORINFO { public Int32 cbSize; public Int32 flags; public IntPtr […]

首次打开后,Dxsnap无法正确显示video

我正在使用DirectShowLib-2005 – DxSnap示例来显示和捕获来自Webcam的图像。 这个例子一切正常。 但是当我尝试将它与我的应用程序合并时(我试图从我的主要表单中调用该表单),这是第一次工作。 关闭并打开捕获窗口后,它无法正常显示video。 但是图像的捕获始终完美无缺。 public partial class frmMain : Form { public frmMain() { InitializeComponent(); } /// /// The main entry point for the application. /// [STAThread] private static void Main() { Application.Run(new frmMain()); } private void button1_Click(object sender, EventArgs e) { frmdxSnap frmdxSnap = new frmdxSnap(); frmdxSnap.ShowDialog(this); } } 即使在重新启动PC之后,它仍然是相同的。 我没有更改DxSnap表格中的任何内容。

关于在C#中设置FIle Writer的问题

我在C#中使用DirectShowLib。 我想在C#中使用File Writer来设置文件输出。 我想使用File Writer,因为Graph.SetOutputFileName()不会连接到我的编码器,但File Writer会。 如何在C#中设置File Writer保存的文件? 我尝试像在DxPropPages示例中那样提取其属性页,但是文件编写器不会出现。

使用DirectShow同时进行video录制和播放

我应该开发一个记录和播放录制video的应用程序,同时继续录制(不停止图形)。 我知道如何使用和开发使用DirectShow,但我需要我的图形的架构。 我应该使用什么filter? 我使用DirectShow和SampleGrabber使用原始video,但我应该压缩video,我不知道如何在压缩video文件中执行此操作(由于录制仍在继续,因此未关闭)。 我认为MPEG-2录制对我的应用来说是最好的,但请指导我应该使用的滤镜。 谢谢

使用DirectShowNet寻求关键帧

我的任务是:创建一个图形,将SampleGrabber附加到它,并在构建图形后使用IMediaSeeking接口获取关键帧。 以下是我所做的:在Main方法中: Type comType = Type.GetTypeFromCLSID ( new Guid ( “e436ebb3-524f-11ce-9f53-0020af0ba770” ) ); IGraphBuilder graphBuilder = (IGraphBuilder) Activator.CreateInstance ( comType ); comType = Type.GetTypeFromCLSID ( new Guid ( “C1F400A0-3F08-11d3-9F0B-006008039E37” ) ); ISampleGrabber sampleGrabber = (ISampleGrabber) Activator.CreateInstance ( comType ); graphBuilder.AddFilter ( (IBaseFilter) sampleGrabber, “samplegrabber” ); AMMediaType mediaType = new AMMediaType ( ); mediaType.majorType = MediaType.Video; […]

如何获取可用video捕获设备列表

我正在使用DirectShow.Net创建一个项目,该项目使用Visual C#显示Windows窗体中的网络摄像头视图的预览。 我想首先获得一系列可用的video设备,以便我可以在内置网络摄像头或USB网络摄像头之间进行选择。 我已经看到了几个用C ++完成的例子,例如msdn“ http://msdn.microsoft.com/en-us/library/windows/desktop/dd377566(v=vs.85).aspx ”。 但是,由于我不知道任何C ++,我不知道如何将此代码转换为C#。

DirectShow:如何更改filter属性?

我正在开发一个帮助用户配置电视调谐卡的应用程序。 基本上用户选择设备,应用程序生成图形文件(.GRF)作为输出。 但是,用户应该能够更改一些设置。 这些设置包括video标准(PAL,NTSC,SECAM),video输入(调谐器,复合video,SVideo)等。 在GraphEdit中,可以通过右键单击所需的filter,然后选择“filter属性…”来完成。 但是,我不知道如何在代码中实现相同的function。 问题1 :如何在代码中更改DirectShowfilter的属性? 因为我使用ICaptureGraphBuilder2 :: RenderStream来构建我的图形,所以我只保留对源filter和渲染器的引用。 我希望能够更改的大多数属性都可以在其他filter上找到,例如交叉开关filter,它由RenderStream方法自动添加。 问题2 :如何获取图表中其他filter的引用,以便更改其属性? 注意:我不会使用FindFilterByName,因为我的应用程序应该与大多数电视调谐器卡一起使用,并且每张卡都可以作为不同的名称。 编辑 :我找到了一种通过EnumFilters枚举来获取对这些filter的引用的方法。 然后我在每个filter上使用QueryFilterInfo来查找它的名称。 这与使用FindFilterByName不同,因为我现在可以使用Contains来查找某些单词(如“Crossbar”)。 但是,我已经有一个横杆filter命名的例子(“… Xbar”),所以我仍然在寻找一种更通用的方法来做到这一点。 我希望我能按他们的类别找到filter…… 顺便说一句,我目前正在使用DirectShow.Net库 ,但我相信这种方法应该与C ++库相同。 但是,我并不完全理解C ++语法,因此如果您计划发布(引用)代码示例,那么如果它是在C#或VB.NET中,它将是一个很大的帮助。 解决方案 :查看已接受的答案评论。 我需要将需要更改属性的filter转换为各自的接口。 例如,需要将交叉开关filter连接到IAMCrossbar接口 。 通过此界面,我现在可以更改所有与横杆相关的属性。

C#控件用DirectShow.Net显示摄像机video

我想使用DirectShow.Net从网络摄像头捕获流。 我可以使用哪种类型的UI控件来显示网络摄像头video捕获? 我看过一个使用Form的整个窗口的例子,但是我可以使用任何其他控件:Panel,PictureBox?

使用DirectShow.NET的音频同步问题

我已经在DirectShow.NET的论坛上开始了一个post,这里是链接http://sofzh.miximages.com/c%23/8030745.png 目前,我正在测试来自DirectShow.NET样本的CapWMV样本的所有更改。 请高度赞赏任何建议,我没有希望:/ 谢谢, 伊兰。 更新: 似乎音频和video之间有500毫秒不等的差距,如果我使用virtualDub将音频延迟500毫秒它看起来很好,怎么能在图中设置它?

如何学习DirectShow编程?

我是.Net C#开发人员。 我想开发关于video/音频编解码器的媒体编程,从源代码捕获媒体等。我将使用DirectShow Lib,但我在MSDN上阅读它,我很困惑,因为我是初学者。 您是否有最好的教程或一些可以让初学者理解为在DirectShow架构中编程的文章? 如果是,请分享。