Предварительный просмотр веб-камеры в 2 разных панелях

Я бы не стал создавать этот вопрос, если бы это не была критическая ситуация и где-то в Интернете был четкий ответ. Поверьте мне, я бы нашел это.

TL; DR

Итак, чтобы перейти непосредственно к делу, я хочу использовать один (или несколько) классов LiveJob(s), доступных в пакете Microsoft Expression Encoder Live, для предварительного просмотра веб-камеры моего ноутбука в 2-х боковых панелях. бок. Первоначально используется только левая панель (назовем ее panel1), но если пользователь нажимает кнопку, живой поток, который просматривается в panel1, должен дублироваться на правую панель (panel2). Таким образом, эти две панели должны быть несколько синхронизированы.

Проблема при попытке добавить тот же источник устройства на панели 2, я получаю SystemErrorException говоря "Устройство в использовании". Я не могу найти доказательств того, что это предназначено, и поэтому технология ограничена для того, что я пытаюсь сделать, потому что при использовании "Источник захвата экрана" (видеоустройство, которое мой ноутбук предоставляет для записи экрана), я могу дублировать поток на панель2 без проблем. Это происходит только при попытке со встроенной веб-камерой.

Подробная задача для тех, кто осмелится ее прочитать

Я использую 2 LiveJob экземпляры (_job а также _liveMix) для просмотра прямой трансляции выбранного видеоустройства. _job переменная используется для предварительного просмотра живого потока в panel1, и _liveMix используется для предварительного просмотра прямой трансляции в панели 2 Переключение между видеоисточниками не создает проблем в _jobпочти сразу показывает прямую трансляцию недавно выбранного видеоустройства.

Когда пользователь нажимает указанную кнопку, _liveMixпеременной присваивается новый LiveJob и тот же источник устройства, что и тот, который в данный момент отображается на панели 1. Это когда происходит сбой (если встроенная камера выбрана в списке источников видеоустройств).

Исключение выдается при попытке выполнить эту строку _deviceSource = job.AddDeviceSource(video, audio);, В этом случае, jobотносится к _liveMix и, как вы, вероятно, можете догадаться, переменная видео относится к видеовыходу веб-камеры, который также используется _job (LiveJob это предварительный просмотр в прямом эфире в панели 1).

Тем не менее, приложение работает очень хорошо, когда выбрано видеоустройство "Screen Capture Source", не создавая исключений и отображая тот же прямой поток на панели 2, что и на панели 1. Из моего исследования я обнаружил, что если драйверы веб-камеры не обновляются, Microsoft Expression Encoder выдаст ошибку "Устройство используется", даже если он не используется ( источник). Но, как я понял, веб-камера моего ноутбука не нуждается в драйверах для правильной работы ( источник), поскольку на компьютере была предустановленная Windows 8 (теперь она использует Windows 10).

Пример исходного кода, который я использую, можно найти здесь: исходный код.

У меня заканчиваются варианты, и я не могу заставить его работать. Не могли бы вы мне помочь?

Огромное спасибо заранее!

0 ответов

Другие вопросы по тегам