2010-01-13 1 views
0

J'essaie de capturer des images de plusieurs webcams simultanément et de les enregistrer automatiquement avec un retard minimum en utilisant C++. Je veux aussi que le programme soit capable de modifier les paramètres de la webcam lorsque cela est nécessaire. J'espérais créer des exemples de show direct (AMCap) sur Platform SDK, puis éditer le code en fonction de mon application. Mais je continue d'obtenir des erreurs.Direct Show (AMCap) - Plate-forme SDK

J'ai été capable de construire les classes de base et j'ai inclus les chemins sous 'include' et 'library files'. J'ai eu les erreurs suivantes quand j'essayais de construire AMCap. Je travaille sur XP avec Visual Studio 2008.

Compiling... 
amcap.cpp 
d:\program files\microsoft sdks\windows\v6.1\samples\multimedia\directshow\capture\amcap\amcap.cpp(231) : error C2664: 'StringCchCatA' : cannot convert parameter 3 from 'WCHAR [260]' to 'STRSAFE_LPCSTR' 
     Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast 
d:\program files\microsoft sdks\windows\v6.1\samples\multimedia\directshow\capture\amcap\amcap.cpp(327) : error C2664: 'GetProfileStringA' : cannot convert parameter 4 from 'WCHAR [260]' to 'LPSTR' 
     Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast 
d:\program files\microsoft sdks\windows\v6.1\samples\multimedia\directshow\capture\amcap\amcap.cpp(2691) : error C2664: 'statusUpdateStatus' : cannot convert parameter 2 from 'WCHAR [120]' to 'LPCTSTR' 
     Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast 
d:\program files\microsoft sdks\windows\v6.1\samples\multimedia\directshow\capture\amcap\amcap.cpp(2698) : error C2664: 'StringCchCopyNA' : cannot convert parameter 1 from 'WCHAR [1024]' to 'STRSAFE_LPSTR' 
     Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast 
d:\program files\microsoft sdks\windows\v6.1\samples\multimedia\directshow\capture\amcap\amcap.cpp(2699) : error C2664: 'StringCchCopyNA' : cannot convert parameter 1 from 'WCHAR [1024]' to 'STRSAFE_LPSTR' 
     Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast 
d:\program files\microsoft sdks\windows\v6.1\samples\multimedia\directshow\capture\amcap\amcap.cpp(2831) : error C2664: 'AppendMenuA' : cannot convert parameter 4 from 'BSTR' to 'LPCSTR' 
     Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast 
d:\program files\microsoft sdks\windows\v6.1\samples\multimedia\directshow\capture\amcap\amcap.cpp(2887) : error C2664: 'AppendMenuA' : cannot convert parameter 4 from 'BSTR' to 'LPCSTR' 
     Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast 
d:\program files\microsoft sdks\windows\v6.1\samples\multimedia\directshow\capture\amcap\amcap.cpp(3792) : error C2664: 'StringCchCopyA' : cannot convert parameter 3 from 'WCHAR [260]' to 'STRSAFE_LPCSTR' 
     Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast 
d:\program files\microsoft sdks\windows\v6.1\samples\multimedia\directshow\capture\amcap\amcap.cpp(3838) : error C2664: 'OpenFileDialog' : cannot convert parameter 2 from 'WCHAR [260]' to 'LPTSTR' 
     Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast 
d:\program files\microsoft sdks\windows\v6.1\samples\multimedia\directshow\capture\amcap\amcap.cpp(3844) : error C2664: 'GetFileAttributesA' : cannot convert parameter 1 from 'WCHAR [260]' to 'LPCSTR' 
     Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast 
d:\program files\microsoft sdks\windows\v6.1\samples\multimedia\directshow\capture\amcap\amcap.cpp(3904) : error C2664: 'ICaptureGraphBuilder2::CopyCaptureFile' : cannot convert parameter 2 from 'TCHAR [260]' to 'LPOLESTR' 
     Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast 
d:\program files\microsoft sdks\windows\v6.1\samples\multimedia\directshow\capture\amcap\amcap.cpp(4108) : error C2664: 'GetSize' : cannot convert parameter 1 from 'WCHAR [260]' to 'LPCTSTR' 
     Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast 
d:\program files\microsoft sdks\windows\v6.1\samples\multimedia\directshow\capture\amcap\amcap.cpp(4112) : error C2664: 'GetFreeDiskSpaceInKB' : cannot convert parameter 1 from 'WCHAR [260]' to 'LPTSTR' 
     Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast 
d:\program files\microsoft sdks\windows\v6.1\samples\multimedia\directshow\capture\amcap\amcap.cpp(4165) : error C2664: '_wtol' : cannot convert parameter 1 from 'TCHAR [21]' to 'const wchar_t *' 
     Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast 
