如何将DirectShow应用程序(C ++)的输出转发到C#应用程序?

最佳复合材料

我正在制作一个C#应用程序以从avermedia pcie采集卡捕获图形。但是似乎没有现成的工具可以这样做。因此,我制作了一个C ++ DirectShow应用程序来进行捕获,这是一个控制台应用程序,运行时会打开一个捕获窗口。如何将输出重定向到C#应用程序?例如,要一个CaptureElement?

罗曼·R。

因此,您想将XAML CaptureElement连接到AverMedia PCIe采集卡。这听起来似乎是一个容易理解的挑战,但是您提到的所有其他技术最终都是一个糟糕的选择:DirectShow,带有管道的多个应用程序,将cutsom代码重定向和适合XAML CaptureElement控件。

Microsoft故意限制了您可以集成不同API的方式,因此没有太多方法可以将所有内容整合在一起。

让我们回顾一下假定的集成路径。该采集卡应该与兼容的驱动程序一起提供:

视频捕获设备通过UVC类驱动程序受支持,并且必须与UVC 1.1兼容

在这种情况下,此类设备对于处理任务之间的视频捕获的Media Foundation API可见。XAML CaptureElement可以通过此API查看视频捕获设备,这样一来,一切都可以正常运行,而无需从头开始安装任何东西。

如果这没有发生,则表明您正在处理不支持或不兼容驱动程序的设备。

Windows中以前的媒体API是DirectShow,但是它的日子已经一去不复返了。它仍然可以作为遗留框架正常工作,许多应用程序仍然依赖它。具体来说,它将不会与XAML和UWP等新技术集成。更重要的是,就最新技术而言,即使是公开发行的Media API本身,也包括Media Foundation本身,也落后于后者。话虽如此,如果可能的话,最好不要在这里使用DirectShow。

我认为不需要跨过程设计,而在过程之间通过管道传输视频。这样的设计没有充分的理由,尽管它可以有效地工作(Windows本身通过在其中具有所谓的Frame Server服务证明它可以在性能上发挥很大的作用),但这并不是建立在管道上的。在您的情况下,也不大可能必须建立在多个流程上。取而代之的是,您可以开发一个本机代码DLL项目,该项目负责视频采集并通过适当的粘合层连接到托管代码:C ++ / CLI,COM​​,C ++ / WinRT等。

接下来的事情是适合XAML CaptureElement。该控件被设计为与Windows.Media.Capture.MediaCapture可与硬件对话的类一起使用,并且在您计划实现自己的采集层时您没有合适的硬件。长话短说,您不应该将外部数据转发到CaptureElement,并且这样做会很困难。最好的策略是将外部获得的数据上传到Windows.Graphics.Imaging.SoftwareBitmap或类似的文件,并考虑对性能造成的影响。也就是说,您将把视频帧作为图像处理。

另一种方法是将获取的视频帧上载到Direct 3D 11纹理中,这将为您提供与视频相关控件集成的更高效的方式,例如,Windows.UI.Xaml.Controls.SwapChainPanel这还需要您在其中进行更多的开发工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将请求IP从NGINX转发到node.js应用程序?

来自分类Dev

Apache Spark流媒体应用程序输出未转发到主服务器

来自分类Dev

Apache Spark流媒体应用程序输出未转发到主服务器

来自分类Dev

如何将应用程序资源添加到应用程序的C#后端而不是XAML文件中?

来自分类Dev

如何将 C# WinForm 应用程序和安装程序移植到 MacOS?

来自分类Dev

