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

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

22.10.2011, 11:21. Показов 8195. Ответов 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
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.10.2011, 11:21
Ответы с готовыми решениями:

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

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

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

1
Mobile Developer
 Аватар для lifestyle
238 / 234 / 18
Регистрация: 10.05.2009
Сообщений: 917
22.10.2011, 15:16
Попробуй добавить перед строкой 27 HRESULT hr= CoInitializeEx
и соответственно в нужных местах/месте CoUninitialize();
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.10.2011, 15:16
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru