1

Мне нужен ваш совет. Я хотел бы разработать приложение для разделения аудио/видео с использованием интерфейса Metro.Grabber для разделения в UWP

Обычно я использую DirectShow для него, используя следующую схему: создайте граббер, добавьте его в график DS, захватите его аудио/видеопотоками и передайте их моим драйверам AVstream для разделения. Но в новой программе я хочу использовать Media Foundation и вставить ее в UWP.

Как я вижу свое новое приложение. Он должен иметь интерфейс Metro для общего контроля: выбор источников, добавление параметров, изменение режимов и т. Д. Я бы хотел использовать класс MediaCapture для захвата потоков и их рендеринга. Здесь я не вижу никаких проблем, MSDN имеет много образцов для этого. Но у меня нет идей, как вставить граббер между источником и рендерингом.

Какие операции граббер будет делать:

  1. Получить входной поток из MediaCapture.
  2. Преобразование потоков: YUV -> RGB, добавление эффектов и т. Д.
  3. Отправить поток вывода для рендеринга (MediaCapture) и моему драйверу AVstream для разделения с любыми приложениями (Skype, Adobe Flash Player, Edge, ....).

Как сделать граббер. В MSDN я нашел три способа:

  1. Образец грабберной раковины (https://msdn.microsoft.com/en-us/library/windows/desktop/hh184779(v=vs.85).aspx). Нет проблем с получением/контролем/отправкой потока в dll MF. Но я не знаю, как связать эту DLL с MediaCapture?
  2. Источник Reader (https://msdn.microsoft.com/en-us/library/windows/desktop/dd940436(v=vs.85).aspx). Те же проблемы, что и исходный Reader, не работают для воспроизведения.
  3. Пользовательские MFT? В любом случае MediaCapture позволяет подключаться к MFT с помощью AddEffectAsync().

Моя среда: MS Windows 10, MS Visual Studio Community 2015.

Спасибо за любые идеи.

ответ

0

Этот вопрос и UWP для меня совсем не актуальны. Я обнаружил следующее:

«Некоторые приложения могут интенсивно работать в фоновом режиме, например, это может быть преобразование видео, онлайн-обработка финансовых данных и многое другое. Теперь приложение UWP будет приостановлено, когда оно зайдет на экран».

https://wpdev.uservoice.com/forums/110705-universal-windows-platform/suggestions/9950598-exclude-suspending-in-desktop

Таким образом, если пользователь сворачивает окно программы, то программа останавливается видеопоток.