Запрос на поиск возможностей
[Функция, связанная с этой страницей, DirectShow — это устаревшая функция. Он был заменен MediaPlayer, МВФMediaEngine и аудио/видеозахват в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать новый код MediaPlayer, МВФMediaEngine и аудио-видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает, что существующий код, использующий устаревшие API, будет перезаписан для использования новых API, если это возможно.]
Microsoft® DirectShow® поддерживает поиск через интерфейс IMediaSeeking . Диспетчер графов фильтров предоставляет этот интерфейс, но функции поиска всегда реализуются фильтрами в графе.
Некоторые данные не могут быть искать. Например, вы не можете искать трансляцию видеопотока с камеры. Однако если поток доступен для поиска, существуют различные типы поиска, которые он может поддержать. Например:
- Поиск произвольной позиции в потоке.
- Получение длительности потока.
- Получение текущей позиции в потоке.
- Воспроизведение в обратном направлении.
Интерфейс IMediaSeeking определяет набор флагов, AM_SEEKING_SEEKING_CAPABILITIES, описывающих возможные возможности поиска. Чтобы получить возможности потока, вызовите метод IMediaSeeking::GetCapabilities . Метод возвращает побитовое сочетание флагов. Приложение может протестировать их с помощью оператора > (побитового И). Например, следующий код проверка, может ли граф стремиться к произвольной позиции:
DWORD dwCap = 0;
HRESULT hr = pSeek->GetCapabilities(&dwCap);
if (AM_SEEKING_CanSeekAbsolute & dwCap)
{
// Graph can seek to absolute positions.
}