Jak przygotować wideo do emisji w sieci (Youtube, Vimeo, GVO i inne) – cz.1 7

Publikując w sieci swoje filmy wideo często nie zastanawiamy się, jak zoptymalizować materiał, żeby miał wysoką jakość obrazu i każdy mógł go obejrzeć na dowolnym urządzeniu. Pojęcia takie jak kompresja, szybkość transmisji bitów, czy strumień wideo są „zbyt techniczne” żeby zawracać sobie nimi głowę. Ale to dzięki umiejętności ich wykorzystania możemy przyciągnąć rzesze fanów. Dobrze przygotowany technicznie do emisji film to element wizerunku w wideo marketingu.

W tym artykule omówię kilka zaleceń dotyczących kompresji materiału wideo przeznaczonego do transmisji w sieci.

Przepustowość łącza

Oto scenariusz, który może być Tobie znajomy. Nagrałeś i zmontowałeś materiał wideo do postaci, która odpowiada Twoim oczekiwaniom, ale w momencie, kiedy oglądasz swój film na swojej stronie www, za każdym razem potrzeba czasu, żeby się załadował lub bez przerwy się zacina podczas odtwarzania. Niekoniecznie musi być to kwestia błędów kodowania. Może być to wynikiem zakodowania filmu w sposób niewłaściwy dla tego sposobu odtwarzania.

W świecie idealnym powinieneś móc załadować swój nieskompresowany film bezpośrednio na swoją stronę www, a widzowie powinni móc go obejrzeć. Niestety, ilość przesyłanych danych w stosunku do ograniczeń transferu, jaki mają Twoi klienci powoduje, że jest to na dzień dzisiejszy niemożliwe.

Aby zmniejszyć ilość danych wpompowywanych przez Twoje wideo do sieci będziesz zmuszony dokonać kompresji, używając określonego kodeka, czyli programu zdolnego do przekształcania sygnału.

Kontener, kodek – na co mi to?

Aby zrozumieć to, co będzie dalej opisane musimy najpierw wprowadzić pojęcie kontenera.

Twój film składa się z dwóch elementów: obrazu i dźwięku, które muszą być odtworzone jednocześnie i odpowiednio zsynchronizowane. Zadaniem kontenera jest połączenie tych dwóch strumieni danych razem niezależnie od sposobu ich kompresji.

Spośród popularnych kontenerów, takich jak MP4, MOV, FLV, WMV i AVI, najlepszym wyborem jest MP4. Każdy z pozostałych ma swoje mankamenty, które ograniczają ich użyteczność.

Złożoność kontenera MOV sprawia, że podczas odtwarzania w odtwarzaczach mogą powstawać opóźnienia. FLV jest wspierane tylko przez wtyczkę Flash, która nie jest obsługiwana przez standard HTML5 oraz przez mobilne urządzenia Apple, takie jak iPhone. Kontener WMV wymaga specjalizowanych wtyczek i jest głównie obsługiwane przez produkty Microsoftu, takie jak Zune, czy Silverlight. Z kolei kontener AVI nie jest przeznaczony do dystrybucji poprzez sieć. Jest on przeznaczony dla odtwarzaczy stacjonarnych i desktopowych, a nie do odtwarzania poprzez sieć nawet za pomocą własnych odtwarzaczy, ale został tu wymieniony dla porządku.

MP4 kontenerKontener MP4 jest natomiast niemalże uniwersalny. Zarówno Apple, jak i Microsoft, Flash i HTML5 obsługują MP4 (jest kilka wyjątków). Podstawowymi kodekami używanymi w MP4H.264 dla strumienia wideo i AAC dla strumienia audio. Pod względem kompatybilności jest to najlepszy wybór dla kompresji Twojego filmu. H.264 jest obsługiwane przez niemal każdy odtwarzacz, przeglądarkę, wtyczkę lub urządzenie przenośne lub stacjonarne. Poza tym oferuje jeden z najlepszych algorytmów kompresji wideo i do tego jest darmowy.

