Kodowanie grafiki za pośrednictwem protokołu Remote Desktop Protocol
Dane graficzne sesji zdalnej są przesyłane do urządzenia lokalnego za pośrednictwem protokołu RDP (Remote Desktop Protocol). Proces obejmuje kodowanie danych graficznych na zdalnej maszynie wirtualnej przed wysłaniem ich do urządzenia lokalnego. Każda ramka jest przetwarzana na podstawie jego zawartości, przekazując procesory obrazów, klasyfikator i koder koder przed dostarczeniem do urządzenia lokalnego przy użyciu transportu grafiki RDP.
Celem kodowania i przesyłania danych graficznych jest zapewnienie optymalnej wydajności i jakości, z doświadczeniem, które jest takie samo jak lokalne używanie urządzenia. Ten proces jest ważny w przypadku korzystania z usługi Azure Virtual Desktop, komputerów w chmurze w systemie Windows 365 i microsoft Dev Box, gdzie użytkownicy oczekują wysokiej jakości środowiska podczas pracy zdalnej.
Protokół RDP wykorzystuje szereg funkcji i technik do przetwarzania i przesyłania danych graficznych, które sprawiają, że są odpowiednie dla szerokiej gamy scenariuszy, takich jak produktywność biurowa, odtwarzanie wideo i gry. Te funkcje i techniki obejmują:
Kodowanie sprzętowe i programowe: używa procesora CPU lub procesora GPU do kodowania danych graficznych.
Kodowanie przyspieszania sprzętowego: odciąża przetwarzanie kodowania grafiki z procesora CPU do procesora GPU na zdalnej maszynie wirtualnej z dyskretnym procesorem GPU. Procesor GPU zapewnia lepszą wydajność dla aplikacji intensywnie korzystających z grafiki, takich jak modelowanie 3D lub edytowanie wideo o wysokiej rozdzielczości.
Kodowanie oprogramowania: używa procesora CPU do kodowania danych graficznych przy niskich kosztach. Kodowanie oprogramowania to domyślny profil kodowania używany na zdalnej maszynie wirtualnej bez dyskretnego procesora GPU.
Tryb mieszany: oddziela kodowanie tekstu i obrazu przy użyciu różnych koderów w celu zapewnienia najlepszej jakości i najniższego kosztu kodowania dla każdego typu zawartości. Tryb mieszany jest dostępny tylko w przypadku kodowania oprogramowania.
Adaptacyjna grafika: dostosowuje jakość kodowania na podstawie dostępnej przepustowości i zawartości ekranu.
Kodowanie wideo pełnoekranowe: zapewnia większą szybkość klatek i lepsze środowisko użytkownika.
Wykrywanie i buforowanie różnicowe: zmniejsza ilość danych, które należy przesyłać.
Obsługa wielu koderów koderów: używa dekodatorów sprzętowych na urządzeniu lokalnym. Codecs obejmują koder wideo Advanced Video Code (AVC), znany również jako H.264, oraz koder wideo High Efficiency Video Code (HEVC), znany również jako H.265. Obsługa heVC/H.265 jest dostępna w wersji zapoznawczej i wymaga zgodnej zdalnej maszyny wirtualnej z obsługą procesora GPU.
Podampling chroma 4:2:0 i 4:4:4: zapewnia równowagę między jakością obrazu a użyciem przepustowości.
Możesz użyć kombinacji tych funkcji i technik w zależności od dostępnych zasobów sesji zdalnej, urządzenia lokalnego i sieci oraz środowiska użytkownika, które chcesz udostępnić.
W tym artykule opisano proces kodowania i dostarczania danych graficznych za pośrednictwem protokołu RDP przy użyciu niektórych z tych funkcji i technik.
Napiwek
W miarę możliwości zalecamy użycie przekierowania multimediów, które przekierowuje odtwarzanie wideo do urządzenia lokalnego. Przekierowywanie multimediów zapewnia lepsze środowisko użytkownika do odtwarzania wideo, wysyłając strumień bitowy danych wideo do urządzenia lokalnego, na którym dekoduje i renderuje wideo w poprawnym miejscu na ekranie. Ta metoda obniża również koszt przetwarzania na zdalnej maszynie wirtualnej niezależnie od konfiguracji kodowania. Aby dowiedzieć się więcej, zobacz Przekierowywanie multimediów do odtwarzania wideo i wywołań w sesji zdalnej.
Tryb mieszany
Domyślnie dane graficzne są oddzielone w zależności od jego zawartości. Tekst i obrazy są kodowane przy użyciu kombinacji koderów kodu w celu uzyskania optymalnej wydajności kodowania w różnych typach zawartości tylko w przypadku korzystania z kodowania oprogramowania. Ten proces jest znany jako tryb mieszany.
Średnio około 80% danych graficznych dla sesji zdalnej to tekst. Aby zapewnić najniższy koszt kodowania i najlepszą jakość tekstu, protokół RDP używa niestandardowego kodera kodera zoptymalizowanego pod kątem tekstu. Ze względu na to, że zawartość obrazu jest trudniejsza do efektywnego kodowania, kluczowe znaczenie ma użycie kodera, który dostosowuje się dobrze do dostępnej szybkości transmisji bitów.
Pozostała część zawartości jest oddzielona od obrazów i wideo:
Obrazy są programowe zakodowane za pomocą grafiki AVC/H.264 lub RemoteFX, w zależności od możliwości urządzenia lokalnego i włączenia przekierowania multimediów. Kodowanie obrazów AVC/H.264 nie jest dostępne podczas korzystania z przekierowania multimediów.
Wideo jest oprogramowaniem zakodowanym w formacie AVC/H.264.
AVC/H.264 jest powszechnie obsługiwanym koderem koderowym, który ma dobry współczynnik kompresji dla obrazów, jest w stanie kodować progresywne i ma możliwość dostosowywania jakości na podstawie szybkości transmisji bitów. Opiera się na dekoderze sprzętu na urządzeniu lokalnym, który jest powszechnie obsługiwany na nowoczesnych urządzeniach. Użycie dekodera sprzętowego na urządzeniu lokalnym zmniejsza użycie procesora CPU na urządzeniu lokalnym i zapewnia lepsze środowisko użytkownika. Sprawdź producenta urządzenia, aby upewnić się, że obsługuje dekodowanie sprzętowe AVC/H.264.
Na poniższym diagramie przedstawiono proces kodowania i dostarczania danych graficznych za pośrednictwem protokołu RDP przy użyciu trybu mieszanego w scenariuszu kodowania oprogramowania:
Ten proces jest opisany w następujący sposób:
Mapa bitowa ramki jest najpierw przetwarzana przez wykrycie, czy zawiera wideo. Jeśli zawiera wideo, ramka jest wysyłana do koderaka wideo, który w scenariuszu opartym na oprogramowaniu jest kodowany za pomocą avC/H.264, a następnie ramka przechodzi do kanału graficznego.
Jeśli ramka nie zawiera wideo, procesory obrazów określają, czy występują zmiany różnicowe, ruch jest wykrywany lub czy zawartość jest dostępna w pamięci podręcznej. Jeśli zawartość spełnia określone kryteria, ramka przechodzi do kanału graficznego.
Jeśli ramka wymaga dalszego przetwarzania, klasyfikator obrazu określa, czy zawiera tekst, czy obrazy.
Tekst i obrazy są kodowane przy użyciu różnych koderów, aby zapewnić najlepszą jakość i najniższy koszt kodowania dla każdego typu zawartości. Po zakodowaniu ramka przechodzi do kanału grafiki.
Zamiast używać dwóch oddzielnych koderów kodu dla tekstu i obrazów w trybie mieszanym, można włączyć kodowanie wideo pełnoekranowe w celu przetworzenia całej zawartości ekranu przy użyciu kodera wideo AVC/H.264.
Kodowanie wideo pełnoekranowe
Kodowanie wideo pełnoekranowe jest przydatne w scenariuszach, w których zawartość ekranu jest w dużej mierze oparta na obrazie i jest używana jako alternatywa dla trybu mieszanego. Kodowanie wideo pełnoekranowe przetwarza wszystkie dane graficzne z formatem AVC/H.264 lub HEVC/H.265. W rezultacie działa gorzej niż kodowanie w trybie mieszanym, gdy zawartość ekranu jest w dużej mierze oparta na tekście.
Profil wideo pełnoekranowy zapewnia większą szybkość klatek i lepszą obsługę użytkownika, ale korzysta z większej przepustowości sieci i zasobów zarówno na zdalnej maszynie wirtualnej, jak i urządzeniu lokalnym. Przynosi korzyści aplikacjom, takim jak modelowanie 3D, CAD/CAM lub odtwarzanie i edytowanie wideo.
Jeśli włączysz zarówno przyspieszanie sprzętowe HEVC/H.265, jak i AVC/H.264, ale zamiast tego jest używane szyfrowanie HEVC/H.265 nie jest dostępne na urządzeniu lokalnym. HeVC/H.265 umożliwia kompresję danych 25–50% w porównaniu z avC/H.264, w tej samej jakości wideo lub lepszą jakością, w tej samej szybkości transmisji bitów.
Można włączyć kodowanie wideo pełnoekranowe przy użyciu avC/H.264 nawet bez przyspieszenia procesora GPU, ale HEVC/H.265 wymaga zgodnej zdalnej maszyny wirtualnej z obsługą procesora GPU.
Aby dowiedzieć się więcej, zobacz Włączanie przyspieszania procesora GPU dla usługi Azure Virtual Desktop.
Przyspieszanie sprzętowe procesora GPU
Usługa Azure Virtual Desktop, komputery w chmurze w systemie Windows 365 i microsoft Dev Box obsługują przyspieszanie procesora graficznego (GPU) w renderowaniu i kodowaniu w celu zwiększenia wydajności i skalowalności aplikacji przy użyciu protokołu RDP (Remote Desktop Protocol). Przyspieszanie procesora GPU ma kluczowe znaczenie dla aplikacji intensywnie korzystających z grafiki, takich jak te używane przez projektantów graficznych, edytorów wideo, modelerów 3D, analityków danych lub specjalistów ds. wizualizacji.
Istnieją dwa składniki przyspieszania procesora GPU, które współpracują ze sobą w celu ulepszenia środowiska użytkownika:
Renderowanie aplikacji przyspieszonej przez procesor GPU: użyj procesora GPU do renderowania grafiki w sesji zdalnej.
Kodowanie ramek przyspieszonych przez procesor GPU: protokół RDP koduje wszystkie grafiki renderowane do transmisji na urządzenie lokalne. Gdy część ekranu jest często aktualizowana, jest ona kodowana przy użyciu formatu AVC/H.264.
Jeśli zawartość ekranu w obciążeniach jest w dużej mierze oparta na obrazach, możesz również włączyć kodowanie wideo pełnoekranowe w celu przetworzenia całej zawartości ekranu w celu zapewnienia wyższej szybkości klatek i lepszego środowiska użytkownika.
Aby dowiedzieć się więcej, zobacz Włączanie przyspieszania procesora GPU.
Obsługa podprzykładów chroma dla wersji 4:2:0 i 4:4:4
Wartość chroma określa przestrzeń kolorów używaną do kodowania. Domyślnie wartość chroma jest ustawiona na 4:2:0, co zapewnia dobrą równowagę między jakością obrazu a przepustowością sieci. W przypadku korzystania z avC/H.264 można zwiększyć wartość chroma do 4:4:4, aby poprawić jakość obrazu, ale zwiększa również przepustowość sieci. Nie musisz używać przyspieszania procesora GPU, aby zmienić wartość chroma.
Aby dowiedzieć się więcej, zobacz Zwiększanie wartości chroma do 4:4:4 przy użyciu kodera wideo Advanced Video Code (AVC).