web stream playback in DirectShow

Microsoft DirectShow 支持 Web 流 (请参阅Web流,了解通过WM ASF读取器筛选器在文件播放方案中) ,但必须编写自己的 DirectShow 筛选器来捕获和保留流。

备注

若要播放从运行 Windows Media 服务 的服务器流式传输的内容中的 Web 流,请使用嵌入网页中的 Windows Media Player 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 流已正确创作,则该文件应已位于缓存中。

有关 CBaseRenderer、DoRenderSample 和 EC _ OLE _ EVENT 的信息,请参阅 DirectShow SDK 文档。

Web 流