AV1 vs. h265 (HEVC) vs. VP9: Jaka jest różnica między tymi standardami kompresji?

AV1 vs. h265 (HEVC) vs. VP9: Jaka jest różnica między tymi standardami kompresji?
Czytelnicy tacy jak ty pomagają wspierać MUO. Kiedy dokonujesz zakupu za pomocą linków na naszej stronie, możemy otrzymać prowizję partnerską. Czytaj więcej.

Przesyłanie strumieniowe w rozdzielczości 4K to nowa norma, ale informacje dotyczące ponad 8,2 miliona pikseli są przesyłane co 16 milisekund — przechowywanie i przesyłanie wideo 4K w Internecie nie jest łatwym zadaniem.





Dwugodzinny film bez kompresji zajmowałby ponad 1,7 terabajta pamięci. Jak więc giganci streamingu, tacy jak YouTube i Netflix, radzą sobie z przechowywaniem i przesyłaniem strumieniowym filmów, które zajmują tak dużo miejsca?





WYKORZYSTAJ WIDEO DNIA

Cóż, nie robią tego, ponieważ używają kodeków wideo do zmniejszania rozmiaru filmów, ale czym jest kodek wideo i który z nich jest najlepszy?





Co to jest kodek wideo?

Zanim zagłębisz się w złożoność kodeków wideo, musisz zrozumieć, jak powstaje film. Mówiąc prościej, wideo to nic innego jak zestaw nieruchomych obrazów, które szybko się zastępują.

jak uzyskać dostęp do zdjęć icloud na iPhonie?
  Oprogramowanie do edycji wideo działające na komputerze

Ze względu na tę dużą prędkość zmian ludzki mózg myśli, że obrazy się poruszają, tworząc iluzję oglądania wideo. Dlatego oglądając wideo w 4K, patrzysz tylko na zestaw obrazów o rozdzielczości 2160x3840. Ta wysoka rozdzielczość obrazów sprawia, że ​​film nagrany w rozdzielczości 4K zapewnia wspaniałe wrażenia wideo. To powiedziawszy, ta wysoka rozdzielczość obrazów zwiększa rozmiar wideo, uniemożliwiając przesyłanie strumieniowe przez kanały o ograniczonej przepustowości, takie jak Internet.



Aby rozwiązać ten problem, mamy kodeki wideo. Skrót od kodera/dekodera lub kompresji/dekompresji, kodek wideo kompresuje strumień obrazów do bitów danych. Ta kompresja może albo obniżyć jakość wideo, albo nie mieć na nią wpływu w zależności od zastosowanych algorytmów kompresji.

Jak sama nazwa wskazuje, bit kompresji w kodeku zmniejsza rozmiar każdego obrazu. Aby zrobić to samo, algorytm kompresji wykorzystuje niuanse ludzkiego oka, aby ludzie nie wiedzieli, że oglądane przez nich filmy są skompresowane.





Dekompresja natomiast działa odwrotnie i renderuje wideo przy użyciu skompresowanych informacji.

Chociaż kodeki wykonują świetną robotę, jeśli chodzi o kompresję informacji, wykonywanie tego samego może obciążać procesor. Z tego powodu normalne jest obserwowanie wahań wydajności systemu podczas uruchamiania algorytmów kompresji wideo w systemie.





  Aplikacja do edycji wideo działająca na iPadzie

Aby rozwiązać ten problem, procesory i karty graficzne są dostarczane ze specjalnym sprzętem, który może obsługiwać te algorytmy kompresji. Umożliwienie procesorowi wykonywania bieżących zadań, podczas gdy dedykowany sprzęt przetwarza kodeki wideo, poprawiając wydajność.

Jak działa kodek wideo?

Teraz, gdy mamy podstawową wiedzę na temat tego, co robi kodek wideo, możemy przyjrzeć się, jak działa kodek.

Podpróbkowanie Chroma

Jak wyjaśniono wcześniej, filmy składają się z obrazów, a podpróbkowanie chrominancji ogranicza informacje zawarte w każdym obrazie. Aby to zrobić, redukuje informacje o kolorze zawarte w każdym obrazie, ale w jaki sposób ludzkie oko wykrywa tę redukcję informacji o kolorze?

