Переключение протокола

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

Переключение протокола — это процесс, в котором объект читателя обнаруживает лучший протокол потоковой передачи, доступный на сервере. Средство чтения использует откат протокола при открытии URL-адреса, содержащего схему mms.

Средство чтения поддерживает несколько протоколов:

  • Протокол потоковой передачи в режиме реального времени (RTSP)
  • Протокол передачи гипертекстов (HTTP)
  • Microsoft Media Server (MMS)

Протоколы RTSP и MMS доступны в двух вариантах: один использует UDP в качестве базового протокола доставки, а другой — tcp.

Объект чтения всегда использует TCP для команд управления воспроизведением, но он может использовать TCP или UDP для доставки потокового содержимого. UDP предпочтителен для доставки содержимого, так как он накладывает меньше затрат на пропускную способность, чем TCP. Протокол TCP обеспечивает надежный транспорт с помощью "виртуальных каналов", но стоимость этого означает, что TCP не так хорошо подходит для потоков цифровых мультимедиа, где эффективное использование пропускной способности является более важным, что случайные потерянные пакеты.

Если URL-адрес указывает "mms://", читатель пытается использовать следующие протоколы для доставки данных в следующем порядке:

  1. RTSPU (RTSP с помощью UDP)
  2. RTSPT (RTSP с помощью TCP)
  3. MMSU (MMS с помощью UDP)
  4. MMST (MMS с помощью TCP)
  5. HTTP

HTTP является односторонним протоколом на основе TCP и является протоколом, используемым веб-серверами. Потоковая передача с помощью HTTP менее эффективна, чем с помощью RTSP. Однако большинство брандмауэров настроены для приема HTTP-запросов, в то время как обычно они отклоняют другие протоколы потоковой передачи.

Windows Media Services 9 серии 9 в Microsoft Windows Server 2003 отклоняет любые запросы MMSU или MMST из средства чтения пакета SDK для формата Windows Media, так как RTSP является предпочтительным протоколом потоковой передачи. Службы Windows Media Services версии 4.1 и более ранних версий не поддерживают RTSP. В этом случае объект чтения возвращается к MMSU или HTTP.

Переключение протокола не применяется, если схема URL-адресов предоставляет определенный протокол, например "rtspu://" для RTSPU или "https://" для HTTP. Если схема URL-адреса имеет значение "rtsp://", читатель пытается использовать RTSPU и RTSPT, но другие.

После открытия файла читателя можно запросить протокол, который он использует, вызвав метод IWMReaderAdvanced2::GetProtocolName для средства чтения. Хотя содержимое передается или загружается, этот метод возвращает имя сразу после полного кэширования содержимого, метод getProtocolName возвращает строку "Кэш".

Чтобы получить имена всех поддерживаемых протоколов сервера Windows Media, вызовите метод IWMReaderNetworkConfig::GetSupportedProtocolName для средства чтения. Вы можете отключить один или несколько протоколов в списке переключения протокола читателя, используя интерфейс IWMReaderNetworkConfig. Например, метод IWMReaderNetworkConfig::SetEnableTCP включает или отключает протоколы на основе TCP, а IWMReaderNetworkConfig::SetEnableUDP включает или отключает протоколы на основе UDP. Эти методы применяются только к откату протокола; Протоколы по-прежнему доступны, если схема URL-адресов содержит определенный протокол. Обычно нет причин отключить любой из протоколов, используемых в откате протокола; это может снизить производительность. Однако это может быть полезно для тестирования.