如何将Windows Forms应用程序(C#)制成单个exe文件?

来自分类Dev

如何将软实时数据从Matlab流传输到C#应用程序?

来自分类Dev

如何将Google Bigquery与C#控制台应用程序集成

来自分类Dev

如何将MySQL连接器添加到UWP C#应用程序?

来自分类Dev

如何将值从 Windows 应用程序表单 c# 传递到 html 页面

来自分类Dev

如何将图像 blob 从 MySQL 检索到 C# 应用程序中?

来自分类Dev

一个Web应用程序如何转发到另一个Web应用程序?

来自分类Dev

如何将安装程序作为依赖项添加到C#应用程序的安装项目中?

来自分类Dev

使用VPN将端口转发到网络名称空间中的应用程序

来自分类Dev

使用VPN将端口转发到网络名称空间中的应用程序

来自分类Dev

如何将数据从Windows(C#)传递到unity3d(C#,android)应用程序?

来自分类Dev

如何获取 AWS 应用程序负载平衡以转发到不同 vpc 中的目标组?

来自分类Dev

如何将sqlite3 +扩展功能静态链接到C / C ++应用程序?

来自分类Dev

如何使用套接字将文件从 android java 应用程序传输到 C# windows 应用程序?

来自分类Dev

将SQLite Windows窗体应用程序迁移到通用Windows应用程序(C#)

来自分类Dev

将 html 应用程序转换为 C# 应用程序

来自分类Dev

将C#控制台应用程序设置为Unicode输出

来自分类Dev

如何将C ++应用程序集成到PHP网站中?

来自分类Dev

C#UWP如何将应用程序后面的背景设置为黑色

来自分类Dev

如何将python列表发送到C ++应用程序等待输入?

来自分类Dev

如何将Bing Maps组件添加到C#Winforms应用程序?

来自分类Dev

如何将C ++标准库链接到Monotouch应用程序

来自分类Dev

如何将焦点切换到不同的应用程序C ++ / WinAPI

来自分类Dev

如何将Objective-C文件添加/导入到快速应用程序

Related 相关文章

  1. 1

    如何将请求IP从NGINX转发到node.js应用程序?

  2. 2

    Apache Spark流媒体应用程序输出未转发到主服务器

  3. 3

    Apache Spark流媒体应用程序输出未转发到主服务器

  4. 4

    如何将应用程序资源添加到应用程序的C#后端而不是XAML文件中?

  5. 5

    如何将 C# WinForm 应用程序和安装程序移植到 MacOS?

  6. 6

    如何将Windows Forms应用程序(C#)制成单个exe文件?

  7. 7

    如何将软实时数据从Matlab流传输到C#应用程序?

  8. 8

    如何将Google Bigquery与C#控制台应用程序集成

  9. 9

    如何将MySQL连接器添加到UWP C#应用程序?

  10. 10

    如何将值从 Windows 应用程序表单 c# 传递到 html 页面

  11. 11

    如何将图像 blob 从 MySQL 检索到 C# 应用程序中?

  12. 12

    一个Web应用程序如何转发到另一个Web应用程序?

  13. 13

    如何将安装程序作为依赖项添加到C#应用程序的安装项目中?

  14. 14

    使用VPN将端口转发到网络名称空间中的应用程序

  15. 15

    使用VPN将端口转发到网络名称空间中的应用程序

  16. 16

    如何将数据从Windows(C#)传递到unity3d(C#,android)应用程序?

  17. 17

    如何获取 AWS 应用程序负载平衡以转发到不同 vpc 中的目标组?

  18. 18

    如何将sqlite3 +扩展功能静态链接到C / C ++应用程序?

  19. 19

    如何使用套接字将文件从 android java 应用程序传输到 C# windows 应用程序?

  20. 20

    将SQLite Windows窗体应用程序迁移到通用Windows应用程序(C#)

  21. 21

    将 html 应用程序转换为 C# 应用程序

  22. 22

    将C#控制台应用程序设置为Unicode输出

  23. 23

    如何将C ++应用程序集成到PHP网站中?

  24. 24

    C#UWP如何将应用程序后面的背景设置为黑色

  25. 25

    如何将python列表发送到C ++应用程序等待输入?

  26. 26

    如何将Bing Maps组件添加到C#Winforms应用程序?

  27. 27

    如何将C ++标准库链接到Monotouch应用程序

  28. 28

    如何将焦点切换到不同的应用程序C ++ / WinAPI

  29. 29

    如何将Objective-C文件添加/导入到快速应用程序

热门标签

归档