Можно ли подделать видеопоток как виртуальную камеру, видимую в Skype, Lync и т. Д.?

Я пытаюсь создать важную часть для своего приложения, в которой мне нужно иметь возможность имитировать видеопоток виртуальной камеры. Видеопоток, который я хочу имитировать как виртуальную веб-камеру, передается через мой компьютер, где я могу установить источник видео с моей веб-камеры или где-то еще с моего жесткого диска. Подводя итог, то, что я могу установить как MediaElement.SourceProperty or Image.Source в WPF.

Я видел Vcam Vivek, фильтр DirectShow здесь, на tmhare.com, который, похоже, чрезвычайно связано с тем, что я ищу. Но я не мог найти способ скомпилировать его с VS2010, я также действительно не знаю, что с этим делать. Я думаю, мне нужно изменить входной контакт, но как?

В общем, я пытаюсь создать частичный код, который должен работать как небольшая версия ManyCam. Я создаю приложение WPF, в котором я транслирую исходный код с 64-битного ПК.

Я также был бы признателен за образец кода для фильтра, так как я почти забыл все, что когда-либо знал о C ++, поскольку фильтр DirectShow должен быть написан на C ++ ...

Спасибо за все!


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

введите описание изображения здесь

у меня есть ошибки;

1   IntelliSense: identifier "REFERENCE_TIME" is undefined  c:\program files (x86)\microsoft sdks\windows\v7.0a\include\dvdmedia.h  307 5 // and 6 more
6   IntelliSense: not a class or struct name    c:\users\umutto\desktop\projects\src\directshowwizardinstaller\vcam\vcam\filters\filters.h  8   22  Filters
7   IntelliSense: identifier "CUnknown" is undefined    c:\users\umutto\desktop\projects\src\directshowwizardinstaller\vcam\vcam\filters\filters.h  14  12  Filters
8   IntelliSense: identifier "IFilterGraph" is undefined    c:\users\umutto\desktop\projects\src\directshowwizardinstaller\vcam\vcam\filters\filters.h  17  5   Filters
9   IntelliSense: not a class or struct name    c:\users\umutto\desktop\projects\src\directshowwizardinstaller\vcam\vcam\filters\filters.h  23  28  Filters
10  IntelliSense: not a class or struct name    c:\users\umutto\desktop\projects\src\directshowwizardinstaller\vcam\vcam\filters\filters.h  23  50  Filters
11  IntelliSense: not a class or struct name    c:\users\umutto\desktop\projects\src\directshowwizardinstaller\vcam\vcam\filters\filters.h  23  74  Filters
12  IntelliSense: identifier "IBaseFilter" is undefined c:\users\umutto\desktop\projects\src\directshowwizardinstaller\vcam\vcam\filters\filters.h  37  25  Filters
13  IntelliSense: identifier "Quality" is undefined c:\users\umutto\desktop\projects\src\directshowwizardinstaller\vcam\vcam\filters\filters.h  37  48  Filters
14  IntelliSense: identifier "AM_MEDIA_TYPE" is undefined   c:\users\umutto\desktop\projects\src\directshowwizardinstaller\vcam\vcam\filters\filters.h  42  41  Filters // and 7 more
17  IntelliSense: identifier "IMediaSample" is undefined    c:\users\umutto\desktop\projects\src\directshowwizardinstaller\vcam\vcam\filters\filters.h  60  24  Filters
18  IntelliSense: identifier "IMemAllocator" is undefined   c:\users\umutto\desktop\projects\src\directshowwizardinstaller\vcam\vcam\filters\filters.h  61  30  Filters
19  IntelliSense: identifier "ALLOCATOR_PROPERTIES" is undefined    c:\users\umutto\desktop\projects\src\directshowwizardinstaller\vcam\vcam\filters\filters.h  61  57  Filters
20  IntelliSense: identifier "CMediaType" is undefined  c:\users\umutto\desktop\projects\src\directshowwizardinstaller\vcam\vcam\filters\filters.h  62  34  Filters
21  IntelliSense: identifier "CMediaType" is undefined  c:\users\umutto\desktop\projects\src\directshowwizardinstaller\vcam\vcam\filters\filters.h  63  41  Filters
22  IntelliSense: identifier "CMediaType" is undefined  c:\users\umutto\desktop\projects\src\directshowwizardinstaller\vcam\vcam\filters\filters.h  64  32  Filters 69  5   Filters
24  IntelliSense: identifier "CCritSec" is undefined    c:\users\umutto\desktop\projects\src\directshowwizardinstaller\vcam\vcam\filters\filters.h  71  5   Filters
25  IntelliSense: identifier "IReferenceClock" is undefined c:\users\umutto\desktop\projects\src\directshowwizardinstaller\vcam\vcam\filters\filters.h  72  5   Filters
26  IntelliSense: cannot open source file "streams.h"   c:\users\umutto\desktop\projects\src\directshowwizardinstaller\vcam\vcam\filters\filters.cpp    4   1   Filters
27  IntelliSense: identifier "CUnknown" is undefined    c:\users\umutto\desktop\projects\src\directshowwizardinstaller\vcam\vcam\filters\filters.cpp    13  1   Filters
28  IntelliSense: identifier "ASSERT" is undefined  c:\users\umutto\desktop\projects\src\directshowwizardinstaller\vcam\vcam\filters\filters.cpp    15  5   Filters
29  IntelliSense: identifier "CUnknown" is undefined    c:\users\umutto\desktop\projects\src\directshowwizardinstaller\vcam\vcam\filters\filters.cpp    16  5   Filters
30  IntelliSense: identifier "punk" is undefined    c:\users\umutto\desktop\projects\src\directshowwizardinstaller\vcam\vcam\filters\filters.cpp    16  15  Filters
31  IntelliSense: "CSource" is not a nonstatic data member or base class of class "CVCam"   c:\users\umutto\desktop\projects\src\directshowwizardinstaller\vcam\vcam\filters\filters.cpp    21  5   Filters
32  IntelliSense: identifier "NAME" is undefined    c:\users\umutto\desktop\projects\src\directshowwizardinstaller\vcam\vcam\filters\filters.cpp    21  13  Filters
33  IntelliSense: expected a ')'    c:\users\umutto\desktop\projects\src\directshowwizardinstaller\vcam\vcam\filters\filters.cpp    21  32  Filters
34  IntelliSense: identifier "ASSERT" is undefined  c:\users\umutto\desktop\projects\src\directshowwizardinstaller\vcam\vcam\filters\filters.cpp    23  5   Filters
35  IntelliSense: identifier "CAutoLock" is undefined   c:\users\umutto\desktop\projects\src\directshowwizardinstaller\vcam\vcam\filters\filters.cpp    24  5   Filters
36  IntelliSense: identifier "m_cStateLock" is undefined    c:\users\umutto\desktop\projects\src\directshowwizardinstaller\vcam\vcam\filters\filters.cpp    24  26  Filters
37  IntelliSense: identifier "m_paStreams" is undefined c:\users\umutto\desktop\projects\src\directshowwizardinstaller\vcam\vcam\filters\filters.cpp    26  5   Filters
38  IntelliSense: identifier "CSourceStream" is undefined   c:\users\umutto\desktop\projects\src\directshowwizardinstaller\vcam\vcam\filters\filters.cpp    26  20  Filters
39  IntelliSense: expected an expression    c:\users\umutto\desktop\projects\src\directshowwizardinstaller\vcam\vcam\filters\filters.cpp    26  36  Filters
40  IntelliSense: expected a ';'    c:\users\umutto\desktop\projects\src\directshowwizardinstaller\vcam\vcam\filters\filters.cpp    26  38  Filters
41  IntelliSense: identifier "IAMStreamConfig" is undefined c:\users\umutto\desktop\projects\src\directshowwizardinstaller\vcam\vcam\filters\filters.cpp    33  24  Filters
42  IntelliSense: identifier "IKsPropertySet" is undefined  c:\users\umutto\desktop\projects\src\directshowwizardinstaller\vcam\vcam\filters\filters.cpp    33  60  Filters
43  IntelliSense: identifier "m_paStreams" is undefined c:\users\umutto\desktop\projects\src\directshowwizardinstaller\vcam\vcam\filters\filters.cpp    34  16  Filters
44  IntelliSense: name followed by '::' must be a class or namespace name   c:\users\umutto\desktop\projects\src\directshowwizardinstaller\vcam\vcam\filters\filters.cpp    36  16  Filters
45  IntelliSense: identifier "IMediaSample" is undefined    c:\users\umutto\desktop\projects\src\directshowwizardinstaller\vcam\vcam\filters\filters.cpp    74  33  Filters
46  IntelliSense: identifier "IBaseFilter" is undefined c:\users\umutto\desktop\projects\src\directshowwizardinstaller\vcam\vcam\filters\filters.cpp    99  34  Filters
47  IntelliSense: identifier "Quality" is undefined c:\users\umutto\desktop\projects\src\directshowwizardinstaller\vcam\vcam\filters\filters.cpp    99  57  Filters
48  IntelliSense: identifier "CMediaType" is undefined  c:\users\umutto\desktop\projects\src\directshowwizardinstaller\vcam\vcam\filters\filters.cpp    107 41  Filters // and 3 more
51  IntelliSense: identifier "IMemAllocator" is undefined   c:\users\umutto\desktop\projects\src\directshowwizardinstaller\vcam\vcam\filters\filters.cpp    166 39  Filters
52  IntelliSense: identifier "ALLOCATOR_PROPERTIES" is undefined    c:\users\umutto\desktop\projects\src\directshowwizardinstaller\vcam\vcam\filters\filters.cpp    166 62  Filters

