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


Пример асинхронного фильтра

[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать в новом коде MediaPlayer, IMFMediaEngine и аудио/видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, в котором используются устаревшие API, чтобы по возможности использовать новые API.]

Описание

Пример асинхронного фильтра — это фильтр для чтения файлов, который поддерживает последовательное скачивание. Этот пример фильтра реализует интерфейсы IAsyncReader и IFileSourceFilter . Он поддерживает файлы MPEG, но не файлы AVI.

Использование

Этот пример включает небольшое приложение командной строки, Memfile.exe, демонстрирующее фильтр. Аргументы командной строки указывают файл мультимедиа и скорость передачи в килобайтах в секунду. Приложение считывает файл в память с указанной скоростью и воспроизводит файл. Для этого он создает экземпляр фильтра, добавляет фильтр в граф фильтра и отрисовывает выходной контакт фильтра.

В командной строке введите:

BitRate имени файла Memfile

Пример фильтра Async не поддерживает файлы AVI, так как он не может подключиться к фильтру разделителя AVI . Вывод фильтра Async предлагает MEDIATYPE_Stream и MEDIASUBTYPE_NULL для типа носителя. Контакт ввода в фильтре разделителя AVI не принимает MEDIASUBTYPE_NULL и не предлагает собственные типы. Таким образом, контакт-соединение завершается сбоем. Асинхронный фильтр можно улучшить, чтобы при необходимости предлагать MEDIASUBTYPE_Avi. Например, он может изучить формат файла или использовать расширение файла.

Скачивание примера

Чтобы скачать примеры пакета SDK DirectShow, установите последнюю версию пакета WINDOWS SDK.

Этот пример устанавливается по следующему пути: [корневой каталог SDK]\Samples\Multimedia\DirectShow\Filters\Async.

Примеры DirectShow