Jakiego kodowania użyć dla konkretnej szybkości połączenia?

Rozmiar pliku jest prawdopodobnie rzeczą, która przychodzi Ci do głowy kiedy obrabiasz swój film. Ale nie jest to, wbrew pozorom najważniejszy czynnik charakteryzujący Twoje wideo. W niektórych serwisach Internetowych istnieje ograniczenie rozmiaru pliku, jaki można wgrać, ale o wiele istotniejsza jest całkowita szybkość transmisji bitów (ang. bitrate).

Szybkość transmisji bitów (bitrate) określa liczbę bitów transmitowanych w jednostce czasu. Całkowity bitrate jest to kombinacja szybkości transmisji strumieni wideo i audio w Twoim pliku, w której przewagę ma strumień wideo.

Jeśli szybkość łącza widza będzie przewyższać szybkość transmisji bitów, to strumień nie będzie się zacinał (niezależnie czy to będzie ściąganie progresywne, czy transmisja strumieniowa – ang. streaming). Rozmiar pliku natomiast będzie zależał od całkowitej szybkości transmisji bitów i długości filmu.

Rozmiar pliku = bitrate (kilobity na sekundę [kbps]) x długość

Pompa wodnaUproszczoną analogię do transmisji wideo w Internecie znajdziesz w sposobie, w jaki woda jest pompowana ze studni i jak długo zajmuje jej przemieszczenie się ze studni do kranu. Nie ma znaczenia, jaką moc będzie miała pompa, ponieważ zawsze wystąpi opóźnienie z powodu transportu wody rurami do kranu. Twój film to woda, a pompa odzwierciedla wydajność serwera na którym znajduje się Twój plik (YouTube, Vimeo, GVO, Amazon S3). Natomiast średnica rury, to szybkość łącza, które posiada użytkownik końcowy. To właśnie rura będzie wąskim gardłem wydłużającym czas, jaki potrzeba na wypłynięcie wody po drugiej stronie. Krótko mówiąc, musisz liczyć się z opóźnieniem, które jest głównym problemem, z jakim się zetkniesz podczas nadawania strumienia wideo on-line.

Jeśli znasz średnią szybkość łącza swoich klientów, możesz ustalić całkowitą szybkość transmisji bitów poniżej prędkości pobierania, jaką dysponują po to, żeby zapewnić im płynne odtwarzanie Twojego strumienia wideo. Do kodowania powinieneś użyć bitrate’u niższego niż szybkość łącza użytkowników końcowych, dzięki czemu unikniesz problemów związanych z istniejącym ruchem w sieci, odległością od serwera oraz ładowaniem się innych elementów strony www, na której umieściłeś swoje wideo.

Na przykład, biorąc pod uwagę średnią szybkość łącza Internetu szerokopasmowego w Polsce na poziomie 5,6Mbps (grudzień 2012) prawdopodobnie będziesz musiał użyć bitrate’u na poziomie pomiędzy 3000 a 4000 Kbps (1Megabit to 1000 kilobitów, a większość enkoderów podaje bitrate w kilobitach, stąd takie wartości).

To oznacza, że na każdą sekundę filmu potrzeba przesłać 3000 kilobitów zanim ta sekunda zostanie wyświetlona. Przeliczając bity na bajty (1 bajt to 8 bitów) wyjdzie 375 kilobajtów na sekundę lub 22,5MB (Magabajtów) na minutę, a to już jest dość duża wartość. Dla porównania płyta CD może pomieścić 700MB, a DVD 4500MB.

Ta wartość będzie bardzo Cię ograniczać i wpływać na to, jakich parametrów możesz używać do kodowania Twoich filmów. Problem staje się jeszcze poważniejszy, kiedy odbiorcy dysponują łączami o różnych przepustowościach, a to zazwyczaj ma miejsce. Jeśli serwujesz tylko jedną wersję swojego wideo będziesz musiał dostosować się do najniższej przepustowości, jaką mają Twoi odbiorcy. Niektórzy dostawcy oferują tylko 1Mbps w swoich pakietach. Dotyczy to głównie obszarów wiejskich, gdzie nie istnieje rozbudowana infrastruktura teleinformatyczna i dostęp do Internetu odbywa się drogą radiową.

