2013-10-04 4 views
2

См: https://superuser.com/questions/653725/vlc-output-to-directshow (перепроведение здесь, потому что не получает много внимания там, и я открыт для написания программного обеспечения, чтобы решить эту проблему, если это необходимо.)VLC выход в исходном фильтр DirectShow

короткую версия: Я хочу виртуальное устройство DirectShow Source (что-то похожее на веб-камеру или подобное), которое вместо использования реального устройства будет получать видео & аудиокадры из VLC, когда он воспроизводит плейлист. (Тем самым разрешено другое приложение, которое понимает только веб-камеры для просмотра содержимого.)

Я открыт для написания кода, если требуется (хотя это похоже на то, что должно существовать уже) или на использование чего-то другого, кроме VLC, если это упрощает ситуацию.

Я еще не написал код для DirectShow или VLC, но я открыт для обучения. Или, если кто-то может указать мне на что-то подходящее, которое уже существует (будь то приложение или код), это было бы предпочтительнее. Однако это увлечение, поэтому я не ищу ничего дорогого.

ответ

1

Чтобы внедрить данные в конвейер DirectShow, вам нужен пользовательский встроенный или сторонний компонент. Для этой задачи нет стандартного компонента. Самый близкий образец Windows SDK, выполняющий ввод данных, - Push Source Filters. Это источник данных сам по себе, и он расширен в качестве устройства, которое другие приложения могут распознать в проекте Capture Source Filter здесь. Это популярные отправные точки.

С другой стороны, такой компонент должен получать данные от VLC. Поскольку это еще одно приложение, необходимо сделать там своего рода межпроцессное общение. Возможно, самый простой - особенно. если у вас нет конкретных требований к качеству и латентности - для настройки сетевой потоковой передачи на VLC, чтобы потоки могли быть прочитаны с использованием известных протоколов через сокеты. Это также дает вам возможность запускать приложения через сеть. При наличии стандартной потоковой передачи протокола вы могли бы найти существующий фильтр для задачи в пункте выше (и избегать развития).

Более строгие требования в отношении одного из следующих: латентность, качество изображения и/или частота кадров, синхронизация видео/аудио, целевая аппликация приложения, безгласность поиска или эффектов - в основном что-либо из списка может по-прежнему требовать интеграции посредством разработки или чтения файлы напрямую без VLC. Тем не менее, для хобби вы, возможно, прекрасно строите его на существующем.

+0

Я обнаружил, что конечное приложение более ограничительное, чем я думал. Я создал пример PushSource и зарегистрировал его, но он не отображался в качестве допустимого источника в приложении. Я предполагаю, что он специально ищет устройства захвата, а не общие источники. – Miral

+0

Я дал вам вторую ссылку, которая показывает проект, который появляется в списке устройств. Это в основном 'PushSource' + добавленные необходимые интерфейсы (' IAMStreamConfig', 'IKsPropertySet') + правильная регистрация по категории устройств. –

0

Существующее решение - VisioForge Virtual Camera SDK. Он включает в себя 2 фильтра, один фильтр - приемник, который должен использоваться как выход для проигрывателя VLC, второй фильтр - устройство виртуальной камеры.

+0

Я не уверен, что VLC имеет возможность выводить на DirectShow. Или, по крайней мере, если это так, я не знаю, где это. – Miral

+0

Кроме того, цена за 300 евро не соответствует моему определению «любитель». – Miral

Смежные вопросы