Szybkie uruchomienie AirTime i IceCast

    Przygotowaliśmy dla Was poradnik jak szybko i w prosty sposób uruchomić AirTime nadający na serwer IceCast. Konfiguracja, którą przedstawiamy nie wymaga posiadania karty dźwiękowej czy miksera.

    Jednym z najprostszych sposobów, aby nadawać na żywo jest strumienie bezpośrednio do serwera Icecast bez konieczności karty dźwiękowej lub miksera w łańcuchu transmisji.

    Program dla systemów z rodziny Windows to po prostu pakiet binarny z nakładką graficzną w jednym pliku wykonywalnym. Większość funkcji serwera Icecast2 jest dostępna w wersji dla systemów Win32.

    Zakładka Server Status

    Można wyróżnić dwa rodzaje statystyk: statystyki globalne i statystyki pojedynczego strumienia. Globalne statystyki serwera odnoszą się do wszystkich strumieni; statystyki pojedynczego źródła – tylko do jednego.

    Przykłady globalnych statystyk:

    • Liczba podłączonych źródeł
    • Liczba prób połączeń źródeł z serwerem
    • Całkowita ilość prób nawiązania połączenia z serwerem

    Zakładka Server Status domyślnie wyświetla globalne statystyki serwera. Dodatkowo można zdefiniować wyświetlanie innych parametrów. W zamierzeniu ma to ułatwić kontrolę działania serwera. Dodatkowe informacje jak dodać parametr wyświetlany pod tą zakładką, znajdują się kilka akapitów niżej.

    Dodawanie parametrów do okna tytułu

    Dowolny parametr zwracany w statystykach może być wyświetlany w pasku tytułu okna serwera. Może to być kolejne ułatwienie kontroli działania serwera. Aby uaktywnić ten parametr, należy kliknąć *kontekstowym* klawiszem myszy i wybrać odpowiednią pozycję:

    icecast_win32_windowtitle.jpg

    Usuwanie dodatkowych parametrów z zakładki Server Status

    Aby usunąć dodatkowy parametr dodany do wyświetlania pod zakładką Server Status, nalezy kliknąć żądaną pozycję *kontekstowym* klawiszem myszy i wybrać Delete from Global Stats. Informacja zostanie usunięta ze spisu statystyk globalnych, ale będzie nadal dostępna pod drugą zakładką.

    Edycja pliku konfiguracyjnego

    Zmian w pliku konfiguracyjnym serwera można dokonać tylko, gdy serwer jest zatrzymany. W celu jego edycji należy wybrać pozycję Edit Configuration z menu Configuration.

    Dodatkowe statystyki

    Pod zakładką są wyświetlane wszystkie podłączone źródła i związane z nimi statystyki. Każdy aktywny mountpoint jest wyświetlany w lewym panelu okna, natomiast wszystkie statystyki dotyczące zaznaczonego strumienia – po prawej.

    icecast_win32_main.jpg

    Wprowadzenie

    Katalog publiczny (ang. YP, Yellow Pages) to lista strumieni dostępna w jednym miejscu. W ramach projektu Icecast został uruchomiony serwer katalogujący, znajdujący się pod adresem http://dir.xiph.org. Obecnie strumienie serwerów Icecast mogą być umieszczone tylko w zgodnych katalogach. Nie ma możliwości umieszczenia strumieni serwera Icecast w katalogu SHOUTcast.

    Domyślnie w pliku konfiguracyjnym wyszczególnione są oficjalnie dostępne serwery katalogowe Icecast. Umieszczenie strumienia w takim katalogu sprowadza się do zdefiniowania odpowiednich parametrów w konfiguracji serwera i klienta nadawczego.

    Konfigurowanie serwera do obsługi katalogów

    Przede wszystkim, serwer Icecast musi zostać skompilowany z odpowiednią biblioteką. Jeśli w systemie jest zainstalowana biblioteka libcurl, obsługa katalogów jest włączona. Jeśli biblioteka nie została wykryta w trakcie kompilacji, obsługa katalogów publicznych będzie nieaktywna.

    Jeśli Icecast został skomplilowany z obsługą katalogów, poniższe parametry powinny być wykorzystywane do ich obsługi:

    <directory>
    <yp-url-timeout>15</yp-url-timeout>
    <yp-url>http://dir.xiph.org/cgi-bin/yp-cgi</yp-url>
    </directory>

    Można zdefiniować więcej niż jedną sekcję <directory />, dzięki czemu można włączyć obsługę więcej niż jednego katalogu.

    Konfiguracja oprogramowania nadawczego

    Zazwyczaj jest to opisane w dokumentacji programu. Klient źródłowy musi dostarczyć nagłówek HTTP ice-public:1 w trakcie przyłączenia, aby strumień był publiczny.

    Jeśli strumień jest uwzględniony w katalogu, dostępne będą dodatkowe statystyki, takie jak last-touch (zapytanie serwera katalogującego o obecność serwera Icecast w sieci), currently-playing, etc.

    Jest to funkcja umożliwiająca ochronę danego strumienia, która wymaga od użytkownika przejścia specjalnej procedury. Przy pomocy tego mechanizmu można tworzyć usługi płatnego odsłuchu lub zdefiniować pewne kryteria dotyczące filtrowania użytkowników. Ten rozdział opisuje podstawy konfiguracji i wykorzystania funkcjonalności uwierzytelniania.

    Aby zdefiniować uwierzytelnianie dla danego strumienia, w sekcji <mount> należy zdefiniować szereg dodatkowych parametrów. Oznacza to, że autentyfikację można stosować dla dowolnego strumienia, którego źródłem jest program nadawczy lub inny strumień dostarczony z odrębnego serwera.

    W procesie uwierzytelniania mogą zostać wykorzystane następujące metody:

    • HTPASSWD – plik tekstowy z nazwami użytkowników i hasłami
    • URL – zapytanie do skryptu (np. PHP)

    Uwierzytelnianie dla określonego w konfiguracji strumienia może zostać zastosowane zarówno do standardowego strumienia nadawanego prosto ze źródła, strumienia pochodzącego z innego serwera jak też do statycznego pliku zdefiniowanego jako mountpoint. Ustawienia mają również zastosowanie do plików wprowadzających (intro file) i strumieni zapasowych.

    Uwierzytelnianie metodą HTPASSWD

    W celu uaktywnienia, należy zdefiniować potrzebne parametry. Należy więc dopisać nową sekcję <mount> w pliku konfiguracyjnym. Poniżej przykład:

    <mount>
    <mount-name>/example.ogg</mount-name>
    <authentication type="htpasswd">
    <option name="filename" value="myauth"/>
    <option name="allow_duplicate_users" value="0"/>
    </authentication>
    </mount>

    Aby włączyć uwierzytelnianie, należy zdefiniować przynajmniej dwa parametry: <mount-name> i <authentication>. Parametr mount-name definiuje nazwę strumienia używaną przez klienta źródłowego. Każda metoda autentyfikacji posiada pewną liczbę wymaganych parametrów. W metodzie HTTPASSWD należy zdefiniować dodatkową opcję filename, precyzującą nazwę pliku w którym mają być przechowywane nazwy użytkowników i hasła. Plik nie musi istnieć (i prawdopodobnie nie będzie, jeśli miałby być użyty po raz pierwszy) – w razie potrzeby zostanie utworzony. Icecast posiada zaimplementowaną obsługę zarządzania danymi użytkowników poprzez sieciowy interfejs administracyjny. Jeśli dla drugiej opcji, allow_duplicate_users, zostanie zdefiniowana wartość 0, serwer będzie odrzucać połączenie, jeśli odbiorca poda dane, których użył inny odbiorca. Ustawiając wartość 1, umożliwimy wielokrotne (jednoczesne) podłączanie do danego strumienia przy pomocy jednej nazwy użytkownika i hasła. Nie ma możliwości ustawienia maksymalnej liczby połączeń dla jednego użytkownika.

    Można zdefiniować uwierzytelnianie dla poszczególnych strumieni przy jednoczesnej rezygnacji z tego mechanizmu dla innych. Tylko strumienie wyszczególnione w pliku konfiguracyjnym mogą zostać przystosowane do obsługi autentyfikacji.

    Wprowadzanie danych użytkowników i haseł

    Po wprowadzeniu odpowiednich wpisów do pliku konfiguracyjnego należy przyłączyć klienta źródłowego przy użyciu odpowiedniej nazwy strumienia. W celu zdefiniowania użytkowników dla strumienia, należy użyć sieciowego interfejsu administracyjnego. Aby rozpocząć, należy wywołać zasób http://[adres]:[port]/admin/stats.xsl – jeśli wszystko zostało poprawnie skonfigurowane, powinna pojawić się strona podobna do tej:

    icecast_auth_main.jpg

    Każda sekcja skonfigurowana do uwierzytelniania zostanie oznaczona specjalnym symbolem (w starszych wersjach będzie to czerwony klucz, w najnowszej po prostu zmienia się kolor kłódki – przyp. tłum.). Należy zauważyć, iż powyższa strona wyświetli tylko podłączone źródła nie zdefiniowane jako ukryte.

    Aby dodać lub usunąć użytkownika, należy kliknąć link Manage Authentication. Pojawi się strona podobna do poniższej:

    icecast_auth_managing.jpg

    Strona wyświetla listę użytkowników, którzy są uprawnieni do odbioru danego strumienia. Aby dodać użytkownika, należy w odpowiednie pola wpisać nazwę użytkownika i hasło, następnie kliknąć link Add New User. Nazwy użytkowników nie mogą się powtarzać w obrębie tego samego strumienia, jednak nie ma ograniczeń przy stosowaniu haseł. Użytkownika można usunąć poprzez kliknięcie odpowiedniego linku Delete.(do różnych strumieni można przypisać ten sam plik z hasłami, można w ten sposób trzymać te dany w jednym miejscu; należy pamiętać, że w przypadku zdefiniowania wartości 0 dla parametru <allow_duplicate_users /> jeden odbiorca i tak będzie mógł podłączyć się do dwóch różnych strumieni, ale nie do tego samego – przyp. tłum.)

    Podsumowanie

    Po dodaniu uprawnionych odbiorców i poprawnym skonfigurowaniu serwera, w celu odsłuchu/odbioru danego strumienia należy się zalogować – na przykład poprzez przygotowany formularz (http://[adres]:[port]/auth.xsl).

    icecast_auth_prompt.jpg

    Po poprawnym zalogowaniu skrypt zwróci odpowiednio przygotowany plik playlisty – to powinno wystarczyć do prawidłowego otwarcia domyślnego odtwarzacza i rozpoczęcia odtwarzania.

    Uwierzytelnianie poprzez wywołanie adresu

    Ten sposób wymusza, aby serwer Icecast wysyłał określone zapytanie gdy użytkownik próbuje się podłączyć po czym sprawdza nagłówki z odpowiedzią. Jeśli odesłany zostanie odpowiedni nagłówek zwrotny, użytkownikowi zostaje przyznany dostęp do odbioru. Jeśli nagłówek się nie zgadza, zostaje zwrócony komunikat błędu.

    Zdefiniowane adresy powinny wywoływać pewne skrypty (np. PHP). Wszystko co skrypty muszą wykonać, to przyjęcie informacji w trybie POST i wysłanie nagłówków zwrotnych. Do obsługi tych zapytań użyta jest biblioteka libcurl, można więc używać szyfrowanych połączeń HTTPS.

    Zmienna zazwyczaj reprezentująca przeglądarkę (useragent) jest zamieniana w każdym zapytaniu curl na wersję serwera Icecast. Zawartość nagłówków zwrotnych powinna zależeć od tego, czy odbiorca ma być uprawiony do odbioru strumienia. W przypadku odrzucenia, nagłówek:

    icecast-auth-message: reason

    …powinien zostać umieszczony w pliku dziennika (log).

    Aby używać tego trybu uwierzytelniania, należy dopisać odpowiedni parametr w sekcji <mount />. Poniższy przykład przedstawia dostępne opcje:

    <mount>
    <mount-name>/example.ogg</mount-name>
    <authentication type="url">
    <option name="mount_add" value="http://myauthserver.com/stream_start.php"/>
    <option name="mount_remove" value="http://myauthserver.com/stream_end.php"/>
    <option name="listener_add" value="http://myauthserver.com/listener_joined.php"/>
    <option name="listener_remove" value="http://myauthserver.com/listener_left.php"/>
    <option name="username" value="user"/>
    <option name="password" value="pass"/>
    <option name="auth_header" value="icecast-auth-user: 1"/>
    <option name="timelimit_header" value="icecast-auth-timelimit:"/>
    </authentication>
    </mount>

    Parametry zostały bardziej szczegółowo opisane poniżej. Nie każdy musi być użyty – jeśli jednak zostanie zdefiniowany, każdy parametr przesyłany metodą POST będzie zaszyfrowany.


    mount_add

    To zapytanie informuje serwer uwierzytelniający, że transmisja poprzez określony strumień została rozpoczęta. Nie są przekazywane żadne informacje o użytkownikach, ale może to być użyte do zdefiniowania pewnych szczegółów, które serwer może przechowywać.

    Szczegóły zapytania POST:

    action=mount_add&mount=/live&server=myserver.com&port=8000

    Uwzględniana jest nazwa serwera (<hostname>) i mountpoint, przez który rozpoczęła się transmisja.


    mount_remove

    To zapytanie informuje serwer uwierzytelniający, że transmisja została zakończona. Tutaj również nie są przekazywane żadne dane nt. użytkowników.

    Szczegóły zapytania POST:

    action=mount_remove&mount=/live&server=myserver.com&port=8000

    Tak jak w poprzednim zapytaniu, przekazywane są informacje nt. nazwy (adresu) hosta i odpowiedniego strumienia.


    listener_add

    Zazwyczaj najczęściej używane zapytanie. Przy próbie podłączenia się odbiorcy, zanim cokolwiek zostanie odesłane, przetwarzane jest to zapytanie. Domyślną akcją jest odrzucanie użytkownika, dopóki skrypt nie odeśle nagłówka zwrotnego, zdefiniowanego parametrem header.

    Szczegóły zapytania POST:

    action=listener_add&server=myserver.com&port=8000&client=1&mount=/live&user=&pass=&ip=127.0.0.1&agent="My%20player"

    W tym zapytaniu przekazywanych jest więcej parametrów. client to unikalny identyfikator dla danego klienta; parametry user i pass mogą być puste, jednak jeśli użytkownik zastosował uwierzytelnianie HTTP to są definiowane poprzez ten mechanizm; ip to adres IP odbiorcy i agent to zazwyczaj nazwa odtwarzacza odbiorcy.

    Nazwa strumienia jest ustalana poprzez żądany URL wraz z dodatkowymi parametrami zapytania. Tak więc żądany zasób może wyglądać na przykład tak:

    /stream.ogg&session=xyz

    Należy pamiętać, że niektóre znaki są przetwarzane przez serwer (np. encje znakowe na ich odpowiedniki).


    listener_remove

    To zapytanie informuje o rozłączeniu odbiorcy.

    Szczegóły zapytania POST:

    action=listener_remove&server=myserver.com&port=8000&client=1&mount=/live&user=&pass=&duration=3600

    Podobne do poprzedniego zapytania, z tą różnicą że dodany jest parametr informujący o czasie odbioru (podawanym w sekundach).


    auth_header

    Spodziewany nagłówek zwrotny który ma być przysłany przez skrypt uwierzytelniający po poprawnej weryfikacji. Domyślnie ustawiony na wartość:

    icecast-auth-user: 1

    …ale może to być cokolwiek, np.:

    HTTP 200 OK

    timelimit_header

    Odbiorcy mogą być ograniczeni limitem czasu, który został im narzucony. Jeśli został wysłany niniejszy nagłówek, dany użytkownik zostanie rozłączony po upływie określonego tu czasu (podanego w sekundach).


    Odtwarzacze a uwierzytelnianie

    Nigdy nie była sporządzana lista odtwarzaczy obsługujących uwierzytelnianie. Wiele programów obsługuje podstawowe uwierzytelnianie HTTP. Najlepszymi przykładami są programy Winamp, Foobar2000 (Windows) i XMMS (Unix). Winamp/XMMS obsługuje również dodatkowe parametry w zapytaniach – inne odtwarzacze być może również.

    Wprowadzenie

    Retransmisją nazywamy proces, w którym jeden lub więcej strumieni jest przekazywanych poprzez odrębny serwer w sieci. Serwery nie muszą być programami tego samego typu (np. Icecast może retransmitować sygnał z serwera SHOUTcast). Retransmisja jest używana przede wszystkim w dużych stacjach nadawczych, gdzie odbiorcy rozdzielani są na poszczególnych maszynach.

    Rodzaje retransmisji

    Oprogramowanie Icecast posiada zaimplementowane dwa rodzaje retransmisji. W pierwszym wypadku obydwa serwery muszą być serwerami Icecast. Może zostać wtedy ustanowione połączenie master-slave (pan-sługa) – wszystko co należy zrobić, to skonfigurować serwer retransmitujący (sługę) stosując odpowiedni adres i port serwera głównego. Serwer retransmitujący będzie również okresowo sprawdzać, czy do serwera głównego nie zostały podłączone nowe źródła i jeśli tak się stanie również będzie je przekazywać. Drugim rodzajem retransmisji jest przekaz pojedynczego strumienia. W tym wypadku serwer-przekaźnik musi zostać odpowiednio skonfigurowany, a retransmitowane są tylko zdefiniowane źródła. Chcąc retransmitować serwer SHOUTcast, należy użyć przekazu pojedynczego strumienia i zdefiniować nazwę strumienia (mountpoint): "/".

    Konfigurowanie przekazu (scenariusz pan-sługa)

    W przypadku przekazywania wszystkich strumieni, obydwa serwery (retransmitowany i przekaźnik) powinny być serwerami zgodnymi z Icecast. Niżej został opisany fragment pliku konfiguracyjnego:

    <master-server>192.168.1.11</master-server>
    <master-server-port>8001</master-server-port>
    <master-update-interval>120</master-update-interval>
    <master-password>hackme</master-password>

    Powyższy fragment pokazuje sposób konfiguracji serwera-przekaźnika. W tym wypadku serwer główny nie musi być specjalnie konfigurowany. Gdy przekaźnik zostanie uruchomiony, połączy się z serwerem głównym zlokalizowanym pod adresem 192.168.1.11:8001 i rozpocznie retransmisję wszystkich strumieni. Dodatkowo, co pewien okres czasu (w tym wypadku dwie minuty) sługa sprawdzi, czy do serwera głównego są podłączone nowe źródła – jeśli tak, zostaną włączone do procesu retransmisji. Nazwy strumieni będą odpowiadać tym na serwerze głównym.

    Konfigurowanie przekazu pojedynczego strumienia

    W tym przypadku serwer główny nie musi być zgodny ze specyfikacją Icecast. W tym trybie obsługiwane są serwery SHOUTcast, Icecast1.x, i Icecast2. Zagadnienie jest omówione na podstawie poniższego fragmentu przykładowej konfiguracji:

    <relay>
    <server>192.168.1.11</server>
    <port>8001</port>
    <mount>/example.ogg</mount>
    <local-mount>/different.ogg</local-mount>
    <relay-shoutcast-metadata>0</relay-shoutcast-metadata>
    </relay>

    W przykładzie ustawienia są stosowane dla serwera-przekaźnika. Serwer główny nie musi być specjalnie konfigurowany. Gdy serwer skonfigurowany do retransmisji zostanie uruchomiony, połączy się z serwerem głównym pod adresem 192.168.1.11:8001 i rozpocznie retransmisję wybranego strumienia (w tym wypadku /example.ogg). Przy użyciu tego typu retransmisji można pominąć nazwę strumienia i nadać mu zupełnie inną (/different.ogg). Jeśli serwer jest zgodny z oprogramowaniem SHOUTcast, nazwa strumienia podana jako parametr <mount> musi zostać zdefiniowana jako / (slash). Jeśli mają być przekazywane dodatkowe informacje strumienia SHOUTcast, parametrowi <relay-shoutcast-metadata> należy nadać wartość 1.

    Please publish modules in offcanvas position.