Bitrate, szybkość transmisji bitów

Przycinanie strumienia wideo

Jeśli masz już docelowy bitrate, ale wciąż masz kłopoty, żeby osiągnąć akceptowalną jakość wideo, będziesz musiał je nieco przyciąć. Czynnikami, które wpływają na wielkość bitrate’u są: liczba pikseli (rozdzielczość filmu), ilość klatek na sekundę (frame rate) oraz ilość scen zawierających ruch. Jeśli montujesz film z materiału już wcześniej sfilmowanego, to nie masz wielkiego pola manewru w kwestii ilości scen ruchu. Ale kiedy układasz dopiero scenariusz nagrania możesz o tym pomyśleć zawczasu i wyeliminować zbędne sceny o dużej dynamice.

Rozdzielczość filmu

Największą zmianę uzyskasz obniżając liczbę wyświetlanych pikseli. Jeśli na swojej stronie wyświetlasz wideo w odtwarzaczu o rozmiarach 320 x 240 pikseli i nie przewidujesz, że widzowie będą powiększać obraz, to nie ma powodu, aby zamieszczać tam plik o większej rozdzielczości. Nawet jeśli Twoja kamera rejestruje obraz 1080p, to nie znaczy, że nie możesz zmniejszyć rozdzielczości, aby zyskać na szybkości transmisji bitów. Pamiętaj jednak o zachowaniu proporcji obrazu podczas zmiany rozmiaru. Większość materiałów wideo kręconych jest w proporcjach 16:9 lub 4:3. Zmiana tych proporcji powoduje, że obraz zostanie ściśnięty lub rozciągnięty, co wygląda nienaturalnie i szkaradnie.

Aby uzyskać lepszy stosunek jakości do bitrate’u, wartość rozdzielczości powinna być podzielna przez 16. Nie zmieniaj jej jednak za wszelką cenę po to tylko, żeby osiągnąć wielokrotność 16 chyba, że przycinasz obraz do mniejszych rozmiarów (over-crop). Z kolei powiększanie obrazu poprzez dodanie czarnych obramowań wokół obrazu (under-crop) zmniejszy jedynie wydajność kodowania. Skalowanie (zmiana rozmiaru) natomiast tylko pogorszy obraz.

Klatki na sekundę, frames per second, kl/s, fps

Ilość klatek (Frame Rate)

Mianem Frame Rate określa się liczbę unikalnych obrazów następujących po sobie, wyświetlanych w ciągu sekundy i dających iluzję ruchu. Zasada działania ludzkiego wzroku jest odmienna od sposobu pracy kamery zapisującej  obraz w postaci klatek. Pracuje on w sposób ciągły na zasadzie przepływu informacji zawartej w świetle. Oznacza to, że ilość klatek na sekundę przy których film wydaje się drżeć (brak płynności ruchu) jest różna dla różnych ludzi i związana jest z barwą (barwą światła lub akcji).

Wielkością, którą wykorzystuje większość twórców wideo to 24 klatki na sekundę (ang. frame per second – fps). Jest to tzw. typowa prędkość filmu, która daje „kinowe odczucia”. Jest to także wartość, przy której daje się ogłupić narząd wzroku i sprawić wrażenie płynności ruchu. Nie jest to oczywiście żaden standard. Jeśli Twój film przedstawia zapis tego co dzieje się na Twoim pulpicie, to zupełnie wystarczające będzie 5fps. Z drugiej strony, duże skoki pomiędzy bielą a czernią są widoczne poniżej 30fps, a sceny w grach często wymagają 60fps, aby zapewnić płynność ruchu. Z kolei standard telewizyjny PAL używa 25fps, a NTSC 29,97fps. Generalnie, nie powinieneś przekraczać szybkości klatek swojego materiału źródłowego. Oczywiście, najlepsze rezultaty osiągniesz, gdy utrzymasz tę samą wartość, jaka była w nagraniu źródłowym.

