协议滚动更新
[与此页面关联的功能 Windows Media Format 11 SDK 是旧版功能。 它已被源读取器和接收器编写器取代。 源读取器和接收器编写器已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能使用源读取器和接收器编写器,而不是 Windows Media Format 11 SDK。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]
协议滚动更新是一个过程,读取器对象可发现服务器中可用的最佳流式处理协议。 读取器在打开包含“mms”方案的 URL 时使用协议滚动更新。
读取器支持多种协议:
- 实时流式处理协议 (RTSP)
- 超文本传输协议 (HTTP)
- Microsoft Media Server (MMS)
RTSP 和 MMS 协议有两种类型,一种使用 UDP 作为基础传递协议,另一种使用 TCP。
读取器对象始终使用 TCP 来播放控制命令,但它可以使用 TCP 或 UDP 来传送流式传输的内容。 UDP 是内容传递的首选,因为它的带宽开销比 TCP 少。 TCP 协议通过使用“虚拟线路”来确保可靠的传输,但这样做的成本意味着 TCP 不如数字媒体流适用,因为高效使用带宽比偶尔丢失的数据包更重要。
当 URL 指定“mms://”时,读取器将尝试使用以下协议进行数据传输,顺序如下:
- 使用 UDP) 的 RTSPU (RTSP
- RTSPT 使用 TCP) (RTSP
- 使用 UDP) 的 MMSU (彩信
- 使用 TCP) MMST (彩信
- HTTP
HTTP 是基于 TCP 的单向协议,是 Web 服务器使用的协议。 与使用 RTSP 时,使用 HTTP 进行流式处理的效率较低。 但是,大多数防火墙配置为接受 HTTP 请求,而它们通常拒绝其他流式处理协议。
Microsoft Windows Server 2003 中的 Windows Media 服务 9 系列将拒绝来自 Windows 媒体格式 SDK 读取器的任何 MMSU 或 MMST 请求,因为 RTSP 是首选的流式处理协议。 Windows Media 服务 4.1 及更早版本不支持 RTSP。 在这种情况下,读取器对象回退到 MMSU 或 HTTP。
如果 URL 方案提供特定协议(例如 RTSPU 的“rtspu://”或 HTTP 的“https://”),则协议滚动更新不适用。 如果 URL 方案为“rtsp://”,则读取器将尝试 RTSPU 和 RTSPT,但不会尝试其他方案。
读取器打开文件后,可以通过在读取器上调用 IWMReaderAdvanced2::GetProtocolName 方法来查询它使用的协议。 流式传输或下载内容时,此方法在内容完全缓存后立即返回名称, GetProtocolName 方法返回字符串“Cache”。
若要获取读取器支持的所有 Windows Media 服务器协议的名称,请在读取器上调用 IWMReaderNetworkConfig::GetSupportedProtocolName 方法。 可以使用 IWMReaderNetworkConfig 接口在读取器的协议滚动更新列表中禁用一个或多个协议。 例如, IWMReaderNetworkConfig::SetEnableTCP 方法启用或禁用基于 TCP 的协议, IWMReaderNetworkConfig::SetEnableUDP 启用或禁用基于 UDP 的协议。 这些方法仅适用于协议滚动更新;如果 URL 方案包含特定协议,则协议仍然可用。 通常没有理由禁用协议滚动更新中使用的任何协议;这样做可能会降低性能。 但是,它对于测试可能很有用。