Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.53/40: Рейтинг темы: голосов - 40, средняя оценка - 4.53
16 / 16 / 4
Регистрация: 03.02.2010
Сообщений: 220
1

Захват видео с web-камеры

22.10.2011, 11:21. Показов 7386. Ответов 1
Метки нет (Все метки)

Добрый день! Передо мной стоит следующая задача. Организовать Preview с web-камеры.
Вот ветка в которой идет описание сего процесса: http://msdn.microsoft.com/en-u... 85%29.aspx

Создание процесса просмотра видеопотока с web-камеры как я понимаю состоит из нескольких частей:

1. Создаем и инициализируем экземпляр Capture Graph Builder
2. Создаем и инициализируем экземпляр Filter Graph Manager
3. Создаем и инициализируем экземпляр Video Capture Filter
4. Выбираем устройство с которого хотим осуществлять захват видеопотока (с этим пунктом не могу разобраться)
5. Создаем интерфейс на котором будем выводить видео превью
6. Вызываем метод RenderStream, который собственно и будет воспроизводить просмотр видеокадра

Не пойму в чем проблема, код компилируется без ошибок, но ничего не происходит.. Просто вылазит консольное окно..

Со всеми пунктами за исключением 4-го и 5-го я разобрался. Вопрос в том как выбрать web-камеру с которой будем осуществлять захват и послать moniker на экземпляр этой камеры в Video Capture Filter?И как правильно определить интерфейс на котором будет отображаться видеопоток? Очень прошу вашей помощи господа..

Вот код который, я собрал по частям из MSDN:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
// capture video.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <Windows.h>
#include <Dshow.h>
#include <ObjIdl.h>
#include <Strmif.h>
#include <Control.h>
#pragma comment(lib, "strmiids")
 
 
 
int _tmain(int argc, _TCHAR* argv[])
{
 
    IGraphBuilder *pGraph = NULL;
    ICaptureGraphBuilder2 *pBuild = NULL;
    IBaseFilter *pCap; //Video capture filter
    ICreateDevEnum *pDevEnum = NULL;
    IEnumMoniker *pEnum = NULL;
    IMoniker *pMoniker=NULL;
    IMediaControl *pControl = NULL;
    IMediaEvent   *pEvent = NULL;
 
    // Create the Capture Graph Builder.
    HRESULT hr = CoCreateInstance(CLSID_CaptureGraphBuilder2, NULL, 
        CLSCTX_INPROC_SERVER, IID_ICaptureGraphBuilder2, (void**)&pBuild );
    // Create the System Device Enumerator.
    hr = CoCreateInstance(CLSID_SystemDeviceEnum, NULL,
    CLSCTX_INPROC_SERVER, IID_ICreateDevEnum, 
    reinterpret_cast<void**>(&pDevEnum));
if (SUCCEEDED(hr))
{
    // Create an enumerator for the video capture category.
    hr = pDevEnum->CreateClassEnumerator(
        CLSID_VideoInputDeviceCategory,
        &pEnum, 0);
}
 
    if (hr==S_OK)
    {
        // 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.
            hr = pGraph->QueryInterface(IID_IMediaControl, (void **)&pControl);
            hr = pGraph->QueryInterface(IID_IMediaEvent, (void **)&pEvent);
            pBuild->SetFiltergraph(pGraph);
            hr = pMoniker->BindToObject(NULL, NULL, IID_IBaseFilter,
                (void**)&pCap);
            // Now add the filter to the graph. 
            pGraph->AddFilter(pCap,L"Video Capture Filter");
            hr= pBuild->RenderStream(&PIN_CATEGORY_PREVIEW, &MEDIATYPE_Video, 
    pCap, NULL, NULL);
 
            return S_OK;
        }
        else
        {
            pBuild->Release();
            pMoniker->Release();
        }
    }
    return hr; // Failed
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.10.2011, 11:21
Ответы с готовыми решениями:

Захват видео с веб-камеры (C++)
Здравствуйте! Я установил Visual Studio 2015 Community и библиотеку OpenCV 3.1.0 на Windows 10....

Можно ли на c++ создать программу подобную camstudio (захват видео с экрана)?
Каким образом записывает видео с экрана?Можно ли на c++ сделать что то такое? И что нужно знать...

Запись видео с веб камеры
Новичок в этом деле. Я даже не знаю в какую тему мой вопрос опубликовать. Сейчас набираю теорию...

Захват видео с IP Web камеры
Здравствуйте, мастера. Помогите разобраться с вопросом видеозахвата с IP Web камеры. Хотелось бы,...

1
Mobile Developer
238 / 234 / 18
Регистрация: 10.05.2009
Сообщений: 917
22.10.2011, 15:16 2
Попробуй добавить перед строкой 27 HRESULT hr= CoInitializeEx
и соответственно в нужных местах/месте CoUninitialize();
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.10.2011, 15:16

Захват видео с IP камеры
Доброго времени суток! Начальство захотело сделать в помещении запись видео и аудио для каких то...

Захват видео с камеры
Как захватить видео с камери? Использовал DirectShow, но компилятор (работаю на Dev C++) не видит...

Захват видео с камеры
кТО МОЖЕТ ПОДСКАЗАТЬ - КАК СКИНУТЬ ВИДЕО С КАМЕРЫ Samsung VP-W71 Hi 8, 0.32 Mpix, 22x / 880x В...

Захват видео с камеры
Здравствуйте в общем мне не обходимо захватить картинку с веб камеры и передавать по интернету но...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru