Kodek kodekowi nierówny

Większość systemów dozoru wizyjnego kompresuje obraz za pomocą kodeka H.264. To dobry, sprawdzony kodek. Sęk w tym, że coraz doskonalsze kamery potrzebują bardziej zaawansowanego sposobu kodowania. Takiego, który poradzi sobie z kompresją i dekompresją obrazu ostrego jak żyletka. A H.264 ma już dwadzieścia lat i powoli przestaje wystarczać.
Spodziewano się, że po wielu latach funkcjonowania H.264 zostanie zastąpiony przez H.265. Niestety, licencje, jakie dotyczą nowej wersji i ograniczenia kompatybilności powodują, że nowy kodek nie stał się, przynajmniej na razie, popularnym standardem kompresji obrazu.
Czym jest kodek?
Zacznijmy ab ovo, czyli od wyjaśnienia, czym jest kodek (ang. codec, skrót od coder-decoder lub compressor-decompressor). Otóż jest to program lub urządzenie służące do kodowania i dekodowania danych multimedialnych, takich jak dźwięk i wideo. Jego głównym zadaniem jest kompresja danych w celu zmniejszenia ich rozmiaru oraz dekompresja w celu odtworzenia ich w pierwotnej jakości lub w jak najlepszej wersji.
Jak działa kodek?
Kodowanie (kompresja) – kodek przekształca surowe dane multimedialne w bardziej skompresowany format, aby zajmowały mniej miejsca (np. plik wideo o dużym rozmiarze jest konwertowany do mniejszego formatu,
np. MP4).
Dekodowanie (dekompresja) – gdy chcesz odtworzyć plik, kodek przekształca skompresowane dane z powrotem na format możliwy do odtworzenia przez odtwarzacz multimedialny.
Rodzaje kodeków:
- Kodeki wideo – np. H.264, H.265 (HEVC), VP9, AV1 – służą do kompresji plików wideo.
- Kodeki audio – np. MP3, AAC, FLAC, Opus – służą do kompresji dźwięku.
- Kodeki bezstratne i stratne:
- Bezstratne (np. FLAC, ALAC) – zachowują pełną jakość dźwięku, ale mają większy rozmiar.
- Stratne (np. MP3, AAC) – usuwają część danych, aby zmniejszyć rozmiar pliku kosztem jakości.
Kodeki są używane w aplikacjach do odtwarzania i tworzenia plików multimedialnych dla użytkowników, a także do wysyłania plików multimedialnych przez sieć. Kompresująpliki wideo i audio, aby zaoszczędzić miejsce, ale też po to, by dało się je przesłać przez Internet w rozsądnym czasie.
Kodeki składają się z kodera i dekodera. Koder kompresuje plik multimedialny, a dekoder dekompresuje go. Istnieją setki różnych kodeków przeznaczonych do kodowania różnych mediów, takich jak wideo i audio. Dla użytkownika końcowego działanie kodeka jest w zasadzie niewidoczne. Na przykład program Windows Media Player, który jest preinstalowany z każdą wersją systemu Windows, udostępnia ograniczony zestaw kodeków do odtwarzania plików multimedialnych. W przypadku systemów VMS niezbędne kodeki są umieszczane w paczkach instalacyjnych oprogramowania lub paczkach aktualizacyjnych, aby system mógł bezproblemowo współpracować z urządzeniami transmitującymi obraz i/lub dźwięk.

Podczas dekompresji kodek odwraca proces kompresji i rekonstruuje plik wideo. Podczas tego procesu niektóre informacje mogą zostać utracone. Jak wiele – to już zależy od kodeka. Prowadzi to do powstania końcowego pliku wideo, który może nie pasować idealnie do oryginalnie skompresowanego wideo, co może powodować potencjalne różnice w jakości. Wiele zależy od stopnia kompresji oferowanego przez kodek lub wybranego przez użytkownika. Zasada w tym przypadku jest prosta – im większy stopień kompresji, tym większa utrata danych, a końcowo gorsza jakość dekompresowanego pliku. Kodeki są niezbędne do umożliwienia wydajnej obsługi multimediów, zmniejszenia wymagań dotyczących przepustowości i zapewnienia optymalnej jakości w zastosowaniach multimediów cyfrowych.
Ewolucja standardów kompresji obrazu
H.264/AVC (Advanced Video Coding) to standard kodowania sekwencji wizyjnych przyjęty w roku 2003 jako 10. część standardu ISO MPEG-4 oraz jako rekomendacja ITU-T H.264. Mimo że ma już ponad 20 lat, nadal pozostaje najpowszechniej używanym kodekiem w branży dozoru wizyjnego, m.in. dzięki temu, że na nim oparto ONVIF Profile S, co znacząco ułatwia integrację urządzeń różnych producentów, wykorzystujących ten właśnie kodek (patrz ramka: Co ma ONVIF Profile S do kodeka H.264?).
H.264 kompresuje wideo, dzieląc najpierw klatkę na kwadraty o stałym rozmiarze 16×16 pikseli, zwane makroblokami. Następnie każdy makroblok jest kompresowany poprzez eliminację nadmiarowych informacji wizualnych w pojedynczych klatkach (kompresja przestrzenna) oraz przechowywanie tylko zmian między kolejnymi klatkami (kompresja czasowa). To podejście pozwala znacząco zmniejszyć rozmiary plików przy zachowaniu akceptowalnej jakości obrazu.
Jednak H.264 ma istotne ograniczenia w kontekście współczesnych wymagań:
- Kodek był optymalizowany głównie dla rozdzielczości Full HD (1080p).
- Teoretycznie wspiera obrazy do 8K, jednak brak obsługi HDR dla wysokich rozdzielczości.
- Stała wielkość makrobloków jest nieefektywna w przypadku obrazów o wysokiej rozdzielczości.
- Generuje stosunkowo duży transfer danych przy wysokich rozdzielczościach.
Czas na zmiany
H.265/HEVC (High Efficiency Video Coding) został opracowany jako następca H.264 i jest wspierany przez ONVIF Profile T. Wprowadza on nową strukturę kodowania zwaną CTU (Coding Tree Units) – elastyczne jednostki o zmiennych rozmiarach, które mogą być znacznie większe (do 64×64 pikseli) niż makrobloki H.264. Dzięki temu H.265 może skuteczniej zachowywać szczegóły i jakość w krytycznych obszarach wideo.

