Istnieje wiele terminów i aspektów technologii przesyłania strumieniowego, które można uznać za oczywiste. Gdy ktoś dojrzewa jako streamer, opłaca się bardziej szczegółowo zrozumieć elementy, aby dowiedzieć się, dlaczego dany proces jest wykonywany, a także jego optymalne ustawienia.
Na przykład klatka kluczowa to coś, o czym kilku nadawców wspomniało wcześniej lub widziało ustawienie w koderze takim jak OBS, Wirecast itp., nie zdając sobie sprawy, co to jest i jak korzystny jest ten proces dla przesyłania strumieniowego. Klatka kluczowa jest ważnym elementem, ale tak naprawdę tylko częścią dłuższego procesu, który pomaga zmniejszyć przepustowość wymaganą dla wideo. Aby zrozumieć tę relację, trzeba najpierw zrozumieć klatki wideo.
Treść wideo składa się z serii klatek. Zwykle oznaczany jako FPS (klatki na sekundę), każda klatka to nieruchomy obraz, który odtwarzany po kolei tworzy ruchomy obraz. Tak więc utworzona zawartość, która wykorzystuje 30 klatek na sekundę, oznacza, że w każdej sekundzie filmu będzie odtwarzanych 30 „nieruchomych obrazów”.
Możliwość kompresji: interframe
Na przeciętnym filmie, jeśli ktoś weźmie 90 kolejnych klatek i rozłoży je, zobaczy wiele elementów, które są prawie identyczne. Na przykład, jeśli ktoś mówi, stojąc obok nieruchomej rośliny, jest mało prawdopodobne, że informacje związane z tą rośliną ulegną zmianie. W rezultacie jest to dużo zmarnowanej przepustowości wykorzystywanej tylko po to, by pokazać, że coś się nie zmieniło.
W związku z tym, szukając skutecznych sposobów kompresji treści wideo, zarządzanie ramkami stało się jedną z podstawowych zasad. Więc jeśli ta roślina z przykładu się nie zmieni, dlaczego po prostu nie używać tych samych elementów w niektórych kolejnych klatkach, aby zmniejszyć przestrzeń?
Ta realizacja zrodziła ideę przewidywania międzyramkowego. Jest to technika kompresji wideo, która dzieli klatki na makrobloki, a następnie szuka nadmiarowości między blokami. Proces ten polega na wykorzystaniu klatek kluczowych, znanych również jako i-frame lub ramki wewnętrzne, oraz ramek delta, które przechowują tylko zmiany w obrazie w celu zmniejszenia nadmiarowych informacji. Ten zbiór ramek często określany jest raczej nietechnicznie brzmiącą nazwą „grupy obrazów”, w skrócie GOP. Wszystkie kodeki wideo używane do kodowania lub dekodowania strumienia danych cyfrowych mają pewną formę zarządzania międzyramkami. H.264, MPEG-2 i MPEG-4 używają podejścia trzech klatek, które obejmuje: klatki kluczowe, klatki p i klatki b.
Co to jest klatka kluczowa?
Klatka kluczowa (i-frame) to pełna klatka obrazu w filmie. Kolejne ramki, ramki delta, zawierają tylko te informacje, które uległy zmianie. Klatki kluczowe będą pojawiać się wiele razy w strumieniu, w zależności od tego, jak zostały utworzone lub w jaki sposób są przesyłane strumieniowo.
Jeśli ktoś wyszuka frazę „klatki kluczowe” to wujek Google, prawdopodobnie znajdzie jakieś wyniki związane z animacją i edycją wideo. W tym przypadku używamy słowa „keyframe” w odniesieniu do kompresji wideo i jego relacji do ramek delta.
Jak działają p-frame?
Nazywane również ramkami przewidywanymi lub ramkami przewidywanymi, ramka p następuje po innej klatce i zawiera tylko część obrazu w filmie. Z tego powodu jest klasyfikowany jako ramka delta. Klatki P są wstecz do poprzedniej klatki p lub klatki kluczowej (ramki i) pod kątem nadmiarowości. Ilość obrazu prezentowanego w p-frame zależy od ilości nowych informacji zawartych pomiędzy klatkami.
Na przykład osoba mówiąca do kamery na statycznym tle prawdopodobnie będzie zawierała tylko informacje związane z jej ruchem. Jednak osoba biegnąca po polu podczas panoramowania kamery będzie miała znacznie więcej informacji z każdą klatką p, aby dopasować zarówno ich ruch, jak i zmieniające się tło.
Czym jest b-frame i czym różnią się od p-frame?
Klatki b, znane również jako przewidywane ramki dwukierunkowe, następują po innej klatce i zawierają tylko część obrazu w filmie. Ilość obrazu zawartego w b-frame zależy od ilości nowych informacji pomiędzy klatkami.
W przeciwieństwie do ramek p, ramki b mogą przeglądać wstecz i do przodu poprzednią lub późniejszą ramkę p lub klatkę kluczową (i-frame) pod kątem nadmiarowości. To sprawia, że ramki b są bardziej wydajne w przeciwieństwie do ramek p, ponieważ istnieje większe prawdopodobieństwo znalezienia nadmiarowości. Jednak ramki b nie są używane, gdy profil kodowania jest ustawiony na „baseline” wewnątrz kodera. Oznacza to, że koder musi być ustawiony na profil kodowania powyżej linii bazowej, taki jak „main” lub „high”.
Jak ustawić klatkę kluczową?
Jeśli chodzi o kompresję wideo do przesyłania strumieniowego na żywo, wewnątrz kodera ustawiana jest klatka kluczowa. Jest to konfigurowane przez opcję czasami nazywaną „interwałem klatki kluczowej” wewnątrz kodera.
Odstęp klatek kluczowych określa, jak często w filmie tworzona jest klatka kluczowa (klatka i-frame). Im wyższy interwał klatki kluczowej, tym większa kompresja jest stosowana do zawartości, chociaż nie oznacza to zauważalnego obniżenia jakości. Na przykład, jak działają interwały klatek kluczowych, jeśli interwał jest ustawiony na 2 sekundy, a liczba klatek na sekundę wynosi 30 klatek na sekundę, oznaczałoby to, że mniej więcej co 60 klatek jest tworzona klatka kluczowa.
Termin „interwał klatki kluczowej” nie jest uniwersalny i większość koderów ma na to swój własny termin. Na przykład Adobe Flash Media Live Encoder (FMLE) i vMix używają terminu „częstotliwość klatek kluczowych”, aby opisać ten proces. Inne programy i usługi mogą nazywać interwał „rozmiarem GOP” lub „długością GOP”, wracając do skrótu „Grupa obrazów”.
Wybór interwału klatki kluczowej na poziomie kodera
Jeśli chodzi o ustawienie interwału klatek kluczowych, różni się on w zależności od kodera.
W przypadku FMLE (Flash Media Live Encoder) ta opcja, oznaczona jako „Częstotliwość klatki kluczowej”, znajduje się w koderze oprogramowania, klikając ikonę klucza po prawej stronie formatu.
W Wirecast jest to ustawiane z menu Ustawienia wstępne kodera, a opcja nosi nazwę „klatka kluczowa co”. Wirecast jest inny, ponieważ interwał jest w rzeczywistości oznaczany w ramkach. Tak więc w przypadku transmisji 30 FPS ustawienie „klatki kluczowej co” 60 klatek dałoby z grubsza interwał klatki kluczowej wynoszący 2 sekundy, ponieważ masz 30 klatek na sekundę.
W przypadku kodera vMix należy najpierw kliknąć ikonę koła zębatego w pobliżu przesyłania strumieniowego, co otwiera Ustawienia przesyłania strumieniowego. W pobliżu opcji jakości znajduje się kolejna ikona koła zębatego, a kliknięcie tego otworzy menu z możliwością modyfikacji "Częstotliwości klatek kluczowych".
W oprogramowaniu Open Broadcast Software (OBS) dla wersji po v0.55b interwał klatek kluczowych można ustawić w obszarze Ustawienia w obszarze Zaawansowane. W przypadku wersji OBS przed wersją 0.542b nie jest jasne, jak zmodyfikować interwał klatek kluczowych, ale w rzeczywistości jest to składnik Ustawień. Tam przejdź do Zaawansowane, a następnie wybierz „Niestandardowe ustawienia kodera x264”. W tym polu należy wpisać następujący ciąg: „keyint=XX”, gdzie XX to liczba klatek do wyzwolenia klatki kluczowej. Podobnie jak w przypadku Wirecast, jeśli wymagany jest interwał klatki kluczowej wynoszący 2 sekundy, a FPS wynosi 30 sekund, wpisz: „keyint=60”.
W przypadku XSplit interwał klatki kluczowej jest składnikiem właściwości kanału. W obszarze Kodowanie wideo znajduje się lista z napisem „Interwał klatki kluczowej (sek.)”. Po prawej stronie znajduje się ikona koła zębatego. Kliknięcie koła zębatego uruchomi wyskakujące okienko „Konfiguracja kodowania wideo”. Umożliwi to komuś określenie interwału klatki kluczowej w sekundach.
Związek między klatkami kluczowymi a szybkością transmisji
Przebieg w tym wyjaśnieniu może się różnić, ponieważ kodery inaczej zarządzają szybkością transmisji i klatkami kluczowymi. Korzystając z enkodera, takiego jak Wirecast, można zauważyć, że nadawanie kogoś, kto rozmawia na nieruchomym tle, ma „wyższą jakość” w porównaniu do nadawania kogoś, kto skacze w górę iw dół na ruchomym tle. Można to odtworzyć, używając tej samej dokładnej średniej przepływności i odstępu klatek kluczowych między nimi. Powodem tego jest po części fakt, że ramki delta zawierają mnóstwo informacji do udostępnienia w przykładzie ze skokami. Redundancja jest bardzo mała, co oznacza, że w każdej ramce delta należy przesłać znacznie więcej danych.
Jeśli jednak masz koder, taki jak Wirecast, najtrudniej jest utrzymać strumień wokół wybranej średniej szybkości transmisji bitów. W konsekwencji, dodatkowa przepustowość, która jest potrzebna dla dodatkowych informacji zawartych w ramkach delta, powoduje obniżenie jakości w celu utrzymania średniej przepływności na tym samym poziomie.
Czy ktoś powinien używać ustawienia „automatycznej” klatki kluczowej?
W skrócie: nie.
Zasadniczo ustawienia automatycznych klatek kluczowych są całkiem dobre. Podczas zmiany sceny ręcznie wymuszą klatkę kluczową. Na przykład, jeśli przełączysz się ze slajdu Power Pointa na obraz kogoś mówiącego przed kamerą, co wymusi nową klatkę kluczową. Jest to pożądane, ponieważ ramki delta nie miałyby zbyt wiele do roboty, nie mogąc znaleźć nadmiarowości między slajdem PowerPoint a obrazem z aparatu.
Niestety, ten proces nie działa w przypadku niektórych technologii adaptacyjnego przesyłania strumieniowego, w szczególności HLS. Proces HLS wymaga, aby klatki kluczowe były przewidywalne i zsynchronizowane. Użycie ustawienia „auto” spowoduje utworzenie zmiennych odstępów między klatkami kluczowymi. Na przykład czas między klatkami kluczowymi może wynosić 7 sekund, a później może to być 2 sekundy, jeśli zmiana sceny nastąpi szybko.
W przypadku większości koderów wyłączenie funkcji „automatycznej zmiany” lub „wykrywania zmiany sceny” często oznacza po prostu określenie interwału klatki kluczowej. Na przykład w OBS, jeśli interwał klatki kluczowej jest ustawiony na 0 sekund, uruchomi się funkcja auto. Umieszczenie tam dowolnej liczby, takiej jak 1 lub 2, wyłączy funkcję auto.
Doskonalenie strategii klatek kluczowych
Wraz z pojawieniem się adaptacyjnych szybkości transmisji bitów branża znalazła się w dziwnym momencie, w którym istnieje dość jasna odpowiedź na temat najlepszych praktyk dotyczących klatek kluczowych i transmisji na żywo. Strategia ta obejmuje:
- Ustawienie interwału klatki kluczowej na około 2 sekundy
- Wyłączanie wszelkich „automatycznych” funkcji klatek kluczowych
- Korzystanie z profilu kodowania wyższego niż linia bazowa, aby uwzględnić ramki b
Ta strategia pozwala na łatwą nawigację treści, do oglądania na żądanie po emisji, jednocześnie czerpiąc korzyści z zarządzania ramkami i oszczędzając przepustowość przy zmniejszeniu nadmiarowości. Obsługuje również adaptacyjne przesyłanie strumieniowe bittirate, które jest ważnym elementem udanej transmisji na żywo i jest w stanie wspierać widzów z wolniejszymi połączeniami.