【发布时间】:2016-04-18 15:26:30
【问题描述】:
我需要你的建议。我想使用 Metro 界面开发音视频分割应用。
通常我使用 DirectShow 使用以下架构:创建一个抓取器,将其添加到 DS 图,通过它捕获音频/视频流并将它们传递给我的 AVstream 驱动程序进行拆分。但在新程序中,我想使用 Media Foundation 并将其插入 UWP。
我如何看待我的新应用。它必须具有用于公共控制的 Metro 接口:源的选择、添加参数、更改模式等。我想使用 MediaCapture 类来捕获流并渲染它们。在这里我没有看到任何问题,MSDN 有很多示例。但我不知道如何在源和渲染之间插入一个抓取器。
抓取器将执行哪些操作:
- 从 MediaCapture 接收输入流。
- 流转换:YUV -> RGB,添加效果等
- 发送输出流以进行渲染 (MediaCapture) 和我的 AVstream 驱动程序,以便与任何应用程序(Skype、Adobe Flash Player、Edge 等)进行拆分。
如何制作抓取器。在 MSDN 中我发现了三种方法:
- 样品采集器接收器 (https://msdn.microsoft.com/en-us/library/windows/desktop/hh184779(v=vs.85).aspx)。在 MF dll 中接收/控制/发送流没有问题。但我不知道如何将该 dll 与 MediaCapture 链接?
- 源阅读器 (https://msdn.microsoft.com/en-us/library/windows/desktop/dd940436(v=vs.85).aspx)。同样的问题,加上源阅读器无法播放。
- 自定义 MFT?任何情况下,MediaCapture 都允许通过 AddEffectAsync() 连接到 MFT。
我的环境:MS Windows 10,MS Visual Studio Community 2015。
感谢您的任何想法。
【问题讨论】:
标签: c++ windows microsoft-metro win-universal-app samplegrabber