Może się zdarzyć że, aby obniżyć bitrate możesz musiał zmniejszyć ilość klatek na sekundę. Podobnie, jak przy większości z omawianych ustawień, aby uzyskać najlepszy efekt kodowania dla swojego filmu musisz wypróbować różne ustawienia i obejrzeć rezultaty. W tym celu rozsądnie jest zaplanować „ilość akcji” na ekranie. „Gadające głowy” (nagranie mówiącej osoby robione ze statywu), dla przykładu, nie potrzebują wysokich wartości klatek na sekundę, ponieważ ruch jest w większości minimalny. Z kolei film pokazujący deskorolkarza będzie wymagał co najmniej 24fps, aby zapewnić płynność ruchu. Jeśli obniżasz ilość klatek na sekundę to rób to w taki sposób, aby były to parzyste podziały (np. podział na pół), aby uniknąć rozsynchronizowania strumieni video i audio.

bitrate, bit rate, szybkość transmisji bitów

Szybkość transmisji bitów (bitrate)

Kiedy przystępujesz do kodowania, masz do wyboru VBR (ang. Variable Bit Rate encodingZmienna szybkość transmisji bitów) lub CBR (ang. Constant Bit Rate encodingstała szybkość transmisji bitów). Generalną zasadą jest to, że VBR jest używany w przypadku progresywnego lub standardowego ściągania pliku, natomiast CBR przeznaczony jest dla streamingu (nadawania w sieci).

VBR pozwala na ustawienie minimalnego i maksymalnego bitrate’u. Algorytm kompresji w tym przypadku próbuje jak najskuteczniej skompresować dane dążąc do wartości minimum, kiedy na ekranie są sceny statyczne oraz podbijać do maksymalnej, kiedy przeważają sceny ruchu. W efekcie uzyskuje się mniejszy rozmiar całkowity pliku, ale nieoczekiwane wzrosty bitrate’u mogą zatkać transmisję strumienia wideo.

CBR stosowany jest wtedy, gdy potrzebny jest przewidywalny, stały bitrate. Zazwyczaj wynikiem jest większy rozmiar pliku, ale jednocześnie płynniejsze odtwarzanie.

Jednak te zasady nie są uniwersalne. Wszystko zależy od Twojego wideo. Możesz użyć VBR w przypadku odtwarzania strumieniowego, pod warunkiem, że wartości szczytowe bitrate’u nie będą przekraczały szybkości łącza użytkownika końcowego. Dla przykładu, jeśli w filmie jest tylko jedna scena gwałtownego ruchu, to użycie stałego bitrate’u będzie marnowaniem pasma i lepszym pomysłem będzie użycie zmiennego bitrate’u. W każdym razie, spróbuj eksperymentować z oboma ustawieniami, aby znaleźć najlepsze rozwiązanie dla swojego filmu.

Streaming

Jakość, a odtwarzanie strumieniowe

Jeśli nie wiesz, jaką szybkością łącz dysponują Twoi odbiorcy i nie chcesz przestrzelić się z wielkością strumienia wideo, to jest metoda, która sprawdza się naprawdę dobrze w określaniu odpowiedniego bitrate’u. To miara Kush’a. Żeby znaleźć ten właściwy bitrate, pomnóż docelową ilość pikseli obrazu przez ilość klatek na sekundę; potem pomnóż ten wynik przez 1,2 lub 4 (w zależności od dynamiki scen) a następnie przemnóż wszystko przez 0,07. Otrzymasz wynik w bps (ang. bit per second – bity na sekundę). Jeśli chcesz mieć wynik w kbps, to podziel go przez 1000, a jeśli w Mbps to prze 1000000.

Miara Kush’a: liczba pikseli x współczynnik ruchu x 0,07 / 1000 = bitrate w kbps

Przykład 1: zrzut pulpitu

Jeśli Twoje wideo jest mało dynamicznym zapisem tego, co dzieje się na pulpicie, to wystarczy 5fps. Przy rozmiarze ekranu 1280×720 obliczenia będą wyglądały tak:

1280 x 720 = 921600 pikseli
5 klatek na sekundę
1 = współczynnik dla scen statycznych

(921600 x 5) x 1 x 0,07 = 322560 /1000 = 322kbps

Przykład 2: Film akcji

W tym przykładzie mamy film z dużą ilością akcji kręcony z prędkością 24 klatek na sekundę, dodatkowo zawierający wiele szybkich cięć i wszystko w rozdzielczości 1920 x1080:

1920 x 1080 = 2073600 pikseli
24 klatki na sekundę
4 = Duża dynamika scen

(2073600 x 24) x 4 x 0,07 13934592 / 1000 = 13934kbps

Nadawanie takiego strumienia nie jest dobrym pomysłem, chyba, że Twoi odbiorcy mieszkają w Korei Południowej. Jeśli decydujesz się udostępnić plik w super jakości, to przygotuj także inny w niższej jakości dla klientów, którzy nie posiadają najszybszych dostępnych łącz.

Używając powyższego wzoru do obliczenia zmiennego bitrate’u (VBR), przyjmij 75% otrzymanego wyniku jako wartość minimalną. Za maksymalną przyjmij 150%.

W sieci znajdziesz wiele kalkulatorów, które pomogą Ci obliczyć potrzebne wartości.

Od czego zacząć

Jeśli jesteś całkowicie zagubiony w tej chwili i masz problem, żeby zdecydować jaki bitrate powinno mieć Twoje wideo, oto kilka punktów zaczepienia, z którymi możesz eksperymentować:

Rozmiar (piksele) Bitrate (kbps) Rozmiar pliku (MB/min.)
320×240 400 3
480×270 700 5
1024×576 1500 11
1280×720 2500 19
1920×1080 4000 30

Generalnie, rekomenduję szybkość transmisji bitów na poziomie 2-2,5Mbps dla materiałów o wysokiej rozdzielczości, która uwzględnia średnią światową przepustowości łącza szerokopasmowego. Niemniej, sugeruję jeszcze raz poeksperymentowanie z różnymi ustawieniami, w celu uzyskania jak najniższego bitrate’u, przy zachowaniu satysfakcjonującej jakości.

audio stream

Jeszcze jeden strumień

Kiedy już określisz bitrate strumienia wideo, wciąż pozostaje kwestia ustawień dla kodowania audio. Większość ustawień jest oczywista, ponieważ mogą one zostać bezpośrednio skopiowane z pliku źródłowego. Jednak gdy Twój film ma większy bitrate niż oczekiwałeś, możesz dokonać pewnych cięć w pliku audio. Nawet przy wyjątkowo niskich wartościach szybkości transmisji bitów, można osiągnąć rozsądną jakość dźwięku.

Po pierwsze musisz zdecydować, czy dźwięk będzie mono, czy stereo. Jeśli Twój film był nagrany w mono, to nie ma sensu kodowania dźwięku w stereo. Możesz natomiast zredukować strumień stereo do mono, co jest zalecane w przypadku, gdy wideo zawiera tylko mowę. Filmy typu „gadające głowy” są zazwyczaj dobrymi kandydatami do zamiany stereo w mono.

Jeśli chodzi o częstotliwość próbkowania, to zalecane jest 44,1kHz dla większości zastosowań lub 22,05kHz gdy mamy do czynienia tylko z mową. Każda wartość poniżej 22,05kHz będzie powodować pogorszenie i zniekształcenie cichych dźwięków. W ten sposób dźwięki takie, jak oddech staną się słyszalne. Z kolei częstotliwości powyżej 44,1kHz przeznaczone są do projektów, gdzie główną rolę gra dźwięk.

I na koniec możesz wybrać zakres szybkości transmisji bitów od 96-164kbs dla ścieżek stereo. Zaś dla tych samych ścieżek, ale w mono wystarczy wartość z zakresu 56-80kbps. Zaś w przypadku mowy zrozumiała będzie ona nawet przy prędkości 16-24kbps.

