Граббер для расщепления в UWP
Мне нужен твой совет. Я хотел бы разработать приложение для разделения аудио / видео с использованием интерфейса Metro.
Обычно я использую DirectShow для него, используя следующую схему: создайте граббер, добавьте его в график DS, захватите им аудио / видео потоки и передайте их моим драйверам AVstream для разделения. Но в новой программе я хочу использовать Media Foundation и вставить его в UWP.
Как я вижу свое новое приложение. Он должен иметь интерфейс Metro для общего управления: выбор источников, добавление параметров, изменение режимов и т. Д. Я хотел бы использовать класс MediaCapture для захвата потоков и их рендеринга. Здесь я не вижу никаких проблем, MSDN имеет много примеров для этого. Но я понятия не имею, как вставить граббер между источником и рендером.
Какие операции будет выполнять граббер:
- Получать входной поток из MediaCapture.
- Преобразование потока: YUV -> RGB, добавление эффектов и т. Д.
- Отправить поток вывода для рендеринга (MediaCapture) и в мой драйвер AVstream для разделения на любые приложения (Skype, Adobe Flash Player, Edge, ....).
Как сделать граббер. В MSDN я нашел три способа:
- Образец раковины Grabber ( 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). Те же проблемы, плюс Source Reader не работает для воспроизведения.
- Кастом МФТ? В любом случае MediaCapture позволяет подключаться к MFT с помощью AddEffectAsync().
Моя среда: MS Windows 10, MS Visual Studio Community 2015.
Спасибо за любые идеи.
1 ответ
Этот вопрос и UWP для меня вообще не актуальны. Я нашел следующее:
"Некоторые приложения могут интенсивно работать в фоновом режиме, например, это может быть конвертация видео, онлайн-обработка финансовых данных и т. Д. Теперь приложение UWP будет приостановлено, когда оно выйдет за пределы экрана".
Поэтому, если пользователь сворачивает окно программы, программа останавливает видеопоток.