d:\program files\microsoft sdks\windows\v6.1\samples\multimedia\directshow\capture\amcap\amcap.cpp(4240) : error C2664: '_wtof' : cannot convert parameter 1 from 'TCHAR [32]' to 'const wchar_t *' 
     Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast 
d:\program files\microsoft sdks\windows\v6.1\samples\multimedia\directshow\capture\amcap\amcap.cpp(4392) : error C2664: 'WriteProfileStringA' : cannot convert parameter 3 from 'WCHAR [260]' to 'LPCSTR' 
     Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast 
d:\program files\microsoft sdks\windows\v6.1\samples\multimedia\directshow\capture\amcap\amcap.cpp(4403) : error C2664: 'StringCchCopyNA' : cannot convert parameter 3 from 'WCHAR *' to 'STRSAFE_LPCSTR' 
     Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast 
d:\program files\microsoft sdks\windows\v6.1\samples\multimedia\directshow\capture\amcap\amcap.cpp(4421) : error C2664: 'StringCchCopyA' : cannot convert parameter 3 from 'WCHAR *' to 'STRSAFE_LPCSTR' 
     Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast 

Ces erreurs ressemblaient à des erreurs de non-concordance de chaîne, donc essayé de les construire avec le jeu de caractères unicode, et a obtenu les erreurs suivantes.

