Мне нужен ваш совет. Я хотел бы разработать приложение для разделения аудио/видео с использованием интерфейса Metro.Grabber для разделения в UWP
Обычно я использую 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). Нет проблем с получением/контролем/отправкой потока в dll MF. Но я не знаю, как связать эту DLL с MediaCapture?
- Источник Reader (https://msdn.microsoft.com/en-us/library/windows/desktop/dd940436(v=vs.85).aspx). Те же проблемы, что и исходный Reader, не работают для воспроизведения.
- Пользовательские MFT? В любом случае MediaCapture позволяет подключаться к MFT с помощью AddEffectAsync().
Моя среда: MS Windows 10, MS Visual Studio Community 2015.
Спасибо за любые идеи.