다음을 통해 공유


프로토콜 롤오버

[Windows Media Format 11 SDK 이 페이지와 연결된 기능은 레거시 기능입니다. 원본 판독기 싱크 작성기 대체되었습니다. 원본 판독기싱크 기록기 Windows 10 및 Windows 11에 최적화되었습니다. 가능한 경우 새 코드에서 Windows Media Format 11 SDK 대신 원본 판독기싱크 기록기 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]

프로토콜 롤오버는 판독기 개체가 서버에서 사용할 수 있는 최상의 스트리밍 프로토콜을 검색하는 프로세스입니다. 판독기는 "mms" 체계가 포함된 URL을 열 때마다 프로토콜 롤오버를 사용합니다.

판독기는 다음과 같은 여러 프로토콜을 지원합니다.

  • RTSP(실시간 스트리밍 프로토콜)
  • HTTP(Hypertext Transfer Protocol)
  • MMS(Microsoft Media Server)

RTSP 및 MMS 프로토콜은 둘 다 두 가지 버전으로 제공됩니다. 하나는 UDP 기본 배달 프로토콜로 사용하고 다른 하나는 TCP를 사용합니다.

판독기 개체는 항상 재생 제어 명령에 TCP를 사용하지만 스트리밍된 콘텐츠 배달에 TCP 또는 UDP를 사용할 수 있습니다. UDP는 TCP보다 대역폭 오버헤드가 적기 때문에 콘텐츠 배달에 선호됩니다. TCP 프로토콜은 "가상 회로"를 사용하여 안정적인 전송을 보장하지만, 이렇게 하는 비용은 TCP가 디지털 미디어 스트림에 적합하지 않다는 것을 의미하며, 대역폭을 효율적으로 사용하는 것이 가끔 패킷 손실이 더 중요합니다.

URL이 "mms://"을 지정하면 판독기는 다음 순서대로 데이터 배달을 위해 다음 프로토콜을 사용하려고 시도합니다.

  1. RTSPU(UDP를 사용하는 RTSP)
  2. RTSPT(TCP를 사용하는 RTSP)
  3. MMSU(UDP를 사용하는 MMS)
  4. MMST(TCP를 사용하는 MMS)
  5. HTTP(HTTP)

HTTP는 TCP를 기반으로 하는 단방향 프로토콜이며 웹 서버에서 사용하는 프로토콜입니다. HTTP를 사용한 스트리밍은 RTSP를 사용하는 것이 덜 효율적입니다. 그러나 대부분의 방화벽은 HTTP 요청을 수락하도록 구성된 반면, 일반적으로 다른 스트리밍 프로토콜을 거부합니다.

Microsoft Windows Server 2003의 Windows Media Services 9 시리즈는 RTSP가 기본 스트리밍 프로토콜이므로 Windows Media Format SDK 판독기에서 MMSU 또는 MMST 요청을 거부합니다. Windows Media Services 버전 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 체계에 특정 프로토콜이 포함된 경우에도 프로토콜을 사용할 수 있습니다. 일반적으로 프로토콜 롤오버에 사용되는 프로토콜을 사용하지 않도록 설정할 이유가 없습니다. 이렇게 하면 성능이 저하할 수 있습니다. 그러나 테스트에 유용할 수 있습니다.