标签: directshow

FFmpeg硬件加速 - > GPU + DirectShow

是否有FFmpeg的硬件加速版本(例如,使用GPU的版本)?

此外,是否有人使用FFmpeg支持GPU?可能用于缩放和转换视频格式?或者,例如,使用DirectShow进行图像缩放并在曲面上显示图像?如果是这样,任何人都可以提供小代码样本?

directshow gpu ffmpeg directshow.net

11
推荐指数
1
解决办法
8018
查看次数

如何在Windows 10中创建虚拟网络摄像头?

我想从网络摄像头拍摄视频,在帧上渲染一些文本并进行一些运动跟踪并将其传递给虚拟网络摄像头,以便可以轻松地进行流式传输.

我在stackoverflow上找到了一些答案,表明我应该使用DirectShow.根据DirectShow文档中的信息,DirectShow SDK是Windows SDK的一部分.所以我安装了最新的Windows SDK,但似乎它不包括DirectShow,因为下面没有DirectShow示例C:\Program Files (x86)\Microsoft SDKs\Windows.(stackoverflow的答案也相当古老 - 大约在2010年左右)

您能否建议一种方法使DirectShow工作(包括在Visual Studio 2015上运行的示例)或DirectShow的其他替代方法,这将有助于我创建虚拟网络摄像头?

webcam winapi directshow video-capture windows-10

11
推荐指数
2
解决办法
2万
查看次数

DirectShow与Media Foundation进行视频捕捉?

我正在尝试在视频捕获/监控/流媒体应用程序中选择这两个API,我不确定哪个是最好的选择.

一点背景:

  • 我需要它与各种视频采集卡/加密狗一起使用.
  • 该应用程序可能会使用C++开发,因此本机API至关重要
  • 性能很重要,因为我需要处理多个视频流

一些谷歌搜索给我的印象是

  • MF仅支持Win 7上的视频捕获
  • Directshow得到更好的支持,但会变得过时
  • MF可以在某些应用中提供更好的性能

MF认为前进更好,但我担心如果MF没有"赶上"并且Directshow仍然是首选的API,那么最终会陷入技术死胡同.建议和建议,请...

windows directshow ms-media-foundation

10
推荐指数
1
解决办法
4979
查看次数

尽管改变了分辨率,但视频捕获输出始终为320x240

好的,我已经在这2天了,需要最后一部分的帮助.

我有一台Microsoft LifeCam Cinema相机,我使用.NET DirectShowLib来捕获视频流.实际上我使用WPFMediaKit,但我现在直接处理直接显示库的源代码.

我的工作是: - 查看摄像机的视频输出 - 以ASF或AVI记录摄像机的视频输出(ICaptureGraphBuilder2支持的唯一2个MediaType)

问题是:我可以将其保存为.avi.这工作正常,分辨率为1280x720,但它将文件保存在RAW输出中.这意味着它大约是每秒50-60MB.方式太高了.

或者我可以将其切换为.asf并输出WMV,但是当我这样做时,捕获和输出都转到分辨率320x240.

