Download: SysadminDarwin
Transkrypt
Download: SysadminDarwin
Serwer transmisji strumieniowych Darwin SYSADMIN Transmisja strumieniowa z serwera Darwin U ŹRÓDEŁ STRUMIENIA Serwer transmisji strumieniowej Darwin firmy Apple jest darmową wersją komercyjnego serwera Quicktime. Darwin obsługuje nowoczesne formaty MP3 i MPEG-4 oraz posiada fronton internetowy. W tym artykule pokazujemy, jak przygotować to oprogramowanie do pracy. OLIVER FROMMEL S trumieniowa transmisja wideo jest wciąż mało popularną aplikacją wśród użytkowników Linuksa. Serwery dostępne publicznie często obsługują tylko własne, nietypowe formaty, natomiast produkty komercyjne są zaporowo drogie. Na przykład serwer Real działa bardzo dobrze, ale kosztuje kilka tysięcy dolarów. Natomiast serwer Basic jest za darmo, ale obsługuje najwyżej pięciu klientów, a po roku działania automatycznie wyłącza się [1]. Z lepszych wiadomości: Apple udostępnił ważne komponenty serwera Quicktime na własnej licencji Open Source, Apple Public Source License [2]. Serwer transmisji strumieniowej Darwin (Darwin Streaming Server DSS) obsługuje popularne formaty audio Quicktime i MP3 oraz format wideo MPEG-4. Darmowy serwer strumieni MP3 i MPEG-4 Żeby pobrać oprogramowanie, musimy najpierw zarejestrować się na stronie Ap- ple [3]. Następnie przechodzimy na stronę serwera DSS [4] i w części Source Code klikamy pozycję Streaming Server 5.0.1. Ewentualnie można zainstalować pakiet dla dystrybucji Red Hat 9.0, który działa także w Debianie, Suse 9.1 i Fedorze Core 3. Opis budowania oprogramowania z kodu źródłowego przedstawiono w Ramce „Zrób to sam”. Sam program działa jak należy na wielu dystrybucjach; nie można tego jednak powiedzieć o skrypcie instalacyjnym. Na przykład, w niektórych systemach może brakować odpowiedniej grupy, w związku z czym może zajść konieczność ręcznego zdefiniowania jej w systemie poleceniem groupadd qtss. Plik konfiguracyjny dołączony do kodu źródłowego też nie jest zbyt użyteczny. Zamiast niego należy użyć pliku konfiguracyjnego z pakietu binarnego – opracowano w nim lepsze ustawienia. Po przygotowaniu pliku konfiguracyjnego oraz kont użytkownika i grupy administrator uruchamia serwer poleceniem /usr/local/sbin/DarwinStreamingServer. WWW.LINUX-MAGAZINE.PL Opcja -d powoduje, że serwer startuje w tle. Kombinacja klawiszy [Ctrl-C] przerywa działanie programu. Skrypt /usr/local/sbin/streamingadminserver.pl uruchamia interfejs internetowy serwera. Konfiguracja za pomocą przeglądarki Jeśli widzimy komunikat Launching Streaming Server..., możemy spróbować użyć frontonu internetowego. W tym celu w przeglądarce wpisujemy adres http://adres_serwera: 1220/. Jeśli serwer i przeglądarka znajdują się na tym samym komputerze, zamiast pełnego adresu serwera wystarczy wpisać słowo localhost; w przeciwnym razie musimy podać nazwę i adres IP odpowiedniego komputera. Ewentualnie program DarwinStreamingServer można uruchomić bez frontonu internetowego, ręcznie dostosować plik konfiguracyjny do wymagań i wymusić ponowne odczytanie ustawień poleceniem killall -HUP DarwinStreamingServer. NUMER 15 KWIECIEŃ 2005 65 SYSADMIN Serwer transmisji strumieniowych Darwin Rysunek 1: Główne okno interfejsu internetowego ze statystykami aktywnego serwera. Logujemy się do frontonu internetowego, podając nazwę i hasło określone podczas instalacji. Na kolejnej stronie Darwin prosi o podanie hasła dostępu do strumieni MP3 rozsyłanych przez serwer. Następnie program pyta, czy dla połączenia ma być stosowane szyfrowanie SSL. Żeby takie szyfrowanie działało, Darwin wymaga dodatkowych elementów: biblioteki OpenSSL, modułu Perla Net:: SSLeay oraz, przede wszystkim, poprawnego certyfikatu SSL. Bezpieczny fronton internetowy nasłuchuje na porcie 1240. Oczywiście, jeśli z Darwina korzystamy w domu lub w zaufanym środowisku sieciowym, możemy się obejść bez SSL. Następnie określamy ścieżkę do plików wideo (domyślnie /usr/local/movies – w tym miejscu skrypt umieścił przykładowe pliki). Wreszcie, Darwin udostępnia opcję transmisji przez port 80, która może pomóc obejść zapory sieciowe. Za pomocą interfejsu internetowego wszystkie te opcje można także zmienić w późniejszym czasie. Po wprowadzeniu ustawień powinniśmy zobaczyć okno główne frontonu internetowego (Rysunek 1). Jak wcześniej wspomniano, przykładowe pliki wideo są podczas instalacji umieszczane w katalogu /usr/local/movies. Aby je odtworzyć w systemie Linux, potrzebujemy programu obsługującego format MPEG-4 i protokół transmisji strumieniowej RTSP. Jeśli zamierzamy korzystać z programu MPlayer [5], musimy go skompilować z obsługą biblioteki LIVE [6]. Większość odtwarzaczy, takich jak klient VideoLAN vlc [7], do odtwarzania plików MPEG-4 wymaga biblioteki Ffmpeg [8]. Darwin umożliwia tworzenie list odtwarzania znajdziemy w prawym górnym rogu interfejsu. Zrób to sam: MPEG-4 Kodowanie własnych plików MPEG-4 jest sztuką samą w sobie. Nie wystarczy mieć materiał wideo na dysku twardym; żeby Żeby zbudować serwer Darwin z kodu źródłowego, najpierw rozpakowujemy plik zip poleceniem unzip DarwinStreamingSrc5.0.1.1. zip. Następnie przechodzimy do nowo utworzonego katalogu DarwinStreamingSrc5.0.1.1 i tam wpisujemy polecenie ./Buildit. Skrypt ./Install przenosi pliki do odpowiednich lokalizacji: /usr/local/bin i /usr/local/sbin (programy) oraz etc/streaming (pliki konfiguracyjne). Skrypt instalacyjny prosi także o wprowadzenie nazwy i hasła administratora serwera Darwin. W skrypcie tym jest jednak błąd: Buildit nie wstawia plików tam, gdzie spodziewa się ich Install: copying qtpasswd to /usr/local/bin/qtpasswd cp: cannot stat `qtpasswd': No such file or directory Właściwą lokalizację odczytujemy z komunikatów zwracanych przez skrypt i ręcznie kopiujemy pliki. Jeśli nie możemy zlokalizować plików, używamy narzędzia find: # find -name „qtpasswd” ./qtpasswd. tproj/qtpasswd Kopiujemy ten plik w miejsce oczekiwane przez skrypt instalacyjny: cp./qtpasswd. tproj/qtpasswd /usr/local/bin. Czynność powtarzamy dla wszystkich wymaganych plików. NUMER 15 KWIECIEŃ 2005 Rysunek 2: Serwer transmisji strumieniowej filmów i „empetrójek” – odpowiednie łącza Zrób to sam 66 uzyskać format MPEG-4, musimy wykonać jeszcze kilka czynności: ■ Z oryginalnego pliku wyodrębniamy dane audio i zapisujemy je w oddzielnym pliku (np. poleceniem ffmpeg -vn). ■ Poleceniem faac kodujemy ścieżkę audio do formatu AAC. ■ Programem ffmpeg konwertujemy wideo do formatu MPEG-4. ■ Pliki audio i wideo łączymy w jeden strumień MPEG-4 poleceniem mp4creator z pakietu MPEG4IP [9]. Technicznie takie łączenie określa się mianem multipleksingu. Opcja -hint powoduje dodanie do pliku tzw. wskazówek, czyli znaczników, których serwer używa do przewijania w przód lub w tył. Pakiet MPEG4IP zawiera też odtwarzacze MPEG-4 z interfejsem graficznym i bez niego. Program mp4info wyświetla następujące informacje o jednym z przykła- WWW.LINUX-MAGAZINE.PL dowych plików MPEG-4: najpierw widzimy ścieżkę audio w formacie AAC, potem ścieżkę wideo, a na końcu wspomniane wskazówki. Po ścieżkach przedstawiane są dane scen i deskryptory obiektów, których opis możemy na tym etapie pominąć. Listy odtwarzania MP3 Serwer Darwin potrafi także strumieniować pliki MP3, ale do tego wymaga listy odtwarzania. Aby utworzyć listę odtwarzania, klikamy pozycję Playlists po lewej stronie frontonu internetowego. W prawym górnym rogu, obok większego pola, znajdziemy dwa łącza: New MP3 Playlist (nowa lista odtwarzania MP3) New Movie Playlist (nowa lista odtwarzania sekwencji wideo – Rysunek 2). Kliknięcie łącza New MP3 Playlist powoduje otworzenie strony pokazanej na Rysunku 3. Pola tekstowe w górnej jej części służą do określenia nazwy listy odtwarzania oraz miejsca montowania, tzn. tej Serwer transmisji strumieniowych Darwin SYSADMIN Tabela 1: Ważne pliki i ścieżki Nazwa Funkcja /usr/local/sbin/DarwinStreamingServer Główny program /usr/local/sbin/streamingadminserver. pl Skrypt w Perlu obsługujący fronton internetowy /etc/streaming/ Katalog z informacjami konfiguracyjnymi /etc/streaming/streamingserver. xml Plik konfiguracyjny serwera /var/streaming/logs Katalog z dziennikiem zdarzeń części adresu URL, według której odtwarzacz będzie lokalizował listę. Nie zaszkodzi także wybrać odpowiedni gatunek muzyki w ramce pod tymi polami. W prawej górnej części okna można określić tryb odtwarzania listy: Sequential (kolejno), Sequential Looped (kolejno z zapętleniem) lub Weighted Random (kolejność losowa ważona). Żeby Darwin odtwarzał ścieżki w rzeczywiście przypadkowej kolejności, w polu tekstowym Repetition wprowadzamy wartość 0. W przeciwnym razie przed powtórzeniem ścieżki serwer odtworzy każdą z nich przynajmniej raz. W polu po lewej stronie widzimy listę dostępnych ścieżek audio, a po prawej stronie – bieżącą listę odtwarzania. Programiści Apple użyli tutaj sprytnego triku w JavaScript, dzięki któremu ścieżki można po prostu przeciągać między polami myszą. Dwukrotnym kliknięciem przechodzimy do podkatalogu; można także kliknąć łącze Open Folder pod polem tekstowym. Interfejs umożliwia także określenie wagi wskazanej ścieżki w trybie odtwarzania losowego. Im większą liczbę wprowadzimy, tym częściej Darwin będzie odtwarzał dany plik. Po skonfigurowaniu listy odtwarzania klikamy przycisk Save Changes na dole okna. Na następnej stronie widzimy zestawienie zdefiniowanych list odtwarzania. Listy te nie są jeszcze aktywne. Kliknięcie ikony statusu listy powoduje jej uaktywnienie. Teraz możemy już pobrać strumień za pomocą odtwarzacza MP3, wpisując w nim adres http://serwer: 8000/punkt_montowania. Dzienniki zdarzeń Darwina są przechowywane w podkatalogach o nazwach list odtwarzania, poniżej katalogu /var/streaming/playlists. Plik z rozszerzeniem .err zawiera informacje o błędach, z rozszerzeniem .config – informacje związane z konfiguracją, .log – rejestr zdarzeń, zaś .playlist – samą listę odtwarzania. Domyślnie Darwin korzysta tylko z centralnego katalogu /usr/local/movies zawierającego pliki wideo i audio. Polecenie cre- ateuserstreamingdir jim spowodowałoby utworzenie drzewa katalogów Sites/Streaming w katalogu domowym użytkownika jim. Tam użytkownik Jim może przechowywać pliki multimedialne, a inni będą mieli do nich dostęp przez wpisanie w odtwarzaczu rtsp://Servername/user/filmik. mp4. np. Rysunek 3: Łatwy w użyciu interfejs obsługi list odtwarzania – ścieżki można przeciągać i upuszczać myszą. Problematyczne rozwiązywanie problemów Złożoność architektury opisywanego rozwiązania powoduje, że trudno jest zlokalizować przyczynę ewentualnych problemów. Odtwarzacze multimedialne słyną z małej jasności komunikatów o błędach, dlatego często trudno dojść, czy program nie może znaleźć pliku na serwerze, czy też po prostu brakuje mu kodeka. Analiza informacji po stronie serwera wnosi niewiele. Darwin co prawda zapisuje zdarzenia w dziennikach, ale zazwyczaj są to bezużyteczne informacje. Na przykład, w programie /var/streaming/logs/Error.log w ogóle nie pojawiły się informacje o błędach, nie mówiąc już o sposobach ich naprawiania. Równie mało przydatne dane zawiera część Error Log interfejsu inter- Listing 1: Wynik działania programu mp4info $ mp4info sample_100kbit. mp4 mp4info version 1.1 sample_100kbit. mp4: Track Type Info 1 audio MPEG-4 AAC LC, 70.031 secs,U 28 kbps, 22050 Hz 2 video MPEG-4 Simple @ L3, 70.000U secs, 63 kbps, 192x240 @ 15.00 fps 3 hint Payload MP4V-ES for track 2 4 hint Payload mpeg4- generic forU track 1 5 scene BIFS 6 od Object Descriptors WWW.LINUX-MAGAZINE.PL netowego. Jedynie w dziennikach zdarzeń powiązanych z listami odtwarzania można znaleźć wskazówki naprowadzające na źródło problemu. Potencjał techniczny serwera transmisji strumieniowych Darwin jest bardzo duży. Już teraz można „postawić” bezpłatny i stabilny serwer strumieni multimedialnych, wspomagając się przy tym takimi publicznie dostępnymi narzędziami jak FFMpeg i MPEG4IP. Niestety, z oprogramowania na razie nie korzysta się zbyt łatwo, nawet mimo rozsądnie zaprojektowanego interfejsu internetowego. Co prawda problemy z instalacją i diagnozowaniem błędów nie są trudne do rozwiązania, ale najwyraźniej użytkownicy Linuksa są jeszcze daleko poza centrum zainteresowania firmy Apple. ■ INFO [1] Serwer Helix Basic: http://forms.real.com /rnforms/products/servers/eval/mbps.html [2] Licencja Apple Public Source License: http://www.opensource.apple.com/apsl [3] Rejestracja:https://signin.apple.com [4] Serwer transmisji strumieniowej Darwin: http://developer.apple.com/darwin/projects /streaming/ [5] MPlayer: http://www.mplayerhq.hu [6] Biblioteka LIVE do obsługi protokołu RTSP: http://www.live.com/liveMedia [7] VideoLAN: http://videolan.org/vlc/ [8] FFMpeg: http://ffmpeg.sourceforge.net [9] MPEG4IP: http://mpeg4ip.sourceforge.net NUMER 15 KWIECIEŃ 2005 67