Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
[Функция, связанная с этой страницей, DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngineи аудио и видеозахват в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать новый код MediaPlayer, IMFMediaEngine и аудио-видеозахват в Media Foundation вместо DirectShowпо возможности. Корпорация Майкрософт предлагает, что существующий код, использующий устаревшие API, будет перезаписан для использования новых API, если это возможно.]
[Этот API не поддерживается и может быть изменен или недоступен в будущем.]
Детектор мультимедиа — это вспомогательный объект, который может получить сведения о файле, например количество потоков, их тип и их длительность. Он также содержит методы получения кадров плаката из видеопотока. Он предоставляет доступ к интерфейсу IMediaDet.
Детектор мультимедиа работает в одном из двух режимов. При создании экземпляра детектора мультимедиа он не присоединяется к определенному исходному файлу. В этом режиме можно получить данные потока из нескольких исходных файлов. Однако после использования детектора мультимедиа для получения рамки плаката, детектор переключается на режим захвата растрового изображения. В режиме захвата растрового изображения детектор мультимедиа подключен к определенному видеопотоку, а методы потоковой информации больше не работают. Кроме того, нет способа переключить детектор мультимедиа обратно в его начальный режим. Таким образом, получите все необходимые сведения о потоке перед получением кадров постера или создайте новые экземпляры медиа-детектора для каждого потока.
Чтобы получить сведения о потоке, сделайте следующее:
- Вызовите IMediaDet::put_Filename с именем исходного файла.
- Вызовите IMediaDet::get_OutputStreams, чтобы получить количество потоков в источнике.
- Укажите номер потока с IMediaDet::put_CurrentStream. Затем вызовите один или несколько следующих методов:
- IMediaDet::get_StreamType: извлекает тип носителя потока.
- IMediaDet::get_StreamLength: извлекает длительность потока.
- IMediaDet::get_FrameRate: извлекает частоту кадров видеопотока.
Чтобы получить кадр постера, укажите номер потока, как на предыдущем шаге. Затем вызовите IMediaDet::GetBitmapBits, который копирует кадр плаката в буфер или IMediaDet::WriteBitmapBits, который сохраняет кадр плаката в файл.
Связанные разделы