在WPFMediaKit中有一个我改变的功能,因为很明显有微软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 < iCount; iFormat++)
        {
            IntPtr ptr = IntPtr.Zero;

            videoStreamConfig.GetStreamCaps(iFormat, out pmtConfig, TaskMemPointer);

            videoInfo = (VideoInfoHeader)Marshal.PtrToStructure(pmtConfig.formatPtr, typeof(VideoInfoHeader));

            if (videoInfo.BmiHeader.Width == DesiredWidth && videoInfo.BmiHeader.Height == DesiredHeight)
            {

                ///* Setup the VIDEOINFOHEADER with …
Run Code Online (Sandbox Code Playgroud)

c# directshow directshow.net

10
推荐指数
1
解决办法
1万
查看次数

网络摄像头 - 摄像头预览旋转错误

我想请你帮忙解决一下WebCamera问题.我使用过Nuget的图书馆; WebEye.Controls.Wpf.WebCameraControl(版本1.0.0).该URL为https://www.nuget.org/packages/WebEye.Controls.Wpf.WebCameraControl/

文章和说明可在以下网址获得:http://www.codeproject.com/Articles/330177/Yet-another-Web-Camera-control

由于项目限制,我为Linx平板电脑(Windows 10)开发了WPF应用程序,而不是通用Windows应用程序.我使用WebEye库连接到平板电脑上的网络摄像头并用它拍照.当我在平板电脑中握住平板电脑时,它可以正常工作,但是当我在平板电脑模式下握住平板 在纵向模式下,CameraPreview/VideoWindow会自动旋转-90度.

我尝试解决问题无济于事.

  • 通过Webcamera RenderTransform或LayoutTransform属性旋转视频窗口周围的控件 - 控件旋转但视频图像无法正确旋转.
  • 试图在WebCamera内容属性中旋转VideoWindow - 我从GitHub获取源代码并设置VideoWindow可供访问.重新完成库并使用它通过其RenderTransform属性旋转VideoWindow.https://github.com/jacobbo/WebEye/tree/master/WebCameraControl

无论我做什么,相机预览总是-90度.

该库很简单,它没有很多属性来操作视频窗口.

webcontrol在XAML中.

<wpf:WebCameraControl x:Name="webCameraControl" 
                              MouseDoubleClick="webCameraControl_MouseDoubleClick" 
                              StylusButtonUp="webCameraControl_StylusButtonUp" 
                              MouseUp="webCameraControl_MouseUp" 
                              TouchUp="webCameraControl_TouchUp" 
                              GotMouseCapture="webCameraControl_GotMouseCapture" 
                              />
Run Code Online (Sandbox Code Playgroud)

这就是我初始化WebCamera的方式.加载UserControl后,它将自动连接到平板电脑上的网络摄像头.请参见startViewing()函数.

private WebCameraId _cameraID = null;

private void UserControl_Loaded(object sender, RoutedEventArgs e)
        {
            startViewing();
        }

private void startViewing()
        {
            List<WebCameraId> cams = (List<WebCameraId>)webCameraControl.GetVideoCaptureDevices();

            if (cams.Count > 0)
            {
                _cameraID = (WebCameraId)cams[0];

                webCameraControl.StartCapture(_cameraID);
            }
        }
Run Code Online (Sandbox Code Playgroud)

当应用程序检测到显示屏幕中的更改时,我试图强制控件正确旋转它.请参见DisplaySettingsChanged事件.

public ucWebCam()
{
    InitializeComponent();

    Microsoft.Win32.SystemEvents.DisplaySettingsChanged += SystemEvents_DisplaySettingsChanged;
}

private void SystemEvents_DisplaySettingsChanged(object sender, EventArgs …
Run Code Online (Sandbox Code Playgroud)

c# wpf webcam directshow image-rotation

10
推荐指数
1
解决办法
1007
查看次数

跨平台网络摄像头访问

我正在寻找一个跨平台的视频捕获库,用于访问网络摄像头.一个包含Linux上的V4L/V4L2,Windows上的DirectShow和Mac上的QuickTime.

C或C++是首选,但如果有更好的库选项,我可以使用Java或Python.

directshow quicktime cross-platform video-capture video4linux

9
推荐指数
3
解决办法
5522
查看次数

如何调试c ++ DirectShow过滤器

directshow过滤器有哪些调试工具?目前,我有一个项目,编译和注册视频源过滤器,然后我在GraphEdit中设置图形.我在visual studio 2008中使用c ++.是否有可能以任何可以设置断点,检查变量等的方式将调试器附加到过滤器?除非有一种方法可以在某个地方记录诊断信息,我可以实时查看吗?

c++ directshow

9
推荐指数
2
解决办法
5140
查看次数

如何在C#中获取指向IUnknown的指针

.NET interop将COM对象包装到.NET对象(运行时可调用包装器,RCW)中,这些对象隐藏了通常的接口查询.为了使用运行对象表注册表示过滤器图的COM对象,我需要其IUnknown接口的(本机)地址(请参阅如何对DirectShow图进行反向工程?).

所以问题是:如何在C#中获取COM对象的IUnknown指针?

c# com interop directshow

8
推荐指数
1
解决办法
4426
查看次数

在C#中,显示可缩放的可播放视频的好方法是什么?

我一直在通过DirectX,DirectShow等进行排序,无法确定哪个.NET C#库是最好的.

我正在制作一个全屏视频的艺术装置.我希望用户能够在视频播放时平移和放大视频,理想情况下不会跳过或打嗝.是否有一项微软技术作为一个显而易见的选择?

.net c# directx video directshow

8
推荐指数
1
解决办法
391
查看次数

QueryInterface在C#上使用E_NOINTERFACE失败

Hi Stack Overflow成员,

我是C#编程的新手.我正在开发基本的相机流媒体并仍然捕捉应用程序.一旦用户静止不动,我将使用VMR9的位图混合概念在叠加层上显示它.

我做了什么?

  • 我从这里开始使用C#direct show library
  • 首先,我获得所有必需的过滤器接口 找到附加的捕获设备.称为具有源过滤器的渲染流和用于PREVIEW引脚的vmr9.STILL PIN的源过滤器,样本抓取器和空渲染器.
  • 我有三个菜单按钮 - >静止,显示叠加和隐藏叠加.
  • 我正在使用该库中提供的位图混合器示例.
  • 每次用户按下Take Still菜单时,图像将保存在桌面上,并将重新调整为小分辨率并显示在视频叠加上.
  • 显示覆盖并隐藏覆盖调用ShowHideBitmap()执行从vmr9过滤器查询VMR9BitmapMixer接口的操作,填充VMR9AlphaBitmap结构,然后调用IVMRMixerBitmap9.SetAlphaBitmap函数.

我面临什么问题?

  • 静止后,如果我通过菜单选项调用ShowHideBitmap(),则所拍摄的静止图像将在叠加时完美更新.
  • 这是保存静止图像时立即执行叠加自动更新的另一个选项.我创建基于事件的线程,并使其等待使用EventWaitHandle创建的更新事件.在从samplegrabber BufferCB函数返回之前,我设置了此更新事件.这反过来等待线程.在内部线程我调用ShowHideBitmap函数.在这种情况下,我收到如下错误消息.

Unable to case COM object of type 'DirectShowLib.VideoMixingRenderer9' to interface type 'DirectShowLib.IVMRMixerBitmap9'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{ced175e5-1935-4820-81bd-ff6ad00c9108}' failed due to the following error: No such interface supported (Exception from HRESULT: 0X80040002 (E_NOINTERFACE)

这是ShowHideBitmap函数的代码块

//Declarations
private static IBaseFilter vmr9 = null;
private static IVMRMixerBitmap9 vmr9mixerBitmap …
Run Code Online (Sandbox Code Playgroud)

c# camera directshow visual-studio-2008

8
推荐指数
1
解决办法
2489
查看次数