Jak szybko i efektywnie przetwarzać wideo? Zobacz ile układów na raz możesz wykorzystać

Jak szybko i efektywnie przetwarzać wideo? Zobacz ile układów na raz możesz wykorzystać

Nasze układy graficzne już od dawna wyposażone są w sprzętowe dekodery/enkodery kodeków H.264 i H.265 (HEVC), ale jakiś czas temu otrzymały również dodatkowe wsparcie AV1. AV1 przyjął się zamiast H.266 najprawdopodobniej dlatego, że jest to kodek typu open-source i nie wiążą się z nim żadne opłaty licencyjne.

Każda w miarę nowoczesna karta graficzna (również zintegrowana) ma więc sprzętowe wsparcie dla tych trzech formatów, zarówno jeśli chodzi o kodowanie, jak i dekodowanie. Niektóre karty graficzne mają nawet zduplikowane takie układy, celem osiągnięcia jeszcze większej wydajności.

Dziś sprawdzimy, dlaczego warto korzystać z możliwości sprzętowych kodeków nawet w przypadku zintegrowanych grafik. Nie będę się tu zajmować kompresją, jakością i rozmiarem pliku wynikowego, ale wyłącznie kwestią wykorzystaniem sprzętu oraz czasem procesowania materiałów wideo.

Karty graficzne i specjalizowane układy do kodowania/dekodowania wideo

Jeśli zajrzymy do dokumentacji naszej karty graficznej, powinniśmy tam znaleźć również jej możliwości w zakresie przetwarzania za pomocą sprzętowych kodeków. W przypadku zintegrowanego Radeona 780M wygląda to na przykład tak:

Maksymalna przepustowość kodowania wideo (SDR): 1080p630 8bpc H.264, 1440p373 8bpc H.264, 2160p175 8bpc H.264, 1080p630 8bpc H.265, 1440p373 8bpc H.265, 2160p175 8bpc H.265, 4320p43 8bpc H.265, 1080p864 8/10bpc AV1, 1440p513 8/10bpc AV1, 2160p240 8/10bpc AV1, 4320p60 8/10bpc AV1

Maksymalna przepustowość dekodowania wideo: 1080p60 8bpc MPEG2, 1080p60 8bpc VC1, 1080p786 8/10bpc VP9, 2160p196 8/10bpc VP9, 4320p49 8/10bpc VP9, 1080p1200 8bpc H.264, 2160p300 8bpc H.264, 4320p75 8bpc H.264, 1080p786 8/10bpc H.265, 2160p196 8/10bpc H.265, 4320p49 8/10bpc H.265, 1080p960 8/10bpc AV1, 2160p240 8/10bpc AV1, 4320p60 8/10bpc AV1

Nawet tak skromny układ graficzny ma więc całkiem przyzwoite możliwości i to tyle teorii. Zauważcie jednak, że w tym przypadku mamy do czynienia jedynie z dekoderem VP9 (brak encodera), jednak chyba nikt z tego powodu płakać nie będzie. Sprawdźmy co daje nam włączenie do obliczeń specjalizowanych układów kodowania materiałów wideo w praktyce. Oczywiście wykorzystywane przez nas oprogramowanie musi mieć możliwość wykorzystania sprzętowych kodeków.

HandBrake i sprzętowa akceleracja przy konwersji wideo

HandBrake to jeden z najpopularniejszych darmowych programów do konwersji materiałów wideo. Może korzystać z przeróżnych kodeków, w tym również sprzętowych (VCE). 

Podzas testów konwertowałem wideo 4K UHD (60 fps) do rozdzielczości Full HD za pomocą różnych kodeków.

Na start przekonwertowałem wideo za pomocą programowego kodeka HEVC. Jak widzimy na poniższym zrzucie ekranowym, do tego zadania wykorzystywany jest wyłącznie procesor, a 16 wątków zostaje obciążone niemal w pełni.

Handbrake 4k do FHD soft H.265

HandBrake - konwersja wideo 4K do FHD przy pomocy programowego kodeka HEVC

 

Przy użyciu sprzętowego kodeka HEVC (H.265 VCE) obciążenie procesora znacznie spada, a do akcji wkracza sprzętowy enkoder (Video Codec 0).

Handbrake

HandBrake - konwersja wideo 4K do FHD przy pomocy sprzętowego kodeka HEVC

 

Z praktycznie identyczną sytuacją będziemy mieć do czynienia przy użyciu AV1.

Handbrake 4K do FHD soft AV1

HandBrake - konwersja wideo 4K do FHD przy pomocy programowego kodeka AV1

 

Zarówno w jednym, jak i drugim przypadku widzimy, że kodek nie jest w pełni obciążony. Spowodowane jest to konwersją do 1920 x 1080. Jeśli zostalibyśmy przy 3840 x 2160, to pracowałby on pełną mocą.