person umutto    schedule 31.08.2011    source источник
comment
Какие ошибки компиляции вы получаете? После компиляции вам необходимо зарегистрировать его (regsvr32), и после этого он будет отображаться в системе как устройство захвата.   -  person Ralf    schedule 31.08.2011
comment
Спасибо за ответ! Я могу выполнить часть регистрации с предварительно скомпилированными файлами ax, прикрепленными к zip-файлу, без проблем. Но у меня слишком много ошибок, большинство из которых связано с отсутствующими файлами библиотеки directshow (я установил Windows sdk и вижу его в программных файлах, но я не знаю, как связать его с решением в VC ++ ), VS2010 хотел, чтобы я преобразовал решение после открытия, чем дал мне некоторое предупреждение .. Я обновляю свой вопрос с соответствующими предупреждениями и ошибками. Извините за отсутствие информации.   -  person umutto    schedule 31.08.2011
comment
Если у вас есть топор, вам не нужно его компилировать, если вы не хотите изменять источник, вы можете просто зарегистрировать его и протестировать источник захвата с помощью GraphEdit или GraphStudio. Кстати, ошибки intellisense не являются ошибками компиляции: они будут устранены после того, как вы правильно настроите свою IDE, чтобы иметь пути include, lib и bin для Windows SDK, базовых классов DirectShow и т. Д. В VS2010 это можно сделать с помощью диспетчера свойств. для редактирования листов свойств.   -  person Ralf    schedule 31.08.2011
comment
Еще раз спасибо! Я не знал, что могу редактировать листы свойств, чтобы указать пути к корзинам, я такой новичок, когда дело доходит до C ++ и VC ++. И да, мне нужно изменить источник, я действительно не знаю, как, но я думаю, что мне следует изменить IKsProperty или входные контакты. Я впервые слышу о GraphEdit, я тоже посмотрю на него, но сначала мне нужно создать фильтр! Еще раз спасибо!   -  person umutto    schedule 31.08.2011


Ответы (1)


Для работы с фильтрами directshow вам необходимо установить Windows SDK и скомпилировать решение BaseClasses. посмотрите: C:\Program Files\Microsoft SDKs\Windows\v7.0\Samples\multimedia\directshow\baseclasses

После этого вам нужно добавить файлы заголовков BaseClasses и каталоги libs в свойства вашего проекта.

Теперь ваш проект будет знать классы DirectShow, и вы можете начать изменять вывод фильтра источника VCam.

person Horonchik    schedule 14.03.2012