Compiling... 
amcap.cpp 
crossbar.cpp 
SampleCGB.cpp 
status.cpp 
stdafx.cpp 
Generating Code... 
Compiling resources... 
Microsoft (R) Windows (R) Resource Compiler Version 6.0.5724.0 
Copyright (C) Microsoft Corporation. All rights reserved. 
Linking... 
amcap.obj : error LNK2019: unresolved external symbol "void __stdcall DbgAssert(unsigned short const *,unsigned short const *,int)" ([email protected]@[email protected]) referenced in function "int __cdecl AppInit(struct HINSTANCE__ *,struct HINSTANCE__ *,int)" ([email protected]@[email protected]@[email protected]) 
crossbar.obj : error LNK2001: unresolved external symbol "void __stdcall DbgAssert(unsigned short const *,unsigned short const *,int)" ([email protected]@[email protected]) 
SampleCGB.obj : error LNK2001: unresolved external symbol "void __stdcall DbgAssert(unsigned short const *,unsigned short const *,int)" ([email protected]@[email protected]) 
amcap.obj : error LNK2001: unresolved external symbol _AM_KSCATEGORY_CAPTURE 
amcap.obj : error LNK2001: unresolved external symbol _IID_IBaseFilter 
crossbar.obj : error LNK2001: unresolved external symbol _IID_IBaseFilter 
SampleCGB.obj : error LNK2019: unresolved external symbol _IID_IBaseFilter referenced in function "protected: long __thiscall ISampleCaptureGraphBuilder::GetMedium(struct IPin *,struct __MIDL___MIDL_itf_strmif_0000_0022_0003 &)" ([email protected]@@[email protected]@[email protected]@@Z) 
amcap.obj : error LNK2019: unresolved external symbol [email protected] referenced in function "long __stdcall AppWndProc(struct HWND__ *,unsigned int,unsigned int,long)" ([email protected]@[email protected]@[email protected]) 
amcap.obj : error LNK2001: unresolved external symbol _CLSID_CaptureGraphBuilder2 
amcap.obj : error LNK2001: unresolved external symbol _IID_ICaptureGraphBuilder2 
amcap.obj : error LNK2001: unresolved external symbol _CLSID_FilterGraph 
amcap.obj : error LNK2001: unresolved external symbol _IID_IGraphBuilder 
amcap.obj : error LNK2001: unresolved external symbol _PIN_CATEGORY_CC 
amcap.obj : error LNK2001: unresolved external symbol _PIN_CATEGORY_VBI 
amcap.obj : error LNK2001: unresolved external symbol _MEDIATYPE_Audio 
SampleCGB.obj : error LNK2001: unresolved external symbol _MEDIATYPE_Audio 
amcap.obj : error LNK2001: unresolved external symbol _PIN_CATEGORY_ANALOGVIDEOIN 
amcap.obj : error LNK2001: unresolved external symbol _AMPROPSETID_Pin 
amcap.obj : error LNK2001: unresolved external symbol _IID_IKsPropertySet 
amcap.obj : error LNK2001: unresolved external symbol _IID_IAMVfwCaptureDialogs 
amcap.obj : error LNK2019: unresolved external symbol "void __stdcall DeleteMediaType(struct _AMMediaType *)" ([email protected]@[email protected]@@Z) referenced in function "int __cdecl InitCapFilters(void)" ([email protected]@YAHXZ) 
SampleCGB.obj : error LNK2001: unresolved external symbol "void __stdcall DeleteMediaType(struct _AMMediaType *)" ([email protected]@[email protected]@@Z) 
amcap.obj : error LNK2001: unresolved external symbol _FORMAT_VideoInfo 
amcap.obj : error LNK2001: unresolved external symbol _IID_IAMStreamConfig 
amcap.obj : error LNK2001: unresolved external symbol _MEDIATYPE_Video 
SampleCGB.obj : error LNK2001: unresolved external symbol _MEDIATYPE_Video 
amcap.obj : error LNK2001: unresolved external symbol _PIN_CATEGORY_CAPTURE 
amcap.obj : error LNK2001: unresolved external symbol _MEDIATYPE_Interleaved 
amcap.obj : error LNK2001: unresolved external symbol _IID_IAMVideoCompression 
amcap.obj : error LNK2001: unresolved external symbol _IID_IMediaEventEx 
amcap.obj : error LNK2001: unresolved external symbol _IID_IVideoWindow 
amcap.obj : error LNK2001: unresolved external symbol _MEDIATYPE_Stream 
SampleCGB.obj : error LNK2001: unresolved external symbol _MEDIATYPE_Stream 
amcap.obj : error LNK2001: unresolved external symbol _PIN_CATEGORY_PREVIEW 
amcap.obj : error LNK2001: unresolved external symbol _IID_IConfigAviMux 
amcap.obj : error LNK2001: unresolved external symbol _MEDIASUBTYPE_Avi 
amcap.obj : error LNK2001: unresolved external symbol _IID_IBasicVideo 
amcap.obj : error LNK2001: unresolved external symbol _FORMAT_DvInfo 
amcap.obj : error LNK2001: unresolved external symbol _IID_IMediaControl 
amcap.obj : error LNK2001: unresolved external symbol _IID_IAMDroppedFrames 
amcap.obj : error LNK2001: unresolved external symbol _IID_IAMTVAudio 
amcap.obj : error LNK2001: unresolved external symbol _IID_IAMTVTuner 
amcap.obj : error LNK2001: unresolved external symbol _LOOK_UPSTREAM_ONLY 
amcap.obj : error LNK2001: unresolved external symbol _IID_IAMCrossbar 
crossbar.obj : error LNK2001: unresolved external symbol _IID_IAMCrossbar 
amcap.obj : error LNK2001: unresolved external symbol _CLSID_AudioInputDeviceCategory 
amcap.obj : error LNK2001: unresolved external symbol _CLSID_VideoInputDeviceCategory 
amcap.obj : error LNK2001: unresolved external symbol _CLSID_SystemDeviceEnum 
SampleCGB.obj : error LNK2001: unresolved external symbol _CLSID_SystemDeviceEnum 
amcap.obj : error LNK2001: unresolved external symbol _IID_ICreateDevEnum 
SampleCGB.obj : error LNK2001: unresolved external symbol _IID_ICreateDevEnum 
amcap.obj : error LNK2019: unresolved external symbol [email protected] referenced in function "void __cdecl ChooseAudioFormat(void)" ([email protected]@YAXXZ) 
amcap.obj : error LNK2019: unresolved external symbol [email protected] referenced in function "void __cdecl ChooseAudioFormat(void)" ([email protected]@YAXXZ) 
amcap.obj : error LNK2001: unresolved external symbol _IID_IAMCopyCaptureFileProgress 
crossbar.obj : error LNK2019: unresolved external symbol "void __cdecl DbgLogInfo(unsigned long,unsigned long,unsigned short const *,...)" ([email protected]@YAXKKPBGZZ) referenced in function "public: __thiscall CCrossbar::CCrossbar(struct IPin *,long *)" ([email protected]@[email protected]@@[email protected]) 
crossbar.obj : error LNK2019: unresolved external symbol "public: __thiscall CBaseList::~CBaseList(void)" ([email protected]@[email protected]) referenced in function "public: __thiscall CGenericList::~CGenericList(void)" ([email protected]@@@@[email protected]) 
crossbar.obj : error LNK2019: unresolved external symbol "public: __thiscall CBaseList::CBaseList(unsigned short const *,int)" ([email protected]@[email protected]@Z) referenced in function "public: __thiscall CGenericList::CGenericList(unsigned short const *,int,int,int)" ([email protected]@@@@[email protected]@Z) 
crossbar.obj : error LNK2019: unresolved external symbol "protected: void * __thiscall CBaseList::GetNextI(struct __POSITION * &)const " ([email protected]@@[email protected]@@Z) referenced in function "public: class CRouting * __thiscall CGenericList::GetNext(struct __POSITION * &)const " ([email protected][email protected]@@@@[email protected]@[email protected]@@Z) 
crossbar.obj : error LNK2019: unresolved external symbol "protected: void * __thiscall CBaseList::RemoveHeadI(void)" ([email protected]@@IAEPAXXZ) referenced in function "public: class CRouting * __thiscall CGenericList::RemoveHead(void)" ([email protected][email protected]@@@@[email protected]@XZ) 
crossbar.obj : error LNK2019: unresolved external symbol "protected: struct __POSITION * __thiscall CBaseList::AddTailI(void *)" ([email protected]@@[email protected]@[email protected]) referenced in function "public: struct __POSITION * __thiscall CGenericList::AddTail(class CRouting *)" ([email protected][email protected]@@@@[email protected]@[email protected]@@Z) 
crossbar.obj : error LNK2019: unresolved external symbol "protected: void * __thiscall CBaseList::GetI(struct __POSITION *)const " ([email protected]@@[email protected]@@Z) referenced in function "public: class CRouting * __thiscall CGenericList::Get(struct __POSITION *)const " ([email protected]?$CGen[email protected]@@@@[email protected]@[email protected]@@Z) 
SampleCGB.obj : error LNK2001: unresolved external symbol _MEDIASUBTYPE_MPEG2_PROGRAM 
SampleCGB.obj : error LNK2001: unresolved external symbol _MEDIASUBTYPE_MPEG2_VIDEO 
SampleCGB.obj : error LNK2001: unresolved external symbol _CLSID_FilterMapper2 
SampleCGB.obj : error LNK2001: unresolved external symbol _IID_IFilterMapper2 
SampleCGB.obj : error LNK2001: unresolved external symbol _IID_IKsPin 
SampleCGB.obj : error LNK2001: unresolved external symbol _CLSID_MPEG2Demultiplexer 
SampleCGB.obj : error LNK2001: unresolved external symbol _FORMAT_MPEG2Video 
SampleCGB.obj : error LNK2001: unresolved external symbol _FORMAT_WaveFormatEx 
SampleCGB.obj : error LNK2001: unresolved external symbol _MEDIASUBTYPE_MPEG2_AUDIO 
SampleCGB.obj : error LNK2001: unresolved external symbol _IID_IMpeg2Demultiplexer 
D:\Documents and Settings\Chris Salthouse\My Documents\Visual Studio 2008\Projects\AMCap\Debug\AMCap.exe : fatal error LNK1120:60 unresolved externals 

