Archiwum Strona 2 z 8



07/01/2009Optymalizacja H.264

Począwszy od wersji 9.0.r115 Flash Player ma wbudowaną obsługę formatu video H.264. W chwili obecnej taką lub nowszą wersję playera posiada 90% internautów. Czas więc najwyższy przyjrzeć się temu formatowi bliżej i postarać się wykorzystać jak najbardziej jego możliwości. Nie jest to zadanie łatwe, gdyż liczba parametrów jakie oferuje może przyprawić o ból głowy. Na początek trochę teorii. Poniżej schemat blokowy kodeka H.264:

Schemat blokowy kodeka H.264

Schemat blokowy kodeka H.264

Ok, darujmy sobie teorię. ;)  Oto lista podstawowych parametrów z ich krótkim opisem oraz optymalnymi wartościami (nazwy parametrów mogą być różne w różnych programach).

  • Profile (określa technikę i strategię używaną przez koder oraz dekoder, co wpływa na wymaganą moc obliczeniową): High
  • Level (określa maksymalną rozdzielczość, wymaganą pamięć, lokalny bitrate, oraz poziom buforowania): 4.1 (5.1 dla Full HD)
  • Constant Bitrate – korzystne przy streamingu
  • Variable Bitrate – korzystne przy progressive download
  • Multi-pass encoding – kiedy tylko to możliwe używamy 2-pass encoding
  • IDR Interval (odległość pomiędzy klatkami kluczowymi – key frames distance): 50 – 250
  • Dynamic IDR positioning (dynamiczne umieszczanie klatek kluczowych zdeterminowane detekcją scen): 40 – 50
  • B-frames (lub B-pictures – klatki interpolowane na podstawie klatek poprzednich oraz następnych; nie są referencją dla innych klatek; wartość parametru określa ich maksymalną występującą po sobie ilość; kiedy koder to umożliwia, rekomenduje się użycie “auto decision”): 1 – 3
  • B-pyramid (umożliwia kiedy to konieczne użycie  B-frames jako klatek referencyjnych): włączyć jeżeli jest dostępne
  • Entropy coding (kodowanie entropijne binarnego strumienia obrazu): jeżeli to możliwe używamy CABAC zamiast CAVLC
  • Search mode (technika szukania wukorzystywana w estymacji ruchu): hexagonal
  • Search accuracy: quarter-pixel
  • Number of reference frames: 2 – 5
  • Intra frame prediction: należy używać Hadamard transform
  • Rate distortion optimization (optymalizuje estymację ruchu, jednak może znaczenie spowolnić przetwarzanie i niewiele poprawić jakość): complex
  • De-blocking (filtr – jeden z głównych powodów wysokiej wydajności kodeka H.264; nigdy nie należy go wyłączać): pozostawić wartości standardowe

Zastosowanie powyższych parametrów powoduje jednak znaczne wydłużenie czasu kodowania (nawet kilkukrotnie w stosunku do czasu trwania filmu). Oto lista parametrów oraz wartości jakie można im przypisać, żeby skrócić czas i jednocześnie nie stracić zbyt wiele na jakości:

  • reference frames: 2
  • zablokować B-pyramid
  • zmniejszyć  search range (np. do 16 lub do simple) oraz search mode
  • zmniejszyć search accuracy do half-pixel
  • zablokować rate distortion optimizations (RDO)
  • rozważyć zmniejszenie rozdzielczości lub zastosować pre-filtering

W takim razie do dzieła. Pod nóż poszły trzy programy: MediaCoder, MainConcept Reference, Adobe Media Encoder CS4 oraz 42 sekundowy film w jakości Full HD (1080i). Żeby dostrzec pogorszenie jakości, narzuciłem dość rygorystyczne warunki: docelowa rozdzielczość 720×400 oraz bitrate video 300kbps.

Niestety w MediaConcept Reference nie udało mi się wyprodukować filmu z dźwiękiem w formacie AAC, więc odpadł w zasadzie w przedbiegach. Nie jest to jednak dużą stratą, gdyż Adobe Media Encoder opiera się na kodeku opracowanym właśnie przez firmę MediaConcept. Tak więc poniżej porównanie klipów pochodzących z dwóch pozostałych programów.

Przykład 1: Media Coder
Przykład 2: Adobe Media Encoder CS4

