Поделиться через


Запрос на поиск возможностей

[Функция, связанная с этой страницей, 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.
}