DirectShow中的 Web 流播放

Microsoft DirectShow支持 Web (通过 WM ASF 读取器筛选器在文件播放方案中) 的详细信息,但必须编写自己的DirectShow筛选器来捕获和保存流。

注意

若要播放从运行Windows Media 服务的服务器流式传输的内容中的 Web 流,请使用网页中嵌入的 Windows 媒体播放器 9 系列ActiveX ®控件。

 

给定包含类型WMMEDIATYPE_FileTransfer流的文件时,WM ASF 读取器将为其创建输出引脚。 格式块将是 一个WMT_WEBSTREAM_FORMAT 结构。 如果没有可用于处理该媒体类型的下游筛选器,则引脚将保持未连接状态,但文件仍将播放音频和视频流。

请务必了解 Web 流中的每个媒体示例都包含 一个WMT_WEBSTREAM_SAMPLE_HEADER 结构,该结构具有可变长度,具体取决于其 wszURL 成员的长度。 指向示例数据的指针最初指向此结构,并且必须向前移动该指针,以便访问流中的实际数据。 Web 流处理程序筛选器应基于 CBaseRenderer 类。 在 DoRenderSample 方法中,筛选器需要分析结构以获取有关 Web 流的信息,然后执行相应的操作。 通常,这涉及到将文件保存到磁盘,然后调用 CommitUrlCacheEntryCreateUrlCacheEntry 将文件放入 Internet Explorer 缓存中。 筛选器必须处理多部分文件,即大于一个示例的文件,并且还必须处理由 WMT_WEBSTREAM_SAMPLE_HEADER.wSampleType 成员指定的呈现命令。 筛选器将 EC_OLE_EVENT 发送到应用程序,以及包含要呈现的文件名称的 WMT_WEBSTREAM_SAMPLE_HEADER.wszURL 字符串的文本。 然后,应用程序会导致浏览器显示指定的页面。 如果 Web 流已正确创作,则该文件应已位于缓存中。

有关 CBaseRendererDoRenderSampleEC_OLE_EVENT的详细信息,请参阅 DirectShow SDK 文档。

Web 流