MediaCoder wygrywa w tej konkurencji, choć oba programy wymagają przetestowania kompresji na filmach o innym tempie akcji (częste zmiany scen, dużo ruchu i szczegółów). Jakość obu filmów jest jednak i tak bardzo zadowalająca. Biorąc pod uwagę poprzedni kodek (On2vp6) otrzymujemy o wiele lepszą jakość przy niższym bitrate i cztery razy większej rozdzielczości (biorąc pod uwagę powierzchnię).

Kilka porad nie do końca związanych z kodekiem:

  • Wybierz odpowiedni bitrate do zadanej rozdzielczości; oto zalecane wartości:
    -  1080p: Full HD (1920×1080) 2 – 3 Mbps
    - 720p HD (1280×720): 1.5 – 2 Mbps
    - 576p HQ (1024×576): 1 – 1.2 Mbps
    - 480p SD (848×480): 0.8 – 1 Mbps
    - 360p MD (640×360): 0.6 – 0.8 Mbps
  • Rozważ kodowanie w rozdzielczości anamorficznej (np. 1440 x 1080 zamiast 1920 x 1080 i późniejsze rozciągnięcie obrazu we flashu – wg standardu dalej będzie to obraz Full HD)
  • Odszum video przed zakodowaniem (”temporal denoise filter”, “3D denoise filter”). Skalowanie również działa jako filtr odszumiający, o ile jest to skalowanie bilinear lub bicubic.
  • Jeżeli film źródłowy jest nagrany z przeplotem i nie posiadasz zaawansowanego programu do jego usuwania, spróbuj zakodować obraz w dwukrotnie niższej rozdzielczości pionowej i rozciągnij go we Flashu.
  • Jeżeli rozciągasz film we Flashu używaj video.smoothing=true. Pamiętaj, aby wyłączyć smoothing przy wchodzeniu w tryb fullscreen, aby uaktywnić akcelerację sprzętową.
  • Jeżeli kodujesz w niskiej jakości, można użyć we Flashu prostego sharpen filter w celu wyostrzenia szczegółów.

Na koniec jeszcze dwa przykłady przygotowane za pomocą MediaCoder pokazujące możliwości formatu H.264. Pierwszy z nich to fragment filmu w rozdzielczości HD (720p: 1280 x 720) i jakości 1Mbps: http://woszkowski.com/h264/pb-hd-1000.html. Drugi to film w rozdzielczości Full HD (1080p: 1920 x 1080) i jakości 1.5Mbps: http://woszkowski.com/h264/pb-fhd-1500.html. W obu przypadkach polecam przełączenie do trybu fullscreen przyciskiem w lewym górnym rogu filmu.

Na podstawie sesji “Encoding Video for the Highest Quality and Performance”, Fabio Sonnati, Adobe MAX 2008, Milan.

dodajdo

04/11/2008FOTB 08 – refleksje

FOTB 08

Kilka dni temu miała miejsce premiera pakietu Adobe CS4, a w nim nowej wersji Flasha. Zapewne lada dzień nastąpi wysyp aplikacji i przykładów, wykorzystujących engine 3D, bone tool czy inne nowe funkcje. Flash developerzy będą prześcigać się w ilości przykładów i ich optymalizacji. Tak będzie do wydania kolejnej wersji Flasha, gdzie cały wyścig rozpocznie się od nowa. Nie jest to zjawisko złe, ktoś zawsze musi zrobić pierwsze kroki. Dzięki nim, gdy tylko chcemy znaleźć przykłady wykorzystania narzędzi potrzebnych do skończenia naszego projektu, mamy je na wyciągnięcie ręki. Skala tego zjawiska jest jednak zbyt duża. Programiści zbyt wielką wagę przykładają do narzędzi i ich perfekcyjnego wykorzystania, zamiast skupić się na tym, co tak na prawdę chcą zrobić. Powinni zastanowić się do czego te narzędzia wykorzystać, poświęcić więcej czasu idei. Jest to mniej więcej przesłanie Jonathana Harrisa, który swoją sesją zakończył tegoroczną konferencję Flash on the Beach. Sesja, która początkowo wzbudziła aplauz, wywołała później w Internecie niemałą burzę. Flash developerzy poczuli się oburzeni, jak ktoś śmie podważać sensowność ich pracy.

