Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.137.185.180] |
|
Сообщ.
#1
,
|
|
|
Здравствуйте.
Установил directX sdk для того чтобы захватить видео с веб камеры. Я только начал заниматься таким делом как захват видео, так что попрошу ногами не бить а ответить чтоб я и другие кому это интересно поняли Хочу написать прогу на С++ в VS2005 чтобы выводила мне на форму видео с web камеры , 0. где, какие lib из DirectX подключить ? 1. какой компонент(control) для этого дела использовать и каким образом. 2. как задать разрешение видео и (получить список возможных разрешений) 3. как вывести список видео устройств чтоб user смог выбрать нужный ссылки на литературу по данной тематики приветствуются, спасибо. |
Сообщ.
#2
,
|
|
|
Цитата Ich_bin_Turisten @ Никакие. какие lib из DirectX подключить ? Для работы с видео тебе нужен DirectShow, который находится в Platform SDK (aka Windows SDK), а совсем не в DirectX SDK. (Ещё можно осуществлять захват через VFW, но этот способ устарел). Да, вот Video Capture и DirectShow Samples. |
Сообщ.
#3
,
|
|
|
Цитата albom @ Platform SDK Windows SDK for Windows Server 2008 and .NET Framework 3.5- надеюсь я правильно качаю ))) ибо 1.3Г всетаки. http://www.microsoft.com/downloads/details.aspx?FamilyId=F26B1AA4-741A-433A-9BE5-FA919850BDBF&displaylang=en |
Сообщ.
#4
,
|
|
|
Цитата Ich_bin_Turisten @ Данадеюсь я правильно качаю Цитата Ich_bin_Turisten @ Можно скачать Windows SDK без .NET, можно даже выкачать более старую (хотя лучше не стоит, и только не раньше 05/2005) версию Platform SDK - они существенно меньше. Можно вообще WebInstall версию на сайте выбрать, и скачать только DirectShow и примеры. ибо 1.3Г всетаки |
Сообщ.
#5
,
|
|
|
Windows Software Development Kit (SDK) for Windows Server 2008 and .NET Framework 3.5 Release Notes
- это штуковину я нашел у друзей. Поставил и следуя описанию To run the Microsoft Visual Studio 2005 Registration Tool, go to Start > All Programs > Microsoft Windows SDK v6.1 > Visual Studio Registration > Windows SDK Configuration Tool (on Windows Vista or Windows Server 2008, right-click and select Run as Administrator). нажал, и у меня вылезла ошибка. Ну я подумал мол фиг с ней лишь бы примеры заработали. в папке Samples->Multimedia->DirectShow лежит проек BaseClass - там делается lib который необходим для всех остальных примеров. Проект BaseClass - (сначала потребоввал include я подцепил) - а потом выдал кучу ошибок в основном связанных с типом LPCTSTR. Помогите чет у меня все боком. |
Сообщ.
#6
,
|
|
|
Цитата Ich_bin_Turisten @ Что за ошибка? Тут нет телепатов нажал, и у меня вылезла ошибка. Цитата Ich_bin_Turisten @ Рассказывай подробно, что делал, что нажимал...Проект BaseClass - (сначала потребоввал include я подцепил) - а потом выдал кучу ошибок в основном связанных с типом LPCTSTR. Навскидку, правда, предложу вариант, что ты пытаешься использовать старые заголовночные файлы (из твоей студии) с новым SDK. Проверь, что в настройках студии корректно указаны пути к include и lib каталогам нового SDK, и что эти пути в соответствующих списках стоят на первом месте перед всеми другими. |
Сообщ.
#7
,
|
|
|
Описание ошибки Windows SDK Version Selection Tool has encountered a problem and needs to close. We are sorry for the inconvenience.
Error signature EventType: clr20r3 P1: windowssdkver.exe P2: 1.0.0.0 P3: 477e9a65 P5: windowssdkver.exe P5: 1.0.0.0 P6 477e9a65 P7: 2d P8: 0 P9: system.invalidoperationexception На лицо трабел с версией. Вопрос а какую надо версию если у мну VS2005 ver8.0.50727.42 FrameWork 2.0.50727 про BaseClass проект открыл в VS в свойствах проекта c/c++ general -> дополнительные подключаемые директории -> добавил C:\Program Files\Microsoft SDKs\Windows\v6.1\Include Lib-ы ему не нужны но на всякий случай(а бывает разный )добавил Librarian -> дополнительные lib директории "C:\Program Files\Microsoft SDKs\Windows\v6.1\Lib" и запустил на компиляцию ошибки с типом LPCTSTR Пробовал Include и lib прописывать первыми не помогло. |
Сообщ.
#8
,
|
|
|
Цитата Ich_bin_Turisten @ Эта версия студии прекрасно работает c SDK, указанным в сообщении #3. Проверено.Вопрос а какую надо версию если у мну VS2005 ver8.0.50727.42 FrameWork 2.0.50727 Цитата Ich_bin_Turisten @ Не то, смотри: про BaseClass проект открыл в VS в свойствах проекта c/c++ general -> дополнительные подключаемые директории -> добавил C:\Program Files\Microsoft SDKs\Windows\v6.1\Include Lib-ы ему не нужны но на всякий случай(а бывает разный )добавил Librarian -> дополнительные lib директории "C:\Program Files\Microsoft SDKs\Windows\v6.1\Lib" Цитата albom @ Исправляй настройки студии (Menu -> Tools -> Options -> Projects & Solutions -> VC++ Directories), а не проекта.Проверь, что в настройках студии корректно указаны пути к include и lib каталогам нового SDK Цитата Ich_bin_Turisten @ Что за ошибки? и запустил на компиляцию ошибки с типом LPCTSTR Добавлено Цитата Ich_bin_Turisten @ Для playcap он не нужен. Хотя ошибки от этого, конечно, не исчезнут. Но можешь его посмотреть, там просто меньше строчек :) лежит проек BaseClass - там делается lib который необходим для всех остальных примеров. |
Сообщ.
#9
,
|
|
|
вот работающий код воспроизведения видео с камеры с помощью DirectShow:
HRESULT hr; IGraphBuilder *pGraph = NULL; //менеджер графа фильтров ICaptureGraphBuilder2 *pBuild = NULL; //граф фильтра аудио\видео захвата IBaseFilter *pCapture = NULL; //видеофильтр ICreateDevEnum *pDevEnum = NULL; //счетчик для определенной категории устройств IEnumMoniker* pEnum = NULL; IMoniker* pMoniker = NULL; IMediaControl * pMediaControl(NULL); IMediaEventEx * pEvent(NULL); //Инициализируем библиотеку COM hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED); if(SUCCEEDED(hr)) { //Создание графа-фильтров - Create the Capture Graph Builder hr = CoCreateInstance(CLSID_CaptureGraphBuilder2, NULL, CLSCTX_INPROC_SERVER, IID_ICaptureGraphBuilder2, (void**)&pBuild ); if (SUCCEEDED(hr)) { //Создание менеджера графа фильтров - Create the Filter Graph Manager hr = CoCreateInstance(CLSID_FilterGraph, 0, CLSCTX_INPROC_SERVER, IID_IGraphBuilder, (void**)&pGraph); if (SUCCEEDED(hr)) { //Initialize the Capture Graph Builder pBuild->SetFiltergraph(pGraph); //Find system device enumerator to find a video capture device. hr = CoCreateInstance(CLSID_SystemDeviceEnum, 0, CLSCTX_INPROC_SERVER, IID_ICreateDevEnum, (LPVOID*)&pDevEnum); if(SUCCEEDED(hr)) { //создает счетчик для определенной категории устройств hr = pDevEnum->CreateClassEnumerator(CLSID_VideoInputDeviceCategory, &pEnum, 0); if(SUCCEEDED(hr)) { if( pEnum->Next(1, &pMoniker,0) == S_OK ) { hr = pMoniker->BindToObject(0, 0, IID_IBaseFilter, (void **)&pCapture); //hr = pGraph->AddFilter(pCapture, L"CaptureFilter"); //pGraph->RenderFile(L"D:\\Wildlife.wmv", NULL); //чтение файла - работает if(SUCCEEDED(hr)) { pGraph->AddFilter(pCapture, L"Capture Filter"); hr = pBuild->RenderStream(&PIN_CATEGORY_PREVIEW, &MEDIATYPE_Video, pCapture, NULL, NULL); //3,4,5 Параметры - фильтры, которые объединены в граф pDevEnum->Release(); pEnum->Release(); pMoniker->Release(); // Specify the owner window. IVideoWindow *pVidWin = NULL; OAHWND hWnd; pGraph->QueryInterface(IID_IVideoWindow, (void **)&pVidWin); pVidWin->put_Owner((OAHWND)hWnd); pVidWin->put_WindowStyle( WS_CHILD | WS_CLIPSIBLINGS ); pVidWin->put_Left(0); pVidWin->put_Top(0); pVidWin->put_Width(1500); pVidWin->put_Height(1000); // Set the owner window to receive event notices. pGraph->QueryInterface(IID_IMediaEventEx, (void **)&pEvent); pEvent->SetNotifyWindow((OAHWND)hWnd, 0, 0); // Run the graph. pGraph->QueryInterface(IID_IMediaControl, (void **)&pMediaControl); pMediaControl->Run(); } else pBuild->Release(); } } } } } } |
Сообщ.
#10
,
|
|
|
Использую dspack(библиотека), дружит с Delphi и с BCB6, там есть примеры.
Посмотри http://sourceforge.net/projects/dspack/ |