Захват рамки плаката
[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует, чтобы новый код использовал MediaPlayer, IMFMediaEngine и аудио- и видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, использующий устаревшие API, чтобы по возможности использовать новые API.]
[Этот API не поддерживается и может быть изменен или недоступен в будущем.]
В этой статье описывается, как отобразить кадр плаката из файла цифрового мультимедиа с помощью объекта Media Detector (MediaDet), предоставленного службами редактирования DirectShow.
Детектор мультимедиа — это вспомогательный объект, который может получать сведения о форматировании из исходного файла мультимедиа. Он также может захватывать растровое изображение из видеопотока в исходном файле. Если файл доступен для поиска, изображение можно получить из любой точки файла. Возвращаемое изображение всегда имеет 24-разрядный формат RGB.
Детектор мультимедиа не является фильтром, и приложению не нужно использовать диспетчер фильтров графов или создавать граф фильтра. Внутри детектор мультимедиа создает граф фильтра, содержащий фильтр Sample Grabber Filter. Чтобы получить растровое изображение, детектор мультимедиа ищет и приостанавливает граф фильтра, а затем извлекает растровое изображение из фильтра Sample Grabber. Приложение взаимодействует с детектором мультимедиа через интерфейс IMediaDet . Детектор мультимедиа является хорошим примером инкапсулирования графа фильтра во вспомогательном объекте, чтобы оградить приложения от сведений, связанных с графом.
Детектор мультимедиа работает в двух режимах. При первом создании детектор мультимедиа находится в режиме сбора информации. Вы можете указать имя файла мультимедиа и получить сведения о каждом из потоков в файле, например тип формата, частота кадров или длительность. Если файл содержит видеопоток, вы можете переключить детектор мультимедиа в режим захвата растровых изображений и получить растровые изображения из источника. Однако после этого вы не сможете переключить детектор мультимедиа обратно в исходный режим. он постоянно подключен к видеопотоку. Для работы с другим потоком или другим файлом необходимо создать новый экземпляр детектора мультимедиа.
Примечание
В примерах кода в этом руководстве используется класс CComPtr ATL, который автоматически управляет счетчиками ссылок. Если вы предпочитаете использовать необработанные указатели интерфейса, не забудьте освободить каждый интерфейс по завершении работы с ним. Кроме того, для краткости примеры кода пропускают большую часть проверки ошибок, которую должно выполнять приложение. В рабочем коде всегда проверка значения HRESULT.
Этот учебник содержит следующие действия.
- Шаг 1. Создание Windows Framework
- Шаг 2. Добавление команды меню для захвата рамки плаката
- Шаг 3. Реализация функции Frame-Grabbing
- Шаг 4. Рисование растрового рисунка в клиентской области
Связанные темы