Как запустить приложение DirectShow.net на других компьютерах - PullRequest
3 голосов
/ 27 июня 2011

У меня есть приложение C # DirectShow.Net, и я хочу протестировать его на других компьютерах в режиме выпуска. Как я могу убедиться, что моя программа будет работать на других машинах, которые не включают Windows SDK и фильтры, которые она использует?

Мне придется включить dllctshow dll и тому подобное, но что я могу сделать с самими фильтрами?

Обновление: У меня есть виртуальные машины для его запуска, но, кроме того, как я могу убедиться, что на компьютере есть определенный фильтр DirectX, а если нет, захватить dll и зарегистрировать его на компьютере из кода?

Edit: После того, как я зарегистрировал DLL, я запускаю свою программу. Он не запускается, поэтому я беру graphstudio и прикрепляю графики моей программы к graphstudio, и ни один из фильтров не подключается, и когда я пытаюсь подключить их вручную, они отказываются подключаться.

Редактировать2:

Can you post more details about the scenario you are having problems with? 

Я запускаю свое приложение, которое работает на моей 32-битной машине с Windows 7 на моей виртуальной машине Virtualbox. virtualbox не позволит мне получить доступ к моему USB-устройству для потоковой передачи, поэтому я прокомментировал код, который от него зависит. когда я запускаю его, фильтры не подключаются. Я провел некоторое тестирование и попытался воссоздать графики без источника, и они не будут соединяться друг с другом, так что на самом деле это может быть проблемой.

OS version? 

В данный момент я работаю на виртуальной машине с 32-битной XP virtualbox

which filters you are using? 

Я использую

Source -> Smart tee (capture) -> GMFBridgeSinkFilter
          Smart tee (preview) -> AVI Decompressor -> Video REnderer

GMFBridgeSource -> ffdshow video encoder -> avi mux -> File writer

(w) Ритр должен быть в нижнем регистре по какой-то странной причине. У машины есть (W) RITER и (W) RITER

Which filters do you have there that you are not using? 

Вы имеете в виду стандартные для ОС или фильтры, которые я вставил в код и к которым я не подключаюсь?

You could also try with the original GraphEdit instead of GraphStudio, and you could debug your application remotely and see where it is failing exactly.

Graphedit поставляется только в полноэкранном режиме SDK, что является проблемой для загрузки, где я нахожусь.

1 Ответ

1 голос
/ 28 июня 2011

Вот список нескольких проверок, которые вы могли бы сделать:

  • Как сказал @HiperiX, это хорошая идея протестировать ваше приложение в чистом виде система, возможно, используя некоторые программное обеспечение для виртуализации. Если тебе надо для поддержки Win XP, это будет хорошо Идея проверить это там тоже, так как Есть несколько фильтров DirectShow которые доступны только в Win Vista и позже.
  • о необходимых фильтрах, некоторые из они могут быть предоставлены Windows. Те, которые не, вы должны предоставить их и зарегистрировать их в целевой система во время установки процесс вашего заявления. я мог бы рекомендую в этом случае создать проект установки из визуального студия и приложить все свои зависимости там дллс Для руководства установка вы можете скопировать ваш фильтры в папку вашего приложения и зарегистрируйте их, используя regsvr32 filtername.ax из командной строки.
  • Еще одна деталь, которую вам нужно будет взять заботится о совместимости с 64 битами версии Windows, так как вы не можете использовать фильтры, созданные для 32-битных нативных режим из 64-битных приложений. Если Ваша заявка была разработана в .net и он был построен с использованием AnyCPU В режиме .net JIT создаст 64 бит код из него и ваши 32-битные библиотеки не удастся загрузить. Так что если вы используя 32-битные DLL я бы порекомендовал создание приложения .net с Тип процессора = X86. Вы можете установить этот режим в конфигурации вашего проекта в Visual Studio.
  • В зависимости от того, как ваши фильтры были создано, вам также может понадобиться установить распространяемые файлы Visual c ++ .
  • Об этом замечании:

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

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

...