Webrádio com Icecast2 e Ices2

Atualizado em: 04/11/2006



Sobre este documento

Indicação de alguns endereços sobre Web rádio.

Tutorial enviado por Ederson Luiz Honorato - Web Rádio com Icecast2 e Ices2

tutorial

  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

Outras indicações

FAQ com mensagens da Linux-br
http://www.zago.eti.br/radios.txt
Página principal deste site (FAQ)
http://www.zago.eti.br/menu.html