Tag: directshow

用于网络流的虚拟摄像机/直接显示filter

我正在使用Flash Live Encoder。 它使用相机来播放video。 支持论坛说我可以创建自定义直接显示filter并流式传输我需要的数据。 我不明白直接显示filter将如何显示在实时编码器的源列表中。 我尝试使用一些商业虚拟相机,它工作正常,但它不能使用网络流源。 摘要。 我有几个网络流。 我认为我必须为每个人创建虚拟摄像头。 但是,如果我在C#上找到带有直接显示filter的示例,我找不到虚拟相机。

有效地从video中抓取像素

我正在寻找一种从video文件中获取图像数据的有效方法。 我目前正在测试Interop.QuartzTypeLib库中的FilgraphManagerClass.GetCurrentImage() 。 这就是我需要的,但速度很慢。 我需要处理每个video的所有帧。 我有什么更好的选择? 要求 必须是帧精确的。 < – 非常重要! 允许我访问解码的像素缓冲区( int或byte[]数组),理想情况下是RGB24或RGB32。 可以实时或更快地抓取缓冲区。 我不需要显示video,我只需要分析像素。 处理mp4文件(h264 / aac)。 如果需要,我可以通过AviSynth重新打包或帧服务,但不能涉及重新编码。 欢迎大家提出意见。 一些代码请求: FilgraphManagerClass graphClass = new FilgraphManagerClass(); graphClass.RenderFile(@”C:\tmp\tmp.avs”); int sz = (graphClass.Width * graphClass.Height + 10) * 4; int[] buffer = new int[sz – 1]; 然后我逐步走过每一帧。 我在循环中有这样的东西: graphClass.GetCurrentImage(ref sz, out buffer[0]); //DoStuff(buffer); graphClass.CurrentPosition += graphClass.AvgTimePerFrame;

我使用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#

我正在使用DirectShowLib将video流式传输到我的Window窗体。 当我按下“保存”按钮时,我也想保存图像。 如何使用DirectShowLib方法或WIN32 API方法从网络摄像头获取图片?

如何使用directshow在多个显示器上同步播放多个video?

我已成功设法使用带有多个流的单个video窗口同步播放8个video,使用directshowlib进行c#。 问题是video窗口只在一个屏幕上播放 – 当我试图让它跨越许多屏幕时,它不起作用。 应用程序窗口正确跨越,但video仅在一个屏幕上播放。 有任何想法吗? 非常感谢提前。

Directshow过滤访问线程

我使用directshowlib-2005在c#中制作了一个电视播放器。 现在我做了一个搜索可用频道的方法。 我希望这个方法在不同的线程中运行,所以我的GUI不会冻结,但是当我尝试在方法中设置通道时出现错误。 它在我的图表中找不到IAMTVTuner界面,尽管我知道它在那里。 如果我不使用不同的线程,该方法工作正常(但我的GUI冻结了一段时间) 我知道它必须对公寓做一些事情,但有没有办法可以在不同的线程中访问该界面,然后创建我的图形的线程?

尽管改变了分辨率,但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#中的图像目录中创建video?

我有一个位图目录,它们都是相同的维度。 我想将这些位图转换为video文件。 我不在乎video文件(编解码器)是wmv还是avi。 我唯一的要求是我指定帧速率。 这不需要跨平台,仅限Windows(Vista和XP)。 我已经阅读了一些关于使用Windows Media SDK或DirectShow的内容,但是没有一个关于提供代码示例的内容。 任何人都可以提供一些见解,或者一些有价值的资源可以帮助我在C#中做到这一点吗?

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

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