На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела "Программирование графики"
1) Данный раздел предназначен для обсуждения проблем, возникающих при программировании задач, связанных с чтением, сохранением, обработкой, созданием, отрисовкой графической информации (в том числе - 3D [OpenGL, Direct3D] и анимации [в т.ч. VFW, DirectShow, OpenDML]).
Флэш обсуждают здесь!.

2) Если вы хотите получить совет для конкретной платформы/языка программирования, обязательно укажите их в вопросе.

3) Уважаемые новички! Мы приветствуем Ваше желание научить всех посетителей раздела правильному программированию. Но огромная просьба, перед тем, как писать поучения в старых (последний ответ - "старее" месяца, а особенно, если вопрошавший не появляется на форуме уже не первый месяц, в чем можно убедиться в его профиле) темах, хорошо подумать, будет ли кому-нибудь, кроме Вас cамих, это интересно.



Ваше мнение о модераторах: user posted imageBarazuk, user posted imageOpenGL, user posted imageMikle
Модераторы: OpenGL, Mikle
  
> захват видео с web camera, DirectX SDK int VS2005 , захват видео и использование в VS DirectX SDK
    Здравствуйте.
    Установил directX sdk для того чтобы захватить видео с веб камеры.
    Я только начал заниматься таким делом как захват видео, так что попрошу ногами не бить ;) а ответить чтоб я и другие кому это интересно поняли

    Хочу написать прогу на С++ в VS2005 чтобы выводила мне на форму видео с web камеры ,

    0. где, какие lib из DirectX подключить ?
    1. какой компонент(control) для этого дела использовать и каким образом.
    2. как задать разрешение видео и (получить список возможных разрешений)
    3. как вывести список видео устройств чтоб user смог выбрать нужный

    ссылки на литературу по данной тематики приветствуются, спасибо.
      Цитата Ich_bin_Turisten @
      какие lib из DirectX подключить ?
      Никакие.
      Для работы с видео тебе нужен DirectShow, который находится в Platform SDK (aka Windows SDK), а совсем не в DirectX SDK.
      (Ещё можно осуществлять захват через VFW, но этот способ устарел).

      Да, вот Video Capture и DirectShow Samples.
        Цитата 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
          Цитата Ich_bin_Turisten @
          надеюсь я правильно качаю
          Да

          Цитата Ich_bin_Turisten @
          ибо 1.3Г всетаки
          Можно скачать Windows SDK без .NET, можно даже выкачать более старую (хотя лучше не стоит, и только не раньше 05/2005) версию Platform SDK - они существенно меньше. Можно вообще WebInstall версию на сайте выбрать, и скачать только DirectShow и примеры.
            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. :( Помогите чет у меня все боком.
              Цитата Ich_bin_Turisten @
              нажал, и у меня вылезла ошибка.
              Что за ошибка? Тут нет телепатов <_<

              Цитата Ich_bin_Turisten @
              Проект BaseClass - (сначала потребоввал include я подцепил) - а потом выдал кучу ошибок в основном связанных с типом LPCTSTR.
              Рассказывай подробно, что делал, что нажимал...

              Навскидку, правда, предложу вариант, что ты пытаешься использовать старые заголовночные файлы (из твоей студии) с новым SDK.
              Проверь, что в настройках студии корректно указаны пути к include и lib каталогам нового SDK, и что эти пути в соответствующих списках стоят на первом месте перед всеми другими.
                Описание ошибки 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-ы ему не нужны но на всякий случай(а бывает разный :D )добавил Librarian -> дополнительные lib директории
                "C:\Program Files\Microsoft SDKs\Windows\v6.1\Lib"
                и запустил на компиляцию ошибки с типом LPCTSTR
                Пробовал Include и lib прописывать первыми не помогло.
                  Цитата Ich_bin_Turisten @
                  Вопрос а какую надо версию если у мну VS2005 ver8.0.50727.42 FrameWork 2.0.50727
                  Эта версия студии прекрасно работает c SDK, указанным в сообщении #3. Проверено.

                  Цитата 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 @
                  Проверь, что в настройках студии корректно указаны пути к include и lib каталогам нового SDK
                  Исправляй настройки студии (Menu -> Tools -> Options -> Projects & Solutions -> VC++ Directories), а не проекта.

                  Цитата Ich_bin_Turisten @
                  и запустил на компиляцию ошибки с типом LPCTSTR
                  Что за ошибки?

                  Добавлено
                  Цитата Ich_bin_Turisten @
                  лежит проек BaseClass - там делается lib который необходим для всех остальных примеров.
                  Для playcap он не нужен. Хотя ошибки от этого, конечно, не исчезнут. Но можешь его посмотреть, там просто меньше строчек :)
                    вот работающий код воспроизведения видео с камеры с помощью DirectShow:

                    ExpandedWrap disabled
                      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();
                       
                                    }
                                    }
                                }
                              }
                           }
                       }
                    Сообщение отредактировано: OpenGL -
                      Использую dspack(библиотека), дружит с Delphi и с BCB6, там есть примеры.
                      Посмотри http://sourceforge.net/projects/dspack/
                      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                      0 пользователей:


                      Рейтинг@Mail.ru
                      [ Script execution time: 0,0317 ]   [ 15 queries used ]   [ Generated: 19.04.24, 20:26 GMT ]