Handbrake AV1 hard

HandBrake - konwersja wideo 4K do FHD przy pomocy sprzętowego kodeka AV1

 

Jedyną różnicą jaką zauważymy przy wykorzystaniu HEVC i AV1, będzie nieco niższe obciążenie CPU i układu graficznego przy użyciu tego drugiego kodeka, no i oczywiście czas przeprowadzania konwersji. Z jakimi różnicami mamy do czynienia?

Jak widać pomimo tych samych ustawień konwersji, czas pracy przy wykorzystaniu sprzętowych kodeków znacznie się skraca. O ile sprzętowa akceleracja AV1 i HEVC nie różni się zbytnio jeśli chodzi o czas renderowania, to już wykorzystanie samego CPU pokazuje, że przy AV1 jest zdecydowanie więcej roboty.

DaVinci Resolve i sprzętowa akceleracja przy renderowaniu wideo

DaVinci Resolve potęgą jest i basta. Ten występujący również w darmowej wersji kombajn do edycji wideo jest z pewnością jednym z najlepszych programów na rynku. Darmowa wersja ma oczywiście swoje ograniczenia, ale już jakiś czas temu firma Black Magic włączyła w niej obsługę sprzętowych kodeków wideo i możliwość renderowania materiału wynikowego za pomocą GPU (OpenCL/CUDA).

Dzięki temu program z automatu korzysta z możliwości sprzętowych enkoderów, przynajmniej jeśli chodzi o HEVC i AV1. W czasie testu renderowałem materiał 4K UHD 60 fps za pomocą różnych kodeków.

DaVinci HEVC

DaVinci Resolve - renderowanie wideo 4K 60 fps przy pomocy sprzętowego kodeka HEVC

 

Zarówno w przypadku stosowania kodeka HEVC (powyżej) i AV1 (poniżej) widać, że program oprócz wykorzystania sprzętowego kodeka (Video Codec 0) maksymalnie wykorzystuje również układ graficzny przez OpenCL (Compute 1). W przypadku HEVC zarówno obciążenie kodeka jak i procesora jest wyższe. Renderując wideo w DaVinci spodziewajcie się znacznie niższego obciążenia kodeka i CPU w niższych rozdzielczościach - główną robotę załatwia tu karta graficzna.

DaVinci video encoder

DaVinci Resolve - renderowanie wideo 4K 60 fps przy pomocy sprzętowego kodeka AV1

 

Gdy sięgniemy po programowy kodek H.264 możemy liczyć na maksymalne obciążenie procesora i spore układu graficznego - sprzętowy kodek wideo nie jest wykorzystywany.

DaVinci 4K soft H.264

DaVinci Resolve - renderowanie wideo 4K 60 fps przy pomocy programowego kodeka H.264

 

 

Nawet bez wsparcia sprzętowego kodeku wideo DaVinci radzi sobie z renderowanie stosunkowo szybko, a to oczywiście dzięki włączeniu do akcji GPU (OpenCL). Tym niemniej sam czas renderowania materiału skraca się znacząco przy wykorzystaniu sprzętowych kodeków.

Sprzętowe kodeki video HEVC i AV1

Jeśli zależy nam na szybkim i efektywnym przetwarzaniu obrazu, wszędzie gdzie tylko można warto korzystać ze sprzętowych kodeków. Żeby daleko nie szukać można je wykorzystać choćby w OBS - wprawdzie do transmisji można wykorzystać tylko sprzętowy kodek H.264 to już do nagrywania jak najbardziej zarówno HEVC, jak i AV1.

Ustawienia kodowania wideo w OBS

Ustawienia kodowania wideo w OBS

 

Również popularne narzędzie do nagrywania gier i pulpitu (i innych celów), czyli polski Action! pozwala na wykorzystanie sprzętowego kodeka HEVC - miejmy nadzieję, że twórcy wkrótce uzupełnią jego możliwości o wykorzystanie AV1.

Ustawienia kodowania wideo w Action!

Ustawienia kodowania wideo w Action!

 

Powyższe testy pokazują, że warto korzystać z pełnych możliwości sprzętu - czyli przy przetwarzaniu materiałów wideo wykorzystywać zarówno CPU i wszelkie możliwości GPU (GPGPU + sprzętowe kodeki). Oczywiście do “pełnego” wykorzystania wciąż nieco brakuje, bo przy takich zastosowaniach można by z powodzeniem włączyć do akcji również NPU (choćby do skalowania), ale… wszystko wskazuje na to, że jeszcze na to poczekamy.

 

Obserwuj nas w Google News

Pokaż / Dodaj komentarze do: Jak szybko i efektywnie przetwarzać wideo? Zobacz ile układów na raz możesz wykorzystać

 0
Kolejny proponowany artykuł
Kolejny proponowany artykuł
Kolejny proponowany artykuł
Kolejny proponowany artykuł