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


Создание мультимедийных объектов Stream и примеров потоков

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

Примечание

Эти API являются устаревшими. Приложения должны использовать фильтр Sample Grabber или реализовать пользовательский фильтр для получения данных из графа фильтра DirectShow.

 

Объекты, поддерживающие интерфейс IMultiMediaStream , являются основными контейнерами для потоков мультимедийных данных. Интерфейс IMultiMediaStream включает методы, которые перечисляют потоки данных объекта; Эти потоки обычно являются видео- и аудиоданными, но могут включать данные любого формата, например скрытые субтитры, обычный текст или код времени SMPTE. Однако интерфейс IMultiMediaStream является универсальным контейнером; разработчики могут создавать другие версии интерфейса, поддерживающие определенные форматы данных. Например, объекты, реализующие интерфейс IAMMultiMediaStream , могут перечислять потоки любого формата данных DirectShow и управлять ими. Так как отдельные потоки данных зависят от формата, они поддерживают по крайней мере два разных интерфейса: универсальный и один для данных. Каждый поток поддерживает интерфейс IMediaStream , который предоставляет методы для получения его формата и указатель на сам поток. Интерфейс IDirectDrawMediaStream , с другой стороны, содержит методы, которые специально относятся к отрисовке видеоданных. Любой интерфейс, производный от IMultiMediaStream , также поддерживает создание примеров потоков, базовых единиц потоковой передачи данных.

Пример мультимедиа — это ссылка на объект, содержащий данные мультимедиа. Для видеоимока это поверхность DirectDraw. Точное содержимое примера зависит от типа носителя (звук, текст и т. д.). Так как пример является только ссылкой на объект данных, любое количество потоковых выборок может ссылаться на один и тот же объект. Интерфейс IStreamSample предоставляет методы, которые получают и задают характеристики примера, такие как время начала и остановки, состояние и связь потоков. Метод IStreamSample::Update обновляет данные примера в случае читаемых потоков. Для записываемых потоков данные примера записываются в поток. Как правило, метод Update используется в цикле, который выполняет отрисовку, передачу или хранение данных потоковой передачи.

Сведения об архитектуре потоковой передачи мультимедиа