W teorii H.265 może osiągnąć lepszą jakość obrazu przy tej samej przepustowości lub zmniejszyć rozmiar pliku przy zachowaniu podobnej jakości w porównaniu z H.264. Niemniej jednak jego popularność nie rośnie tak szybko, jak można by się spodziewać, co wynika przede wszystkim z dwóch powodów.
Pierwszym są ograniczenia techniczne. Kodeki wideo nie są kompatybilne krzyżowo – kodek używany do kodowania i przesyłania danych wideo musi być zgodny z kodekiem używanym do ich dekodowania i odtwarzania. Oznacza to, że obraz zakodowany w H.265 nie może być wyświetlony za pomocą dekodera H.264 i odwrotnie. Ten problem jest najbardziej odczuwalny w rozwiązaniach chmurowych oraz aplikacjach webowych. Do dzisiaj tylko wybrane przeglądarki internetowe w pełni obsługują standard HEVC, jak Safari, Samsung Internet czy Baidu. Pozostałe, jak Chrome, Firefox, Edge czy Opera, obsługują go tylko na urządzeniach z odpowiednią akceleracją sprzętową.
Drugim są problemy natury prawnej. HEVC jest formatem zastrzeżonym, obwarowanym wieloma patentami. Licencjonowaniem zarządza Via Licensing Alliance, pobierające opłaty od twórców oprogramowania. Każdy z nich, niezależnie od tego, czy jest producentem VMS, czy producentem kamery do monitoringu wizyjnego, chcąc stosować H.265, musi uiścić opłatę licencyjna wynoszącą 0,20 USD za każde użycie/implementację/jednostkę, o ile produkcja przekracza już 100 tys. jednostek rocznie. Owszem, korzystanie z H.264 również wymagało opłacenia licencji, ale było to 0,10 USD za jednostkę, o ile sprzedaż przekroczyła 5 milionów urządzeń/implementacji. Biorąc pod uwagę, że w 2024 roku sprzedano ponad 200 milionów kamer dozoru wizyjnego, wartość licencji za stosowanie H.265 w przypadku samych tylko kamer może wynosić około 40 milionów USD, a drugie tyle za oprogramowanie.
Smartkodeki – rozwiązanie pośrednie
Tradycyjne kodeki wideo zapewniają kompresję, usuwając nadmiarowe informacje z klatek wideo, natomiast smartkodeki wykorzystują zaawansowane algorytmy do analizy zawartości strumienia wideo w czasie rzeczywistym i określania, które części obrazu są najważniejsze dla celów nadzoru.
Innymi słowy – smartkodeki to zaawansowane algorytmy kompresji wideo, które optymalizują wykorzystanie przepustowości i przestrzeni dyskowej w systemach monitoringu, jednocześnie zachowując wysoką jakość obrazu. Są rozwinięciem standardowych kodeków, ale wprowadzone zostały w nich dodatkowe mechanizmy analizy obrazu.
Koncepcja nie jest nowa – jeszcze przed nastaniem AVC pojawiło się wiele rozwiązań, których celem było zredukowanie informacji powtarzajacych się w pliku wideo, ale z jednoczesnym utrzymaniem jego wysokiej jakości. Do takich rozwiązań należały kompresje MxPEG Mobotixa i MPEG4CCTV firmy Geutebrück. Ponieważ jednak każde z tych rozwiązań pochodziło od konkretnego producenta, to nie stały się obowiązującym w branży standardem, za to stały się bazą dla smartkodeków.
Smartkodeki mogą:
- Znacząco (nawet o 70%) zmniejszyć ilość danych, które muszą być przesyłane i przechowywane.
- Poprawić jakość wideo poprzez selektywne stosowanie kompresji do różnych części obrazu.
- Oznaczać obszary zainteresowania (ROI), które są kompresowane mniej agresywnie.
- Dynamicznie dostosowywać przepustowość w zależności od dostępnych zasobów sieciowych.
- Optymalizować częstotliwość wysyłania klatek kluczowych (I-frame) w zależności od ruchu w scenie.
- Dynamicznie zmieniać liczbę klatek na sekundę w zależności od wykrytej aktywności.
Co istotne, smartkodeki (na ogół) pozostają zgodne z istniejącymi standardami dekodowania, co oznacza, że nie potrzebują dodatkowych dekoderów po stronie oprogramowania klienckiego. Poszczególne standardy dekodera określają jedynie składnię i metodę odtwarzania materiału, nie narzucając samej metody kompresji.
Przyszłość kodeków wideo w systemach dozoru wizyjnego
Wzrost liczby kamer 4K i 8K stwarza zapotrzebowanie na standardy kodowania wideo, które zapewnią wysoką jakość przy niskich przepustowościach. Na horyzoncie pojawiają się dwa obiecujące kodeki: VVC (H.266) i AV1.
Versatile Video Coding (VVC), znany również jako H.266, to standard kompresji wideo sfinalizowany 6 lipca 2020 r. Jest następcą HEVC i został opracowany z myślą o dwóch głównych celach:
- poprawie wydajności kompresji,
- obsłudze bardzo szerokiego zakresu zastosowań, od obrazów niskiej rozdzielczości po 4K i 16K, a także filmów 360°.
VVC, podobnie jak H.265, podlega złożonym zasadom licencjonowania, co może ograniczać jego przyjęcie przez branżę. AV1 to wprowadzony w 2018 r. przez Alliance for Open Media (AOM) standard kodowania wideo nowej generacji. Członkami założycielami AoM są liderzy branży, tacy jak Amazon, Cisco, Google, Intel, Microsoft, Mozilla i Netflix, którzy postanowili stworzyć alternatywę dla kosztownych rozwiązań licencyjnych HEVC.
Zarówno VVC, jak i AV1 opierają się na koncepcji superbloków o wielkości 128×128 pikseli (dla porównania, w H.264 blok ma rozmiar 16×16 pikseli), co wymaga większej mocy obliczeniowej, ale pozwala zachować wyższą jakość obrazu. Szczególnie interesującą cechą AV1 jest technologia adaptacyjnego przesyłania strumieniowego, która jakość wideo dostosowuje w czasie rzeczywistym do tego, jakiej wydajności łączem sieciowym dysponuje klient. Jest to możliwe dzięki wprowadzeniu nowego typu ramki międzyklatkowej, tzw. ramki S (switching frame), która umożliwia przełączanie między różnymi rozdzielczościami bez konieczności stosowania pełnej klatki kluczowej.
Główną wadą AV1 jest jego intensywność obliczeniowa podczas kodowania, co czyni go mniej praktycznym w zastosowaniach wymagających pracy w czasie rzeczywistym, takich jak transmisje na żywo. Jednak sytuacja szybko się poprawia, ponieważ sprzętowa obsługa dekodowania AV1 staje się coraz bardziej powszechna w nowych urządzeniach.
Wydaje się, że w najbliższej przyszłości będziemy świadkami stopniowej ewolucji, a nie rewolucji w obszarze kodeków wideo dla systemów dozoru wizyjnego. Jeszcze przez jakiś czas H.264 będzie dominującym standardem, powoli jednak ustępując czekającym w blokach H.265, VVC i AV1.
Dla użytkowników systemów dozoru wizyjnego oznacza to konieczność zachowania pewnej czujności, szczególnie przy wyborze nowych urządzeń, by uniknąć problemu z kompatybilnością. Jednocześnie nowe kodeki przyniosą znaczące korzyści w postaci zmniejszenia wymagań dotyczących przepustowości i pojemności pamięci masowej, co z pewnością przełoży się na obniżenie kosztów eksploatacji systemów. •
Co ma ONVIF Profile S do kodeka H.264?
Open Network Video Interface Forum (ONVIF) to międzynarodowa organizacja standaryzacyjna, która opracowuje otwarte standardy dla urządzeń dozorowych (np. kamer IP, rejestratorów NVR). Powstała w 2008 roku, a jej celem jest zapewnienie kompatybilności i interoperacyjności sprzętu różnych producentów.
Bez ONVIF każda firma mogłaby używać własnych, zamkniętych technologii, co utrudniałoby integrację różnych urządzeń w jednym systemie monitoringu.
ONVIF definiuje profile, czyli zestawy funkcji, które urządzenia i oprogramowanie muszą obsługiwać, aby były kompatybilne.
ONVIF Profile S to standard przeznaczony dla kamer IP i rejestratorów NVR. Oznacza to, że jeśli kamera i rejestrator obsługują ONVIF Profile S, to będą ze sobą kompatybilne, nawet jeśli pochodzą od różnych producentów.
Główne funkcje ONVIF Profile S:
- Strumieniowanie wideo – kamera IP przesyła obraz do rejestratora lub oprogramowania VMS (Video Management System).
- Podstawowe sterowanie kamerą – np. zmiana ustawień obrazu, przesyłanie strumienia RTSP.
- Integracja urządzeń różnych producentów – np. kamera firmy A może współpracować z rejestratorem firmy B, jeśli oba obsługują ONVIF Profile S.
H.264 jest standardowym kodekiem wideo używanym w systemach monitoringu. ONVIF Profile S zapewnia, że kamery IP i rejestratory obsługujące ten profil mogą poprawnie przesyłać strumienie wideo w formacie H.264, niezależnie od producenta.
Dzięki temu użytkownik może łatwo budować systemy monitoringu składające się z urządzeń różnych marek, nie będąc zobligowany do kupowania wszystkiego od jednego dostawcy.