Dois-je utiliser Unicode ou Multi-octets? Je ne comprends pas ce qui cause le problème. Toute aide ou conseil est appréciée. Merci beaucoup pour votre temps!

Répondre

2

Vous pouvez utiliser un codage multi-octets ou unicode, à condition que vous ayez les mêmes paramètres dans le projet de classe de base et le projet amcap. Vérifiez unicode vs multibyte, et vérifiez également les paramètres de runtime (statique ou dll) wchar_t construit en oui/non, convention d'appel, etc Assurez-vous que tous ces éléments correspondent.

+0

J'ai apporté toutes les modifications requises à la page de propriétés. wchar_t built est défini sur NO et attaché Common sous des répertoires include supplémentaires. tout le reste a des paramètres par défaut. Est-ce que je rate quelque chose? – Aks

3

Avez-vous inclus BaseClasses dans votre répertoire de bibliothèque? Vous devez avoir votre éditeur de liens pour trouver Strmbase.lib (release) ou Strmbasd.lib (debug). Edit: J'utilise vs2005 avec PSDK 6.0 et ça marche très bien pour moi.

+0

hey! J'ai finalement pu le construire après avoir explicitement attaché les fichiers de la bibliothèque! merci beaucoup pour votre aide .... mais maintenant j'ai besoin d'aide avec ça! AMCap est capable de gérer 2 webcams ou plus, comment puis-je modifier le programme pour que je les utilise simultanément ... comme appuyer sur un bouton qui dit «Démarrer la capture» et s'assurer que toutes les caméras commencent à capturer et un bouton qui dit ' arrêter la capture 'pour arrêter toutes les caméras. Merci encore ! – Aks

+0

Première chose en premier. Je ne suis pas vraiment un expert de DShow, donc ce que je suis sur le point de dire peut être faux. * chaque webcam est une source. * vous pouvez construire quelque chose qui prend plusieurs sources en utilisant DirectShow Editing Service. Je ne connais pas vraiment cette chose moi-même. Je ne suis pas sûr si vous pouvez le nourrir plusieurs sources de webcam. * Vous pouvez créer plusieurs graphiques de filtre et les démarrer/arrêter en même temps. * Vous pouvez le faire en modifiant AMCap ou en créant des graphiques de filtre dans GraphEdit. – Camford

+0

:) ok .. y a-t-il un forum spécifique je peux mettre en place cette question? et merci beaucoup toute l'aide .. j'apprécie vraiment! – Aks