Podsumowanie

Nie ma jednej generalnej instrukcji dotyczącej tego, jakiej kompresji powinieneś użyć dla swojego materiału wideo. Nie oczekuj jednej uniwersalnej liczby, którą będziesz mógł zastosować. W każdym przypadku jest to decyzja bazująca na szybkości łącza odbiorców oraz jakości obrazu, jaką chcesz pokazać. Zaś wiedza, którą Ci przekazałem, pozwoli przygotować najlepiej Twój materiał do transmisji w sieci.

Jak przygotować wideo do emisji w sieci (Youtube, Vimeo, GVO i inne) – cz.1 data modyfikacji: 26-03-2014 autor Paweł Byczuk

7 thoughts on “Jak przygotować wideo do emisji w sieci (Youtube, Vimeo, GVO i inne) – cz.1

  1. Odpowiedz Sylwiusz Mar 25,2014 18:43

    Bardzo fajnie napisany artykił dużo się dowiedziałem

    • Odpowiedz Paweł Byczuk Mar 26,2014 08:12

      Bardzo się cieszę, bo takie jest zadanie tego artykułu. W przygotowaniu jest część 2 pokazująca, jak to zrobić w praktyce.

  2. Odpowiedz Andrzej Krot Kwi 23,2014 21:17

    Ciekawy artykuł,fachowe porady ale tak naprawde liczy się praktyka a nie teoria.Teraz szukam jak przegrać film z GVO na YouTube i w całej sieci nie ma nic.To jest własnie przyklad jak teoria mija sie z praktyka 🙂

    • Odpowiedz Paweł Byczuk Kwi 23,2014 22:43

      To, co opisałem robię praktycznie na co dzień. W części drugiej artykułu pokażę, jak tę teorię przekłada się na praktykę za pomocą oprogramowania do konwersji video.

      W kwestii przegrania filmu z GVO oraz innych serwisów na YT zasada jest następująca:
      1. Ściągnąć film na swój dysk
      2. Wgrać na YT.
      Jak ściągnąć na dysk? Można np. użyć wtyczek typu Flash Video Downloader do przeglądarki internetowej.

      W przypadku GVO można też zalogować się do Easy Video Producera, odnaleźć film, który chce się przesłać do YT i wykorzystać link do pliku mp4 (jest po prawej stronie od filmu). Dzięki niemu można ściągnąć plik na własny dysk. Ten link można też wykorzystać do bezpośredniego wgrania filmu na YT bez konieczności ściągania na własny dysk (dużo szybsze).

  3. Odpowiedz Virtuos Mar 19,2016 22:38

    Bardzo podoba mi się ten artykuł. 🙂 bardzo pomocny.

  4. Odpowiedz Tomasz Sot Mar 24,2016 14:01

    to jakie są wartości Bitrate (kbps) oraz Rozmiar pliku (MB/min.) dla rozdzielczości 3840×2160 ?

    • Odpowiedz Paweł Byczuk Mar 29,2016 16:40

      Zachęcam do skorzystania z podanego wyżej wzoru:
      liczba pikseli x współczynnik ruchu x 0,07 / 1000 = bitrate w kbps

      Potem, wynik przemnożyć przez 0,75 – aby uzyskać minimalny bitrate, następnie podzielić przez 1000, aby mieć przepływność w Mbps. Następnie podzielić przez 8, aby uzyskać rozmiar 1 sekundy pliku w MB i w końcu pomnożyć przez 60, co da rozmiar pliku w MB/min.

      Z obliczeń wynika bitrate 21500 kbps i rozmiar pliku 163MB/min. To duże wartości. Warto użyć kodeka H.265, dzięki czemu można zredukować przepływność o 40% w stosunku do H.264 (niektóre źródła podają, że nawet 49%).

      Nie są to wartości, których należy się sztywno trzymać. Warto sprawdzić, czy wystarczą i nie trzeba wprowadzić jakichś korekt.

Odpowiedz na „Andrzej KrotAnuluj pisanie odpowiedzi