Indicação de alguns endereços sobre Web rádio.
Tutorial enviado por Ederson Luiz Honorato - Web Rádio com Icecast2 e Ices2
De: Ederson Luiz Honorato <ederson.luiz.santos@itelefonica.com.br> Para: zagolinux <zagolinux@uol.com.br> Assunto: Webrádio com Icecast2 e Ices2 - pro FAQ Data: Sat, 04 Nov 2006 17:25:03 -0200 (16:25 BRST) Web Rádio com Icecast2 e Ices2 INTRODUÇÃO Aqui se encontram as instruções para montagem e configuração de uma webrádio com a utilização de soluções livres para o sistemas operacionais baseados em Linux. Este tutorial destina-se a usuários com pouco ou nenhum conhecimento em configuração de servidores Linux. A rádio será montada em Debian. Mais especificamente, esta montagem foi realizada em uma versão Debian o Sarge 3.1 rev 1. Já que a intenção é usar software livre, a configuração também será focada em arquivos de mídia .ogg (OGG Vorbis) que é um formato de audio e vídeo livre. PRINCIPAIS SOFTWARES UTILIZADOS Serão necessários os seguintes softwares: Icecast2 O icecast2 é o servidor da rádio, é ele que vai transmitir o streaming para os clientes na internet ou em uma rede local. Ele não toca diretamente as músicas, ele faz a ponte entre um decodificador e os clientes que vão acessar o streaming. Ices2 Este é o programa que mais interessa. Ele é responsável por decodificar o audio e transmitir para o servidor icecast2. Ele pode tocar um arquivo ogg, tocar uma lista (playlist) ou capturar a entrada de uma placa de som (/dev/dsp). INSTALAÇÃO Vale lembrar que a montagem da webrádio foi feita em Sistema Operacional Debian e não abordarei a instalação sob outros sabores do Linux. Apesar de funcionar em sistemas operacionais Linux baseados no Debian essas instruções podem não ser idênticas em todos os casos. Outras dicas O icecast requer os seguintes pacotes: * libxml2 - http://xmlsoft.org/downloads.html * libxslt - http://xmlsoft.org/XSLT/downloads.html * curl - http://curl.haxx.se/download.html (>= requerida a versão 7.10) NOTA: Caso queira instalar dos fontes, o icecast pode ser compilado sem o curl, porém isto vai incapacitar toda a interação com servidor de Diretórios (YP) caso queira fazê-lo. * ogg/vorbis - http://www.vorbis.com/files (>= requerida a versão 1.0) Instalando o Icecast2 Primeiramente será necessário instalar alguns drivers para dar suporte a mp3 caso seu sistema já possua esses drivers ignore esse passo. Modifique o seu sources.list (/etc/apt/sources.list), incluindo as linhas abaixo: deb http://www.las.ic.unicamp.br/pub/debianmarillat unstable main deb http://ftp.br.debian.org/debian/ testing main debsrc http://ftp.br.debian.org/debian/ testing main Em seguida, como root, faça o update e instale os programas abaixo, com os comandos: # aptget update # aptget install lame liblamedev libogg0 libvorbisdev libvorbisenc2 libvorbisdev libgmp3dev liblame0 libjackasyndev libjack0.80.0dev libbio2jack0dev jack # aptget install icecast2 Instalando o Ices2 Para instalar o Ices2, abra um terminal e digite: # aptget install ices2 No meu caso o ices2 não funcionou sem a atualização da biblioteca de compressão de vídeo Theora, utilizada pelo ices2. Para instalá-la digite: # apt-get install libtheora0 CONFIGURAÇÕES Siga as instruções abaixo digitando os comandos em seu terminal. Coloque usuário do Icecast2 no grupo audio. Para isso edite o arquivo /etc/group e troque a linha: audio:x:29: Pela linha: audio:x:29:icecast2 Copie a configuração do Icecast para a pasta /etc: # cd /etc/icecast2 # cp icecast.xml /etc/icecast.xml Nota : Caso os arquivos de configuração do icecast.xml não esteja na pasta /etc/icecast2 eles podem estar em /usr/share/icecast2. Os arquivos podem variar de uma versão para outra. Configurando o Icecast O arquivo de configuração do icecast2 é escrito no formato XML, e é dividido em várias seções: ? Restrições (Limits) ? Autenticação (Authentication) ? Listagem de Diretório (YP ? Yelow Pages) ? Configurações gerais ? Opções de Relê (Relay) ? Pontos de montagem (Mount-point's) ? Arquivos e diretórios no servidor ? Registros (Logs) ? Segurança (Security) Você não precisa ser preocupar com a maioria delas, deixando-as com seus valores padrões. A sintaxe do arquivo de configuração é em XML, o que quer dizer que as seções são escritas na forma <secao>algumacoisa</secao> Os comentários, que são ignorados pelo icecast, são todas as palavras que estiverem entre os delimitadores < e >, como por exemplo em <!-- comentário --> Não vou me aprofundar na explicação sobre cada seção do arquivo de configuração do icecast, você pode achar uma documentação mais completa explicando detalhadamente cada seção no site do desenvolvedor. É necessário agora editar o arquivo icecast.xml, para isso abra o arquivo /etc/icecast.xml copiado anteriormente com um editor de textos de sua preferência e altere as configurações conforme descrito abaixo: Na seção authentication você deve definir 2 senhas uma para o source e outra para o relay. Você deve ainda definir um usuário administrador (acesso via página http) e uma senha para ele: <authentication> <!-- Sources log in with username 'source' --> <source-password>hackme</source-password> <!-- Relays log in username 'relay' --> <relay-password>hackme</relay-password> <!-- Admin logs in with the username given below --> <admin-user>admin</admin-user> <admin-password>hackme</admin-password> </authentication> Substitua a senha hackme na <source-password> e na <relay-password> por uma de sua preferência. Defina também um usuário admin em <admin-user> e uma nova senha para hackme <admin-password>. Não se esqueça de anotá-las pois elas serão usadas na configuração do ices2. Para disponibilizar sua rádio pela internet, sem a necessidade de passar o endereço para ser inserido manualmente no player de mp3 é necessário a configuração abaixo: <!-- This is the hostname other people will use to connect to your server. It affects mainly the urls generated by Icecast for playlists and yp listings. --> <hostname>SEU IP</hostname> <!-- You can use these two if you only want a single listener --> <!--<port>8000</port> --> <!--<bind-address>127.0.0.1</bind-address>--> <!-- You may have multiple <listener> elements --> Onde está escrito SEU IP deverá ser trocado pelo ip de sua máquina. Isto permitirá o acesso a uma playlist da sua rádio. Neste caso você poderá colocar um link de sua rádio em alguma página. Assim, qualquer internauta ao clicar neste link ou digitar o endereço do mesmo no navegador, abrirá o player de mp3 padrão. O link de sua rádio será algo do tipo: http://SEU IP:8000/nomeradio.m3u Você deve defina a porta que o servidor aceitará conexões, por padrão é usada a porta 8000, mas você pode definir uma outra qualquer. Na opção bind-address você pode deixar com o endereço IP que está, ele só deve ser alterado caso o ices2 for instalado em outra máquina na rede ou internet, nesse caso o endereço deve ser alterado pelo endereço IP da máquina com o ices2. Feitas as alterações no arquivo de configuração do icecast basta abrir um terminal e rodá-lo: # icecast -c /caminho/para/icecast.xml Se nenhuma mensagem de erro foi gerada, então confira o arquivo /var/log/icecast2/error.log , e veja se existe a seguinte mensagem: [2003-10-31 13:04:49] INFO main/main.c icecast server started Você também pode verificar se o servidor iniciou corretamente abrindo a seguinte URL: http://seu_ip:porta/admin/stats.xml com qualquer browser. Vai aparecer um pedido para entrar com um usuário e senha. Digite ?admin? no campo username e a senha que você colocou em <admin-password>. Se tudo der certo, você deve ver numa página XML e uma pequena lista em árvore que representa estatísticas do icecast. Configurando o Ices2 O arquivo de configuração do ices2 também é um arquivo XML (ices.xml) e seu formato é bem parecido com o arquivo de configuração o icecast2 com divisões por seções, porém mais simples. Aqui, eu encontrei três exemplos do arquivo de configuração em /usr/share/doc/ices2/examples que abordam configurações específicas para os drivers OSS e ALSA e a saída por Playlist. Eu utilizei o arquivo de configuração de saída por Playlist. Caso não seja este o seu caso está por sua conta. Copie o arquivo de configuração para /etc: # cd /usr/share/doc/ices2/examples # cp /usr/share/doc/ices2/examples/ices-playlist.xml /etc/ices.xml Agora vamos editar o arquivo de configuração do ices2, para isso abra o arquivo /etc/ices.xml copiado anteriormente com um editor de textos de sua preferência e altere as configurações conforme descrito abaixo: Logo no inicio do arquivo de configuração você verá a opção <background>0</background>, essa opção é responsável pelo ices2 operar em primeiro-plano (foreground) ou segundo-plano (background). O valor padrão é 0 (desligado) <?xml version="1.0"?> <ices> <!-- run in background --> <background>0</background> Coloque 1 para que o ices2 entre em segundo-plano (background) após ser executado, caso contrário deixe como está. Logo abaixo na opção <logpath> indique o caminho completo para o diretório de logs do ices2. <logpath>/var/log/ices</logpath> Altere a parte em negrito pelo caminho real do seu sistema. No meu sistema a instalação não criou a pasta de log em /var/log/ices o que eu tive que fazer manualmente. Se não existir um path válido o ices2 não inicia. Logo abaixo existe uma grande seção chamada <stream>. Dentro da seção <metadata> preencha os valores para o NOME (<name>), GÊNERO (<genre>), e DESCRIÇÃO (<description>) da sua Rádio, como na ilustração abaixo: <metadata> <name>NOME</name> <genre>GÊNERO</genre> <description>DESCRIÇÃO</description> </metadata> Esses dados serão transmitidos juntamente com o stream para os ouvintes da rádio e aparecerão no player de mp3 desses ouvintes. Na seção <input> você deve alterar conforme as suas necessidades suas necessidades. Esta seção é bem explicada na documentação do ices2, na parte de "input modules". O interessante falar aqui é o necessário para o seu funcionamento. Existem basicamente 2 tipos de <module>: os de live stream(oss e alsa) e o playlist. Playlist O playlist pode funcionar com um arquivo texto puro (basic) contento uma lista com o caminho completo para uma pasta contendo vários arquivos .ogg (<param name="type">basic</param>), ou um script ((<param name="type">script</param>)) que retorna uma linha com o caminho completo de um arquivo ogg(<param name="type">script</param>). Para o tipo basic você deve configurar os parâmetros file (<param name="file">), random (<param name="random">) e once (<param name="once">). Para o tipo script, você precisa apontar somente o program (<param name="program">) que é o script que vai ser executado. Live Stream (Ao Vivo) Para fazer streaming ao vivo sugiro que leia a documentação oficial do ices2. Existem alguns parâmetros sobre a placa de som que são importantes, pois, para o live funcionar não adianta só tocar uma música no computador onde está o ices2, é necessário obter algo das interfaces de captura(microfone ou input). Essa pequena explanação serve apenas para uma entendimento básico das configurações da seção <input>, procurando facilitar a configuração das entradas. No meu caso eu usei o módulo playlist, usando o arquivo /usr/share/doc/ices2/examples/ices-playlist.xml: <input> <module>playlist</module> <param name="type">basic</param> <param name="file">/home/kurumin/mp3/mp3.txt</param> <!-- random play --> <param name="random">0</param> <!-- if the playlist get updated that start at the beginning --> <param name="restart-after-reread">0</param> <!-- if set to 1 , plays once through, then exits. --> <param name="once">0</param> </input> Caso estiver diferente basta alterar a opção <module> e deixar como no exemplo acima. Você deve indicar também o tipo de playlist em <param name="type">. Como já foi dito acima existem dois tipos de playlist a basic (texto puro) e o script. Eu utilizei o segundo como pode-se notar no exemplo acima. Na opção <param name="file"> o caminho completo para o arquivo de texto contendo a lista de músicas. Caso queira que as músicas sejam tocadas de uma forma randomica, você pode alterar a opção <param name="random"> para 1 (ligado). Agora deve-se apontar onde esta o servidor icecast que irá enviar esse stream para a rede. Para isso configure os parâmetros hostname (<hostname>), porta (<port>), senha (<password>), e o ponto de montagem(<mount>). <instance> <!-- Server details: You define hostname and port for the server here, along with the source password and mountpoint. --> <hostname>hostname</hostname> <port>8000</port> <password>hackme</password> <mount>/meustream.ogg</mount> O hostname e a porta são referentes a localização do servidor icecast2, que pode estar em outro computador, neste caso você deve digitar o IP da máquina e a porta que o icecast2 está escutando. A senha deve ser a mesma que foi colocada no servidor icecast2, no parâmetro <source-password>. O ponto de montagem é o necessário para identificar o ices2 no servidor icecast. Não pode haver 2 servidores ices2 com o mesmo ponto de montagem <mount>. Na seção <encode> você pode estabelecer alguns valores para o bitrate <nominal-bitrate> o samplerate <samplerate> e canais <channels>. <encode> <nominal-bitrate>64000</nominal-bitrate> <!-- bps. e.g. 64000 for 64 kbps --> <samplerate>44100</samplerate> <channels>2</channels> </encode> O bitrate é o volume de dados transferido a cada segundo em um fluxo de áudio. O valor padrão é de 64000 (ou 64 kbps). O samplerate é a quantidade de amostras do som em uma certa medida de tempo. O valor padrão é de 44100. No meu caso eu mantive os valores padrões de bitrate samplerate e channels. Uma vez que o arquivo de configuração /etc/ices.xml foi modificado, você pode iniciar-lo com o seguinte comando: # ices2 /caminho/para/ices.xml Se nenhuma mensagem de erro foi gerada, então confira o arquivo /var/log/ices/error.log , e veja se ocorreu algum erro. Se estiver tudo correto, acesse <http://ip.do.servidor.icecast:porta/status.xsl> que o seu servidor ices deve estar listado lá. Uma vez que você configurou o ices2 e ele está rodando sem problemas, você já pode se conectar ao servidor icecast2. Agora para escutar o stream você deve simplesmente abrir o URL apropriado em um browser: http://seu_ip:porta/pontodemontagemespecificado.m3u. Assim, por exemplo, se você conectasse seu cliente a um servidor icecast2 localizado em 192.168.0.10:8000 com um ponto-de-montagem em /meustream.ogg, então você abriria: http://192.168.0.10:8000/meustream.ogg.m3u. Note que a extensão .m3u indica um link que abre a maioria dos players de mídia. Também é importante notar que .m3u não precisa conter somente stream MP3, pode conter streams de conteúdo do tipo arbitrário (arbitrary content-type) e pode ser usado através do icecast2 para servir uma playlist que representa sua transmissão para os clientes. Você também pode abrir a URL contendo o stream diretamente do seu player de mídia (http://192.168.1.10:8000/mystream.ogg neste caso) Conclusão O icecast é uma ótima solução pra quem precisa de um servidor de streaming de audio ou vídeo. A sua configuração é simples e sua performance com múltiplos sources e muito clientes acessando é invejável. A possibilidade de rodar-lo em máquinas antigas (testei em um Pentium 133Mhz), faz do icecast um produto interessante para quem não quer gastar muito para ter uma webrádio funcionado. Alinhando tudo isso a sua conectividade faz do icecast2 um software imbatível pela sua gratuidade e sobretudo pela sua performance. O ices2 que é desenvolvido juntamente com o icecast também se mostrou de fácil configuração e quase não consome recursos da máquina. Eu preferi o seu uso ao darkice/darksnow pois não tive uma boa experiência com eles, apesar de também serem soluções livres. LINKS RELACIONADOS À WEBRÁDIOS Abaixo estão relacionados alguns links com informações sobre webrádios: http://www.zago.eti.br/radios.txt http://www.radiolivre.org/comment/reply/128 http://paginas.terra.com.br/informatica/redpinguim/radios_internet.html http://docs.indymedia.org/view/Sysadmin/WebRadios http://docs.indymedia.org/view/Sysadmin/IceCastPtBr Este tutorial foi escrito no OpenOffice por Éderson Luiz Honorato e foi baseado no tutorial webrádios escrito por Guilherme Braz Carneiro e nas minhas experiências na instalação do icecast2 e ices2, além da documentação oficial no site do desenvolvedor. Novembro de 2006