Воспроизведение веб-потока ASF в DirectShow
[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать в новом коде MediaPlayer, IMFMediaEngine и аудио/видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, в котором используются устаревшие API, чтобы по возможности использовать новые API.]
Microsoft DirectShow поддерживает веб-потоки в сценариях воспроизведения файлов с помощью фильтра читателя WM ASF , но для записи и сохранения потока необходимо написать собственный фильтр DirectShow.
Примечание
Чтобы воспроизвести веб-потоки в содержимом, которое передается с сервера, на котором выполняются службы Windows Media Services, используйте элемент управления ActiveX® серии Медиаплеер Windows 9, встроенный в веб-страницу.
При получении файла, содержащего потоки типа WMMEDIATYPE_FileTransfer, средство чтения WM ASF создаст для него выходной контакт. Блок форматирования будет WMT_WEBSTREAM_FORMAT структурой. (Эта структура описана в документации по пакету SDK для формата Windows Media.) Если нижестоящий фильтр недоступен, который может обрабатывать этот тип мультимедиа, контакт останется несоединен, но файл по-прежнему будет воспроизводить аудио- и видеопотоки.
Каждый пример мультимедиа в веб-потоке содержит структуру WMT_WEBSTREAM_SAMPLE_HEADER , которая описана в документации по пакету SDK для формата Windows Media. Структура имеет переменную длину в зависимости от длины ее члена wszURL . Указатель на образец данных изначально указывает на эту структуру, и для доступа к фактическим данным в потоке необходимо перейти за пределы структуры.
Фильтр обработчика веб-потока должен основываться на классе CBaseRenderer . В методе CBaseRenderer::D oRenderSample фильтр должен проанализировать структуру для получения сведений о веб-потоке, а затем выполнить соответствующее действие. Как правило, для этого требуется сохранить файл на диск, а затем вызвать функции CreateUrlCacheEntry и CommitUrlCacheEntryW или CommitUrlCacheEntryA для размещения файлов в кэше Обозреватель Интернета. Фильтр должен обрабатывать многокомпонентные файлы, т. е. файлы, размер которых превышает одну выборку, а также команды отрисовки, которые задаются элементом WMT_WEBSTREAM_SAMPLE_HEADER.wSampleType . Фильтр отправляет в приложение событие EC_OLE_EVENT вместе с текстом строки WMT_WEBSTREAM_SAMPLE_HEADER.wszURL , содержащей имя файла для просмотра. Затем приложение приводит к отображению указанной страницы в браузере. Если веб-поток был создан правильно, файл уже должен находиться в кэше.
Дополнительные сведения о WMT_WEBSTREAM_FORMAT и WMT_WEBSTREAM_SAMPLE_HEADER см. в документации по пакету SDK для форматов Windows Media.
Связанные темы