Udostępnij przez


Przerzucanie protokołu

[Funkcja skojarzona z tą stroną, windows Media Format 11 SDK, jest starszą funkcją. Został zastąpiony przez Source Reader i składnik zapisywania ujścia . czytnika źródeł i składników zapisywania ujścia zostały zoptymalizowane pod kątem systemów Windows 10 i Windows 11. Firma Microsoft zdecydowanie zaleca, aby nowy kod używał czytnika źródeł i modułu zapisywania ujścia zamiast zestawu SDK windows Media Format 11, jeśli jest to możliwe. Firma Microsoft sugeruje, że istniejący kod, który używa starszych interfejsów API, należy przepisać go do korzystania z nowych interfejsów API, jeśli to możliwe.]

Przerzucanie protokołu to proces, w którym obiekt czytnika odnajduje najlepszy protokół przesyłania strumieniowego dostępny z serwera. Czytelnik używa przerzucania protokołu za każdym razem, gdy otwiera adres URL zawierający schemat "mms".

Czytnik obsługuje kilka protokołów:

  • Protokół przesyłania strumieniowego w czasie rzeczywistym (RTSP)
  • Protokół HTTP (Hypertext Transfer Protocol)
  • Microsoft Media Server (MMS)

Protokoły RTSP i MMS są dostępne w dwóch wersjach, z których jeden używa UDP jako podstawowego protokołu dostarczania, a drugi przy użyciu protokołu TCP.

Obiekt czytnika zawsze używa protokołu TCP do obsługi poleceń sterowania odtwarzaniem, ale może używać protokołu TCP lub UDP do dostarczania przesyłanej strumieniowo zawartości. Opcja UDP jest preferowana w przypadku dostarczania zawartości, ponieważ nakłada mniejsze obciążenie przepustowości niż TCP. Protokół TCP zapewnia niezawodny transport przy użyciu "obwodów wirtualnych", ale koszt tego oznacza, że protokół TCP nie jest tak dobrze odpowiedni dla strumieni multimediów cyfrowych, gdzie efektywne wykorzystanie przepustowości jest ważniejsze, że okazjonalne utracone pakiety.

Gdy adres URL określa "mms://", czytelnik próbuje użyć następujących protokołów do dostarczania danych w następującej kolejności:

  1. RTSPU (RTSP przy użyciu protokołu UDP)
  2. RTSPT (RTSP przy użyciu protokołu TCP)
  3. MMSU (MMS przy użyciu protokołu UDP)
  4. MMST (MMS przy użyciu protokołu TCP)
  5. HTTP

PROTOKÓŁ HTTP jest jednokierunkowym protokołem opartym na protokole TCP i jest protokołem używanym przez serwery sieci Web. Przesyłanie strumieniowe przy użyciu protokołu HTTP jest mniej wydajne w przypadku korzystania z protokołu RTSP. Jednak większość zapór jest skonfigurowana do akceptowania żądań HTTP, natomiast zazwyczaj odrzucają inne protokoły przesyłania strumieniowego.

Program Windows Media Services 9 Series w systemie Microsoft Windows Server 2003 odrzuci wszelkie żądania MMSU lub MMST z czytnika zestawu WINDOWS Media Format SDK, ponieważ RTSP jest preferowanym protokołem przesyłania strumieniowego. Usługa Windows Media Services w wersji 4.1 lub starszej nie obsługuje protokołu RTSP. W takim przypadku obiekt czytnika powraca do MMSU lub HTTP.

Przerzucanie protokołu nie ma zastosowania, jeśli schemat adresu URL daje określony protokół, taki jak "rtspu://" dla RTSPU lub "https://" dla protokołu HTTP. Jeśli schemat adresu URL to "rtsp://", czytelnik próbuje ściągnić RTSPU i RTSPT, ale nie ma innych.

Po otworzeniu pliku przez czytelnika możesz wykonać zapytanie o protokół używany przez wywołanie metody IWMReaderAdvanced2::GetProtocolName czytnika. Gdy zawartość jest przesyłana strumieniowo lub pobierana, ta metoda zwraca nazwę natychmiast po całkowitym buforowania zawartości, metoda GetProtocolName zwraca ciąg "Cache".

Aby uzyskać nazwy wszystkich protokołów serwera Windows Media obsługiwanych przez czytelnika, wywołaj metodę IWMReaderNetworkConfig::GetSupportedProtocolName czytnika. Co najmniej jeden z protokołów można wyłączyć na liście przerzucania protokołu czytnika przy użyciu interfejsu IWMReaderNetworkConfig. Na przykład metoda IWMReaderNetworkConfig::SetEnableTCP włącza lub wyłącza protokoły oparte na protokole TCP oraz IWMReaderNetworkConfig::SetEnableUDP włącza lub wyłącza protokoły oparte na protokole UDP. Te metody dotyczą tylko przerzucania protokołu; protokoły są nadal dostępne, jeśli schemat adresów URL zawiera określony protokół. Zwykle nie ma powodu, aby wyłączyć żadnych protokołów używanych w przerzucaniu protokołu; może to obniżyć wydajność. Jednak może to być przydatne do testowania.