Poznaj filozofię ATM LiveEncoder
Wysoka jakość kodowania
Podstawowym celem budowania od podstaw nowej aplikacji kodującej dla techologii Flash było uzyskanie wysokiej jakości przekazu multimedialnego przy minimalnych wymaganiach na pasmo, osiągnięcie wysokiej stabliności działania i ścisłej integracji z systemem dystrybucji ATM CDN. Biorąc pod uwagę fakt, że odtwarzacz Flash (począwszy od wersji 9.0.115), dołączany do popularnych przeglądarek internetowych w postaci wtyczki, wspiera dekodowanie wideo za pomocą standardu H.264 i dekodowanie audio za pomocą standardu AAC, zdecydowano się wykorzystać maksymalnie potencjał tych technologii.
W przeciwieństwie do popularnych aplikacji do kodowania strumieni audiowizualnych w czasie rzeczywistym dla technologii Flash, ATM LiveEncoder wykorzystuje zaawansowane profile kodowania H.264. Oznacza to, że sekwencja kadrów poddawana jest złożonej obliczeniowo analizie, która ma na celu uzyskanie optymalnego, z punktu widzenia kompensacji ruchu, podziału obrazu na makrobloki, wybór najlepszych kadrów odniesienia oraz określenie tych obszarów obrazu, dla których redukcja szczegółów przyniesie wymierne korzyści, ale nie wpłynie znacząco na percepcję widza.
Brak ograniczeń liczby widzów
Tradycyjne aplikacje do kodowania przekazu audio-wideo w czasie rzeczywistym wysyłają pojedynczy strumień do odpowiedniego serwera strumieniującego, który powiela go i przekazuje do wielu równoczesnych widzów za pomocą odpowiednich protokołów. Gdy liczba widzów przekracza możliwości pojedynczej maszyny projektant aplikacji musi dodać kolejne serwery i na własną rękę zapewnić mechanizmy równoważenia obciążenia, tolerowania awarii i przekierowywania użytkowników. Takie podejście jest obecnie (tzn. w czasach dynamicznego rozwoju telewizji internetowej) całkowicie anachroniczne.
W przypadku ATM LiveEncoder zakodowany strumień przekazywany jest nie do pojedynczego serwera lecz do skalowalnego systemu dystrybucji zbudowanego z wielu serwerów zlokalizowanych w takich miejscach internetu, do których użytkownicy mają jak najlepszy dostęp. Serwery systemu dystrybucji działają jako pojedynczy rozproszony organizm, powielając odpowiednio strumienie i dane oraz przekazując informacje o obciążeniu, obsługiwanych użytkownikach i dostępnych materiałach multimedialnych. Widzowie, chcący oglądać kanał generowany przez ATM LiveEncoder, kierowani są do najlepszych serwerów z punktu widzenia działania całego systemu. Dzięki temu użytkownicy ATM LiveEncoder nie muszą troszczyć się o infrastrukturę, skalowalność i niezawodność systemu w przypadku wzrostu popularności emitowanych kanałów. Wystarczy uruchomić ATM LiveEncoder i zadbać o sukces marketingowy swojego przedsięwzięcia!
Uniwersalność
ATM LiveEncoder generuje zakodowane strumienie elementarne audio-video i zapisuje je w buforach systemu dystrybucji. Bufory są ograniczone czasowo i pozwalają na przechowywanie ostatnich kilku minut emitowanego kanału. Dane mogą być pobierane przez różne odtwarzacze multimedialne, w tym przez odtwarzacz Flash osadzony na stronach WWW. Każdy odtwarzacz może pobierać kanał z indywidualnym przesunięciem czasowym. Przetestowane odtwarzacze to Flash 9.0.115, VideoLAN, mplayer i ATM MediaPlayer, dzięki któremu pojedynczy kanał live może być jednocześnie odtwarzany w internecie i na ekranach reklamowych/informacyjnych. Wspomniana uniwersalność prezentacji wykorzystywana jest przez Totalizator Sportowy do emisji wyścigów konnych w internecie i na ekranach w wybranych kolekturach.
W obecnej implementacji kanały live mogą być pobierane z systemu ATM CDN za pomocą protokołu HTTP tak samo jak zwykłe pliki FLV. Ze względu na opublikowanie specyfikacji RTMP w czerwcu 2009 przez Adobe Systems Inc. planowana jest oficjalna obsługa tego protokołu w ATM CDN do końca roku 2009.
Dzięki zaawansowanej parametryzacji można dostosować jakość kodowania do dostępnej mocy obliczeniowej. Oznacza to, że na komputerach o mniejszej wydajności można zrezygnować z wielu skomplikowanych mechanizmów analizy obrazu i uzyskać jakość wynikową zbliżoną do jakości popularnych narzędzi do kodowania kanałów live dla technologii Flash. Na maszynach o większej mocy obliczeniowej jakość strumienia wynikowego może być dużo lepsza i zbliżona do jakości uzyskiwanej na koderach sprzętowych. Należy pamiętać, że predefiniowane profile dostępne w ATM LiveEncoder wykorzystują większość zaawansowanych mechanizmów H.264 i są bardzo wymagające obliczeniowo.
Wiele profili
Aplikacja ATM LiveEncoder pozwala na generowanie wielu równoległych strumieni audio-wideo o różnych przepływnościach. Kanały generowane są na podstawie danych pobieranych z pojedynczego urządzenia audio-video i zapisywane w oddzielnych buforach w systemie ATM CDN. Dzięki temu widz może wybrać jakość przekazu dopasowaną do parametrów łącza internetowego.
Dopuszczalne są trzy strategie wyboru jakości.- Użytkownik może przełączyć kanał wysokiej jakości na kanał o niskiej jakości w sposób jawny poprzez wybór odpowiedniej opcji w odtwarzaczu.
- Odtwarzacz na podstawie analizy dostępnej przepływności łącza użytkownika może automatycznie zmienić kanał o niższej, bądź wyższej jakości.
- System dystrybucji ATM CDN może w locie budować kanał wynikowy bazując na określonej ilości kanałów generowanych przez pojedynczy ATM LiveEncoder. Oznacza to, że na podstawie informacji zwrotnej od odtwarzacza począwszy od najbliższej ramki kluczowej będą pobierane i wysyłane ramki z kanału o niższej przepływności. Jeżeli nastąpi poprawa warunków transmisyjnych to począwszy od kolejnej ramki kluczowej będą wysyłane dane z kanału o wyższej przepływności. Funkcjonalność ta, nazywana przez wielu producentów smooth streaming i traktowana przez wielu projektantów serwisów multimedialnych jako niezwykle innowacyjna, dostępna jest od wielu lat w ATM MobileServer.
Należy podkreślić, że w pierwszej strategii odpowiedzialność za wybór jakości spoczywa całkowicie na użytkowniku. Zmiana jakości wiąże się z ponownym buforowaniem i oczekiwaniem. W podejściu drugim wymagany jest specjalnie zaprojektowany odtwarzacz i zmiana kanału także wiąże się z ponownym oczekiwaniem i buforowaniem, a dodatkowo użytkownik nie ma wpływu na swoją sesję. W podejściu trzecim użytkownik, podobnie jak w podejściu drugim, pozbawiony jest bezpośredniego wpływu na wybór kanału, ale zmiana jakości nie wiąże się z ponownym buforowaniem i nie jest wymagany specjalny odtwarzacz.
Łatwa obsługa
Dzięki intuicyjnemu interfejsowi użytkownika i wykorzystaniu zarejestrowanych w systemie urządzeń do pobierania obrazu i dźwięku realizacja emisji internetowej jest bardzo łatwa. Po uruchomieniu aplikacji wystarczy wybrać wejściowe urządzenia video i audio oraz zdefiniować własny profil kodowania. Po wystartowaniu sesji kodowania można oglądać przekaz w odtwarzaczu osadzonym na stronie internetowej.
ATM LiveEncoder został napisany dla systemu operacyjnego MS Windows. Interfejs użytkownika bazuje na klasycznych komponentach z biblioteki comctl32.dll. Dołożono wszelkich starań, by mimo ograniczeń komponentów interfejs był intuicyjny i łatwy w użyciu. Mimo implementacji pierwszej wersji dla MS Windows architektura aplikacji jest w dużej mierze niezależna od platformy systemowej, dzięki czemu może zostać łatwo przeniesiona na inne systemy operacyjne takie jak MacOS X i GNU/Linux. Elementy zależne od platformy to interfejs użytkownika i podsystem pobierania danych z urządzeń wejściowych video i audio.
Dodatkową cechą aplikacji jest możliwość propagacji zdarzeń w generowanych strumieniach video lub audio. Zdarzenia generowane są po naciśnięciu odpowiednich przycisków w aplikacji i wysyłane z czasem kodowania do odtwarzacza. Dzięki temu za pomocą zdarzeń można sterować innymi komponentami osadzonymi na stronie internetowej. Przykładowo można wykorzystać tę funkcjonalność do realizacji szkoleń internetowych polegających na prezentacji wykładowcy za pomocą kamery i zsynchronizowanego z wykładem pokazu slajdów.
Solidne podstawy
ATM LiveEncoder powstał w wyniku prac doświadczonego zespołu inżynierów. Napisany został od podstaw w języku C++ z wykorzystaniem biblioteki x264, która mimo tego, że jest dystrybuowana jako oprogramowanie open-source, uważana jest za jeden z najbardziej efektywnych koderów H.264 w sensie uzyskiwanej jakości w stosunku do przepływności strumienia. Biblioteka x264 wykorzystuje także nieobowiązkowe i eksperymentalne rozszerzenia standardu.
Różnice w efektywności koderów wynikają głównie ze sposobu opisu działania mechanizmów kodowania w specyfikacji. Specyfikacja standardu kodowania ISO 14496-10 (H.264 AVC) definiuje sposób działania referencyjnego dekodera i z tego powodu istnieje olbrzymia przestrzeń rozwiązań dla implementacji kodera oraz stosowanych algorytmów analizy sekwencji obrazów takich jak algorytmy segmentacji, podziału na makrobloki, wyboru ramek referencyjnych, sposobu kwantyzacji itp.
Ze względu na złożoność obliczeniową wymienionych algorytmów do niedawna kodowanie obrazu nadawanego w czasie rzeczywistym było realizowane wyłącznie za pomocą dedykowanych urządzeń opartych o procesory sygnałowe lub logiczne układy programowalne implementujące wybrane mechanizmy kodowania w sposób kombinacyjny. Wraz z rozwojem mikroarchitektury procesorów o modelu programowym IA32 i upowszechnieniem się układów wielordzeniowych, efektywne kodowanie za pomocą H.264 sygnałów video nadawanych na żywo stało się możliwe na zwykłym komputerze PC. Przesłanka ta stanowiła jedno z podstawowych założeń dla realizacji ATM LiveEncoder.