Widzisz, ludzkie oczy świetnie wykrywają zmiany jasności, ale nie można tego powiedzieć o kolorach. Dzieje się tak dlatego, że ludzkie oko ma więcej pręcików (komórek fotoreceptorów odpowiedzialnych za wykrywanie zmian jasności) niż czopków (komórek fotoreceptorów odpowiedzialnych za różnicowanie kolorów). Różnica w pręcikach i czopkach uniemożliwia oczom wykrywanie zmian kolorów podczas porównywania skompresowanych i nieskompresowanych obrazów.

  Różne poziomy kompresji wideo przy użyciu podpróbkowania chrominancji
Kredyty obrazkowe: Janke z angielskiej Wikipedii/Wikimedia Commons

Aby wykonać podpróbkowanie chrominancji, algorytm kompresji wideo konwertuje informacje o pikselach w RGB na dane dotyczące jasności i koloru. Następnie algorytm zmniejsza ilość kolorów w obrazie na podstawie poziomów kompresji.

Usuwanie nadmiarowych informacji o ramce

Filmy składają się z kilku klatek obrazu iw większości przypadków wszystkie te klatki zawierają te same informacje. Na przykład wyobraź sobie film z osobą mówiącą na stałym tle. W takim przypadku wszystkie klatki w filmie mają podobną kompozycję. Dlatego wszystkie obrazy nie są potrzebne do renderowania wideo. Wszystko, czego potrzebujemy, to podstawowy obraz, który zawiera wszystkie informacje i dane związane ze zmianą podczas przechodzenia z jednej klatki do drugiej.

Dlatego, aby zmniejszyć rozmiar wideo, algorytm kompresji dzieli klatki wideo na klatki I i P (przewidywane klatki). Tutaj ramki I są podstawą i są używane do tworzenia ramek P. Ramki P są następnie renderowane przy użyciu informacji zawartych w ramkach I oraz informacji o zmianie dla tej konkretnej ramki. Korzystając z tej metodologii, wideo jest dzielone na zestaw klatek I przeplatanych w klatki P, co powoduje dalszą kompresję wideo.

Kompresja ruchu

Teraz, gdy podzieliliśmy wideo na klatki I i P, musimy przyjrzeć się kompresji ruchu. Część algorytmu kompresji wideo, która pomaga tworzyć klatki P przy użyciu klatek I. W tym celu algorytm kompresji dzieli ramkę I na bloki zwane makroblokami. Bloki te otrzymują następnie wektory ruchu, które definiują kierunek, w którym poruszają się te bloki podczas przechodzenia z jednej klatki do drugiej.

  Wektory ruchu na obrazie gry
Kredyty obrazkowe: Fundacja Blendera/ Wikimedia Commons

Te informacje o ruchu dla każdego bloku pomagają algorytmowi kompresji wideo przewidzieć lokalizację każdego bloku w nadchodzącej klatce.

Usuwanie danych obrazu o wysokiej częstotliwości

Podobnie jak zmiany danych dotyczących kolorów, ludzkie oko nie jest w stanie wykryć subtelnych zmian w elementach o wysokiej częstotliwości na obrazie, ale czym są elementy o wysokiej częstotliwości? Widzisz, obraz renderowany na ekranie składa się z kilku pikseli, a wartości tych pikseli zmieniają się w zależności od wyświetlanego obrazu.

W niektórych obszarach obrazu wartości pikseli zmieniają się stopniowo i mówi się, że takie obszary mają niską częstotliwość. Z drugiej strony, jeśli następuje szybka zmiana danych w pikselach, obszar jest klasyfikowany jako zawierający dane o wysokiej częstotliwości. Algorytmy kompresji wideo wykorzystują dyskretną transformatę kosinusową w celu zmniejszenia składowej o wysokiej częstotliwości.

jak przywrócić iPhone'a bez iTunes do ustawień fabrycznych

Oto jak to działa. Najpierw algorytm DCT działa na każdym makrobloku, a następnie wykrywa obszary, w których zmiana intensywności pikseli jest bardzo szybka. Następnie usuwa te punkty danych z obrazu, zmniejszając rozmiar wideo.

Kodowanie

Teraz, gdy wszystkie zbędne informacje w filmie zostały usunięte, możemy przechowywać pozostałe bity danych. W tym celu algorytm kompresji wideo wykorzystuje schemat kodowania, taki jak kodowanie Huffmana, które łączy wszystkie bity danych w klatce z liczbą ich wystąpień w filmie, a następnie łączy je w sposób podobny do drzewa. Te zakodowane dane są przechowywane w systemie, co umożliwia łatwe renderowanie wideo.

  Struktura kodowania Huffmana
Kredyty obrazkowe: Redor/ Wikimedia Commons