我需要你的建议。我想使用 Metro 界面开发用于音频/视频分割的应用程序。
通常我使用 DirectShow 使用以下模式:创建一个抓取器,将其添加到 DS 图,通过它捕获音频/视频流并将它们传递给我的 AVstream 驱动程序进行拆分。但在新程序中,我想使用 Media Foundation 并将其插入 UWP。
我如何看待我的新应用。它必须具有用于公共控制的 Metro 接口:源的选择、添加参数、更改模式等。我想使用 MediaCapture 类来捕获流并渲染它们。在这里我没有看到任何问题,MSDN 有很多示例。但我不知道如何在源和渲染之间插入一个抓取器。
抓取器将执行哪些操作:
- 从 MediaCapture 接收输入流。
- 流转换:YUV -> RGB,添加效果等。
- 发送输出流以进行渲染 (MediaCapture) 和我的 AVstream 驱动程序,以便与任何应用程序(Skype、Adobe Flash Player、Edge 等)进行拆分。
如何制作一个抓取器。在 MSDN 中,我发现了三种方法:
- 示例 Grabber Sink ( 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。
谢谢你的任何想法。