Transmisja z HotZlotu 2012 od kuchni
Chciałem dzisiaj podzielić się z Wami kilkoma spostrzeżeniami na temat transmisji, jaką udało nam się przeprowadzić w trakcie tegorocznego HotZlotu w malowniczo położonym Zamku na Skale w Trzebieszowicach koło Lądka Zdroju. Wiele osób na miejscu widząc mnie biegającego z notebookiem i kamerami pytała, jak to działa. W jaki sposób wideo jest przechwytywane, w jaki sposób obrabiane i wreszcie wypychane do Internetu? Zwłaszcza kwestia wysyłania streamu wywoływała największe zdziwienie, bo jaki był internet w Zamku, wszyscy wiemy – dość kiepski, szczególnie przy udziale 160 geeków ;)
Najważniejszy element układanki: łączność
Na miejsce przyjechaliśmy kilka dni wcześniej, co pozwoliło nam przeprowadzić kilka testów. Wcześniej nawiązaliśmy współpracę z Cyfrowym Polsatem, właściwie jedynym podmiotem na polskim rynku, który oferuje mobilny dostęp do Internetu w technologii LTE. Obliczyliśmy bowiem, że do wysyłki strumienia wideo potrzebujemy przynajmniej 1 Mbit/s stale dostępnego, stabilnego pasma. Tradycyjna sieć komórkowa, jaka była do dyspozycji w Zamku niestety była zdecydowanie niewystarczająca. I tak jednak byliśmy z niej zadowoleni, bo dwa lata wcześniej podczas pierwszego HotZlotu w Lądku Zdrój mieliśmy problem, by w ogóle do kogoś się dodzwonić ;)
Pytanie pozostało więc tylko jedno – czy LTE będzie działać w Zamku? Wyposażeni w najmocniejszą dostępną w ofercie Cyfrowego Polsatu antenę zewnętrzną ruszyliśmy do testów :) Co ciekawe, okazało się, że zasięg LTE mimo białej plamy na oficjalnej mapie w Zamku był. Niestety wewnątrz pomieszczeń pozostawiał wiele do życzenia… Nawet wystawienie anteny za okno np. w sali konferencyjnej nie przynosiło pożądanych rezultatów. O ile prędkość pobierania dochodziła nawet w okolice 20 Mbit/s (a średnio oscylowała przynajmniej wokół 10 Mbit/s), to jednak krytyczna dla nas prędkość wysyłania nie przekraczała… 200 Kbit/s. Poza tym łączność czasami się zrywała. Musieliśmy szukać dalej.
Zamek na Skale to na szczęście nie tylko sam zamek, to także niezależny budynek położony kilkadziesiąt metrów dalej, tuż przy wjeździe na teren całego kompleksu – oficyna z dodatkowymi pokojami gościnnymi. Jest to o tyle istotne, że budynek ten, choć niższy niż zamek, był usytuowany w bardziej sprzyjającym otoczeniu (brak wysokich drzew) i, co okazało się tu chyba najważniejsze, od strony najbliższego nadajnika LTE w Lądku (zamek znajduje się w Trzebieszowicach). Efekt po prostu nas powalił ;) Umieszczając antenę zewnętrzną tuż pod samym dachem budynku, na wysokości może 6‑7 metrów nad ziemią, uzyskaliśmy niecałe 60 Mbit/s przy pobieraniu i ponad 3 Mbit/s przy wysyłaniu. Całkiem nieźle jak na „brak zasięgu” :)
Pozostała jeszcze drobna kwestia techniczna – jak ten bezprzewodowy Internet z oficyny przenieść do zamku. Na szczęście oba budynki są połączone siecią kablową, więc szybko zestawiliśmy VLAN i stworzyliśmy sieć „transmisyjną”. Dzięki temu z każdego miejsca w zamku, nawet przez zamkową sieć Wi‑Fi, mogliśmy podłączyć się do naszego routera z Cyfrowym Polsatem, a jednocześnie Wy nie mogliście tego zrobić i świadomie bądź nie popsuć nam plany ;) Po drodze jednak ujawnił się problem, którego nie przewidzieliśmy – skrętka łącząca obie lokalizacje była tak długa, prawdopodobnie około 100‑metrowa, że parametry sieci były bardzo kiepskie. W zamku pobieraliśmy już tylko z prędkością 2‑3 Mbit/s, podobnie z wysyłaniem. To musiało nam wystarczyć, i tak było to więcej, niż pierwotnie zakładaliśmy.
Jak nagrywać, jak przetwarzać?
Internet to oczywiście nie wszystko. Muszę jednak zdradzić, że od początku dość sceptycznie podchodziliśmy do tematu transmisji – stąd nie komunikowaliśmy jej wcześniej, aby nie zapeszyć. Obawialiśmy się, że połączenie internetowe nie będzie pozwalało na jej przeprowadzenie. Gdy zobaczyliśmy, że jednak to się może udać, zaczęliśmy naprędce kompletować sprzęt będąc już na miejscu. Tymczasem podłączenie do desktopa (nie mówiąc o notebooku) profesjonalnych, dużych kamer, na przykład takich jakimi nagrywaliśmy sesje, jest nie lada wyczynem. Potrzebne są tu specjalne karty rozszerzeń oraz kable.
Ostatecznie transmisję zorganizowaliśmy w oparciu o dwie kamery USB nagrywające obraz w 720p – jak na możliwości naszego połączenia internetowego, były w sam raz. Streamingu HD zdecydowaliśmy się jednak nie udostępniać, aby nie kusić losu ;) Stacją enkodującą z kolei był notebook z procesorem Intel Core i5 i 4 GB pamięci RAM. Okazało się, że to wystarczyło w zupełności do produkcji jednego streamu. Jedynym problemem, na szczęście niegroźnym, okazała się przepustowość magistrali USB, która została wystawiona na ciężką próbę przy dwóch kamerach przesyłających obraz w HD. Skończyło się jednak tylko na systemowych ostrzeżeniach, nic się nigdy nie przycięło. Plusem takiego może trochę prowizorycznego studia była także jego mobilność – wystarczył stolik i mogliśmy organizować transmisję z dowolnego miejsca, gdzie mieliśmy dostęp do sieci. Niestety zamkowe Wi‑Fi się do tego nie nadawało – było zbyt przeciążone, musieliśmy dysponować kablem. Nie przeszkodziło nam to jednak w rozpoczęciu streamingu od rejestracji, która odbywała się na zewnątrz, przed zamkiem.
Expression Encoder i IIS Media Services w akcji
Jeśli ktoś śledził nasze publikacje albo był na przynajmniej jednym z HotZlotów, na pewno wie, że nasza infrastruktura obsługująca portal dobreprogramy i wszystkie towarzyszące mu usługi działa w oparciu o rozwiązania Windows Server System. Jedynymi wyjątkami od tej reguły są linuksowe routery Vyatta, które pracują u nas na brzegach i w szkielecie sieci – tak naprawdę jednak trudno tu mówić o wyjątku, Microsoft generalnie nie produkuje routerów, więc dużego wyboru nie było ;) Rozwiązania te są tak naprawdę mocno niezależne.
Skoro wszystko działa na Windows, nie inaczej musiało być w przypadku transmisji. W tym czujemy się najlepiej, w tym mamy już spore doświadczenie, mieliśmy więc przekonanie, że właśnie wykorzystując IIS Media Services uda nam się całą operację przeprowadzić szybko, sprawnie i, co najważniejsze, bezboleśnie. Do pracy po stronie zamku zatrudniliśmy Expression Encoder Pro, narzędzie Microsoftu, które przechwytuje obraz z podłączonych kamer, w miarę potrzeby poddaje go stosownej obróbce i wysyła albo bezpośrednio do oglądających transmisję klientów, albo do dalszych serwerów pośredniczących. Expression „złapał” kamerki USB bez najmniejszych problemów i całą transmisję zestawiliśmy dosłownie w ciągu kilku minut.
Po drodze eksperymentowaliśmy jeszcze trochę z optymalnymi dla naszego łącza ustawieniami bitrate’u. Domyślnie Encoder produkuje kilka wersji streamingu (np. SD, HD, „lepsze” HD itp.), ale w naszym przypadku było to raczej bezcelowe, a poza tym przy tylu wariantach nasza superstacja transmisyjna w postaci wspominanego notebooka zaczęła się trochę przycinać ;) Przy jednym streamie nie było najmniejszych problemów.
Oczywiście nie mogliśmy polegać tylko na Encoderze do obsługi całej transmisji – przecież gdybyście wszyscy podłączyli się bezpośrednio do źródła w zamku, to z dwóch megabitów niewiele by zostało... Skorzystaliśmy naturalnie z naszej infrastruktury zlokalizowanej w Warszawie, aby tam odebrać od Encodera prywatny streaming wysyłany wąskim, bezprzewodowym łączem i upublicznić go już na bardzo szerokich wodach Internetu. Od tej strony za transmisję odpowiadały serwery webowe IIS z zainstalowanym rozszerzeniem IIS Media Services. Usługa odpowiedzialna konkretnie za transmisję nosi nazwę Live Smooth Streaming.
Tak naprawdę całość była jeszcze bardziej skomplikowana. Spodziewaliśmy się bowiem dużego zainteresowania, które później okazało się zresztą faktem - o czym za chwilę, i dodaliśmy jeszcze jeden poziom abstrakcji do całej tej operacji. Pierwszy serwer, nazwijmy go „pośredniczącym”, odbierał transmisję i wysyłał ją do kolejnych serwerów, już „dostarczających” streaming do użytkowników końcowych. Dzięki temu mogliśmy rozłożyć obciążenie wynikające z serwowania transmisji równomiernie na kilka serwerów. Teoretycznie taka konfiguracja daje także korzyści w postaci redundancji, ale gdy mamy jedno źródło transmisji, na dodatek na łączu bezprzewodowym, trudno mówić o jakiejkolwiek redundancji. Wszystko to i tak było tylko eksperymentem, który jednak udał się w 100% :)
Ale jak to obejrzeć?
Dobre pytanie :) Ten element budził chyba najwięcej kontrowersji. W związku z tym, że korzystaliśmy z rozwiązań Microsoftu, rozwiązaniem najprostszym – i jedynym możliwym do zastosowania w warunkach HotZlotu – było osadzenie na stronie kontrolki Silverlight, która umożliwiała odtworzenie streamingu. Wielu z Was zarzucało nam, że to mocno ograniczające rozwiązanie – najgłośniej odzywali się użytkownicy Linuksa ;) Tak naprawdę jednak nie jestem do końca przekonany, czy faktycznie było aż tak źle. Na Windows i Makach wystarczyło sobie zainstalować plugin, a jeśli ktoś oglądał wcześniej wideo na Onecie czy TVN Player (czy szeregu innych witryn na świecie), to jest spora szansa, że owy plugin już posiadał. Na Linuksie z kolei niby nie ma oficjalnego pluginu, ale użytkownicy Linuksa znani są raczej z ponadprzeciętnej wiedzy na tematy związane z IT ;) Stąd komentarze w newsie o transmisji płynące także z tego systemu, że udało się streaming odpalić.
Nie każdy wie też, że naszą transmisję bez problemu można było oglądać na urządzeniach przenośnych Apple. Silverlighta tam co prawda nie ma, ale było to możliwe dzięki obsłudze iOS, jaką oferuje IIS Media Services. Udostępnienie streamingu dla urządzeń Apple nic nie kosztuje i jest banalnie proste, wystarczy włączyć jedną opcję w ustawieniach serwera, naturalnie pamiętając o tym, by źródłowy streaming był dostępny w formacie (i bitracie) obsługiwanym przez Apple, czyli H.264. Alternatywnie można w Expression Encoderze przygotować i wypychać oddzielną wersję streamingu specjalnie dla urządzeń Apple – potrzebna jest do tego jednak dodatkowa moc obliczeniowa, tak jak na każdy kolejny wariant transmisji. My robiliśmy wszystko za jednym zamachem.
Realizując podobne działania w przyszłości, a mamy już na to chrapkę, tyle że ze znacznie większym rozmachem, na pewno będziemy starać się zachować maksymalną neutralność pod względem platformy wymaganej po stronie użytkownika końcowego :) Zanim to jednak nastąpi, dziękujemy Cyfrowemu Polsatowi za udostępnienie na czas HotZlotu potrzebnego sprzętu i nielimitowanego konta, na którym aktywowana była nasza transmisyjna karta SIM. Łącze to nie nawaliło ani razu, przez cały czas mieliśmy do dyspozycji stabilne 2‑3 Mbit/s, które umożliwiły pomyślne przeprowadzenie transmisji. Myślę, że cała operacja zakończyła się sporym sukcesem ;) Dość wspomnieć, że łącznie pierwszego i drugiego dnia nasz streaming z HotZlotu oglądało kilkanaście tysięcy osób.
Jeśli macie jakieś bardziej szczegółowe pytania, chętnie odpowiem w komentarzach :)