Dało sie zauważyć, że całe FOTB było mniej techniczne, a bardziej inspiracyjne. Dużo sesji poświęcono wykorzystaniu Flasha oraz innych programów, do tworzenia sztuki, reklamy czy filmu. Erik Natzke pokazał w jaki sposób wykorzystuje tzw. particles (cząsteczki) do tworzenia obrazów. Jego prace można znaleźć m.in. na flickr. Robert Hodgin podzielił się z publicznością refleksją o tym, jak jego jednorazowa przygoda z kwasem zmieniła pogląd na życie. Obecnie stara się, aby jego wizualizacje oddziaływały na ludzi tak, jakby byli pod wpływem tego narkotyku. James Paterson rozbawił i zadziwił publiczność swoimi niemal poklatkowymi animacjami. Prawie wszyscy znają animacje logotypu stacji muzycznej VH1. To właśnie jego żmudne dzieło. GMUNK pokazał co można zrobić łącząc animację 3D, animacje flash oraz materiał video. Jego reklamy Bacardi, Hyundai’a czy Budlight’a mówią same za siebie. O czołówce video tegorocznego FOTB opowiedział jej twórca, Rob Chiu. Ciekawostką jest, że została skończona o czwartej nad ranem, kilka godzin przed rozpoczęciem konferencji.

Oczywiście nie brakowało sesji typowo technicznych. Carlos Ulloa, twórca Papervision3D, pokazał jak powstaje trójwymiarowa gra wyścigowa. Jego kolega z zespołu zaprezentował nowe funkcje wspomnianego engine’u. Lee Birmelow przedstawił nowości Flasha CS4. Keith Peters wyjaśnił na jakiej zasadzie opierają się engine’y fizyki, typu Box2DFlash. Mario Klingemann pokazał jak za pomocą Flasha i kamery czytać semacode. Sesje te pozostały jednak daleko w cieniu, gdyż opisywały biblioteki i algorytmy, będące tylko narzędziami w rękach prawdziwych artystów.

Ostatnią sesję na FOTB wygłosił Jonathan Harris. Pokazał on kilka swoich projektów. Jednym z nich jest “We Feel Fine“. W projekcie tym przeszukiwane są blogi ludzi z całego świata. Wyszukiwane są zdania, zawierające wyrażenia “I feel” oraz “I’m feeling like”. Następnie każde ze zdań poddawane jest analizie, skierowanej na poszukiwanie rodzaju uczucia, wieku piszącego, jego płci, panującej pogody, miejsca oraz daty wpisu. Na tej podstawie tworzona jest jest swoista mapa uczuć. Wynika z niej np. że ludzie najbardziej szczęśliwi są podczas świąt a najmniej w okolicach wakacji. W projekcie “Universe” budowany jest świat wokół zadanego słowa kluczowego. Wpisując słowo “Poland” możemy zobaczyć w jakim kontekście pisano o naszym kraju w ostatnim tygodniu, miesiącu, czy roku, jakie były poruszane tematy, jakich osób dotyczyły. Tego typu projektów u Jonathana Harrisa nie brakuje, jednak wszystkie  łączy jedna cecha – skupione są wokół człowieka.

Ciekawe jest to, że większość opisywanych wyżej projektów i dzieł nie ma nic wspólnego z Flashem. Animacje i wizualizacje tworzone są w programach do postprodukcji i 3D, a prace Jonathana Harrisa prezentowane są w apletach Java. Nie ważne jest jednak jakiego narzędzia użyjemy, równie dobrze mogli byśmy to wszystko zrobić we Flashu. Ważne jest jednak co tak na prawdę chcemy przekazać…

dodajdo

10/08/2008Cementownia Jaworzno

Powstała w 1885 roku. W latach swej świetności zatrudniała ok. 1800 osób i produkowała 380 tys. ton cementu rocznie. Przetrwała zmiany właścicieli, dwie wojny światowe… przestała produkować cement dopiero na początku lat osiemdziesiątych. W bezpośrednim sąsiedztwie tego, co z cementowni zostało, na osiedlu wybudowanym specjalnie na potrzeby fabryki, żyją do dziś byli pracownicy. Wyglądają przez okno i widzą jak niszczeje historia ich życia, życia ich ojców i dziadków.

dodajdo