首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >作为视频源的Tee/透通DirectShow数据

作为视频源的Tee/透通DirectShow数据
EN

Stack Overflow用户
提问于 2015-09-16 18:20:06
回答 1查看 217关注 0票数 4

我有一个应用程序,它通过DirectShow从一个帧抓取卡中获取视频样本。然后应用程序进行一些处理,并通过网络发送视频信号。我现在想复制这个视频信号,以便另一个支持DirectShow的软件(如Skype)也可以使用原始的输入信号。

我知道您可以在DirectShow中创建Tee过滤器,就像用于分割视频信号以进行记录和预览的过滤器一样。但是,据我所知,这个过滤器只在一个图形中有用(我不能用它将视频从我的过程转发到Skype )。

我也知道我可以编写自己的视频源,但这将在消费应用程序的过程中运行。问题是,我不能将我原来的应用程序的逻辑放在这样的视频源过滤器中。

我能想到的唯一解决方案是我的应用程序将帧写入共享内存块,并在其中读取视频源过滤器。同步将使用一个共享互斥对象来完成。那能行吗?我特别不喜欢同步部分?

更重要的是,是否有更好的解决办法来解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-18 06:22:57

API按照您的标识工作:视频捕获应用程序(如Skype )请求视频流而不考虑进程间通信,不需要IPC来使用在另一个进程中生成的输出。这里的挑战是自己提供这个IPC,以便一个应用程序生成数据,然后另一个应用程序扩展现有的API (虚拟视频源设备)并选择现有数据,然后按生成的方式交付。

对于视频,你有一个相对大的数据流,你有兴趣避免它的过度复制。文件映射(AKA共享内存)是正确的做法:将字节放在一个进程中,它们在另一个进程中立即可见。您可以使用两个进程协同使用的名称、事件和互斥来同步对数据的访问--以指示已使用的缓冲区不再使用等来表示新的数据缓冲区的可用性。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32615892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档