Gentoo Logo

Streaming de radio con SHOUTcast

Contenido:

1.  Poniendo en marcha el servidor SHOUTcast

Instalando los archivos

Podemos encontrar el servidor SHOUTcast en media-sound/SHOUTcast-server-bin. Puede instalarlo con el siguiente comando:

Listado de Código 1.1: Haciendo emerge de SHOUTcast

# emerge shoutcast-server-bin

SHOUTcast Server será entonces instalado. El siguiente paso es configurar su nuevo servidor SHOUTcast.

Configurando el servidor SHOUTcast

Ahora que el servidor SHOUTcast está instalado, debe ser configurado. El fichero de configuración puede encontrarse en /etc/shoutcast/sc_serv.conf. Comencemos con la configuración. Asegúrese de que es root y abra el fichero de configuración con su editor favorito. He elegido vi para este ejemplo. Ahora abriré el fichero con vi:

Listado de Código 1.2: Abriendo el fichero de configuración

# vi /etc/shoutcast/sc_serv.conf

Esto abrirá el fichero de configuración del servidor SHOUTcast para su lectura. Aquí encontrará el fichero de configuración con las diferentes opciones que puede ajustar. Echemos un vistazo a cómo ajustar estas opciones en particular.

Opciones obligatorias

Listado de Código 1.3: Ajustando el límite de usuarios


; MaxUser. El máximo número de oyentes simultáneos permitidos.
; Calcule un valor razonable para el ancho de banda de subida
; del que dispone (por ejemplo, si tiene una línea DSL de
; 256kbps y quiere retransmitir a 24kbps, debería usar
; 256kbps/24kbps=10 máximos oyentes). Ajustando esta variable a
; un valor mayor, malgasta RAM y echa a perder su retransmisión
; cuando se conectan más personas de las que se pueden soportar.

MaxUser=10

Aquí es donde se indica el máximo número de usuarios. Como muestra la descripción de arriba, no tiene sentido ajustarlo a 100 usuarios en una línea de 256kbps de subida (este es el valor que he usado y mi ancho de banda de subida es aproximadamente éste). Si está usando el servidor SHOUTcast en una LAN, probablemente pueda ajustar este valor MUCHO más alto (a los mencionados 100). Por favor, recuerde no abusar de su ancho de banda, cualquiera que éste sea. El ancho de banda es un valor de alto precio para los ISPs y algunos pueden limitar su cuenta, penalizarle con altos pagos, o ambos.

Listado de Código 1.4: Ajustando la contraseña


; Password. SHOUTcast nunca solicita a un oyente una contraseña, sin
; embargo, se necesita una para hacer retransmisiones a través del
; servidor, y también para realizar labores de administración vía
; interfaz web. Esta debe consistir únicamente en letras y números y
; es la misma que el servidor de retransmisión necesitará para entrar
; en el Plug-in Source SHOUTcast para Winamp. ESTA VARIABLE NO PUEDE
; ESTAR VACÍA.

Password=una_contraseña_difícil_de_averiguar

Aquí es donde se ajusta la contraseña. La contraseña en sí está en texto claro. Por razones de seguridad, recomiendo ENCARECIDAMENTE que no se usen contraseñas que son usadas para acceder a componentes críticos del sistema u otra información sensible. Cree su contraseña de la forma más aleatoria posible, con una combinación de letras y números. Esta clave será la que SHOUTcast Trans (o cualquier otro proveedor de contenidos) emplee para conectarse y ofrecer los contenidos en la emisión.

Listado de Código 1.5: Ajustando el puerto de escucha


; PortBase. Este es el número de puerto en el que su servidor
; escuchará. El puerto con este valor y el mismo sumándole uno
; deben estar disponibles (por ejemplo los puertos 8000 y 8001).
; Si obtiene un error fatal cuando el DNAS está configurando un
; socket durante el inicio, asegúrese de que ningún proceso en
; la máquina esta escuchado en el mismo puerto (telnet localhost
; númerodepuerto -- si obtiene conexión rechazada entonces podrá
; usar ese número de puerto). Los puertos menores que 1024
; necesitan privilegios de root en las máquinas *nix. El puerto
; por defecto es el 8000.

PortBase=8000

Este valor indica el puerto al que los usuarios se tendrán que conectar en su servidor SHOUTcast. El puerto por defecto es el 8000, ya que es el que la mayoría de los servidores capaces de ofrecer mp3 apuntan por defecto (Audacious, winamp, etc.). Como se indica en la descripción, si desea usar un puerto inferior al 1024 necesitará acceso como root. Sin embargo, recomiendo no usar un puerto menor que el 1024 para el servidor SHOUTcast.

Listado de Código 1.6: Ajustando el registro


; LogFile: Fichero para usar como registro. Puede ser '/dev/null',
; 'none' o vacío para desactivar el registro. El valor por defecto
; es ./sc_serv.log en sistemas *nix o sc_serv_dir\sc_serv.log en
; win32.
; Nota: en sistemas win32, si no se especifica ningún fichero, la
; localización del mismo es el directorio donde se encuentre el
; ejecutable, en sistemas *nix systems es el directorio actual.

LogFile=/var/log/SHOUTcast.log

Este parámetro indica la localización del fichero de registro del servidor SHOUTcast. En el ebuild, éste viene ajustado a /dev/null, por lo que tendrá que cambiarlo para obtener los mensajes del servidor. Lo he ajustado a la ubicación básica /var/log. Puede hacer que apunte al lugar que desee.

Listado de Código 1.7: Activando las estadísticas en tiempo real


; RealTime muestra una línea de estado que es actualizada cada
; segundo con la información más reciente del canal actual (sólo en
; las consolas de los sistemas *nix y win32).

RealTime=0

Este parámetro muestra información acerca de la canción actual en stdout una vez por segundo. Viene desactivada por defecto en el ebuild, de esta forma, el demonio SHOUTcast corre de la manera más silenciosa posible. Ajústelo a 1 si quiere esta información cada segundo. Sin embargo, le recomiendo que use la página de estado en su lugar.

Listado de Código 1.8: Activando el registro en tiempo real


; ScreenLog controla si el registro es impreso en pantalla o no para
; las consolas de los sistemas *nix y win32. Es práctico deshabilitar
; esta opción cuando se ejecutan servidores en segundo plano con sus
; propios terminales. El valor por defecto es 1.

ScreenLog=0

Este parámetro está desactivado por defecto en el ebuild para hacer que el demonio se ejecute de la forma más silenciosa posible. Si se activa, se registrará cualquier evento (conexiones, desconexiones, etc.) en stdout en el momento en que suceda. Sin embargo y debido a que los ficheros de registro hacen lo mismo, recomiendo usarlos en su lugar.

Listado de Código 1.9: Ajustando el último número de canciones reproducidas


; ShowLastSongs especifica cuantas canciones mostrar en la página
; /played.html. El valor por defecto es 10. Valores aceptables
; varían de 1 a 20.

ShowLastSongs=10

Tal y como indica, este valor, le permite indicar cuántas canciones de las recientemente reproducidas se mostrarán en /played.html. Si pone más de 20, deberá probablemente considerar usar más café.

Listado de Código 1.10: Ajustando el registro de modificación del sistema de ficheros


; TchLog decide si el fichero de registro de DNAS debe hacer un
; seguimiento de los directorios actualizado. Las adiciones o
; remociones todavía aparecerán independientemente del valor de
; esta variable.
; El valor por defecto es sí.
; TchLog=yes

Este ajuste activa o desactiva el registro de las modificaciones en el directorio realizadas por el DNAS (Distributed Network Audio Server), o de más brevemente: SHOUTcast. Está recomendado para aquellos que desean tener una mayor seguridad en el registro. Los usuarios básicos o domésticos probablemente no lo necesiten.

Listado de Código 1.11: Activando el registro de peticiones http


; WebLog decide si las visitas a http:// en este DNAS serán
; registradas o no. La mayoría lo desactiva debido a que el
; plug-in DSP usa llamadas a http:// para actualizar los títulos
; y obtener el número de oyentes, lo que toma mucho espacio para
; el registro. Si quiere ver las visitas a su admin.cgi o a
; las páginas índice, active esta opción. Note que este ajuste
; no afecta a los contadores de estadísticas en XML para las
; visitas a páginas http://.
; El valor por defecto es no.
; WebLog=no

Este parámetro especifica si quiere registrar o no las peticiones al servidor HTTP que ofrece SHOUTcast. De nuevo, está recomendad para los que deseen una mayor seguridad en el registro, pero no está recomendado para usuarios casuales o domésticos.

Listado de Código 1.12: Activando del registro W3C


; W3CEnable activa el registro W3C. Los registros W3C contienen cuentas
; de tipo httpd de cada pista reproducida por cada oyente, incluyendo
; conteos de bytes que tomaron esos oyentes. Estos datos pueden ser
; analizados con herramientas como Analog y WebTrends, o entregadas a
; terceras partes como Arbitron y Measurecast para sus sistemas de
; informes.
; El valor por defecto es sí (activado).

W3CEnable=Yes


; W3CLog indica el nombre del fichero de registro para W3C. El fichero
; por defecto es sc_w3c.log, en el mismo directorio desde el que se
; arrancó el DNAS.

W3CLog=/dev/null

La primera opción activa el registro W3C. Este tipo de registros pueden ser analizados por los programas indicados (Analog, WebTrends, etc.). Está especialmente recomendado para los que quieran tener una mayor profundidad en sus estadísticas. La segunda opción especifica donde almacenar el registro W3C. Está ajustado a /dev/null por el ebuild.

Configuración de la red

Listado de Código 1.13: Ajustando la dirección IP fuente


; SrcIP es la interfaz en la que se escucharán las conexiones de
; entrada (o para hacer retransmisiones). Puede y normalmente será
; CUALQUIER interfaz, incluso 127.0.0.1 (Dando el valor 127.0.0.1
; evitará que otras máquinas puedan retransmitir usando su servidor
; SHOUTcast).

SrcIP=ANY

La variable SrcIP indica la IP desde la cual el contenido se emite. Puede ser de otro servidor (retransmisión), del servidor local (normal) u otra IP que soporte su interfaz. Ajustándola a servidor local (localhost) se impide que otro servidor use su servidor SHOUTcast como fuente de su emisión. El valor por defecto es ANY, este valor causará que su servidor SHOUTcast ofrezca contenidos desde cualquier IP. Por cuestiones de seguridad, es mejor ajustarlo a algo específico.

Listado de Código 1.14: Ajustando la IP destino


; DestIP, la dirección IP de escucha para los clientes (y para
; contactar con yp.SHOUTcast.com). Puede y normalmente será
; CUALQUIER dirección. Si su máquina tiene varias direcciones IP,
; ajuste esta variable a la dirección que desee.

DestIP=ANY

Este parámetro determina la IP de su interfaz a la cual permitirá que sus usuarios se conecten. Puede ser el servidor local (si es un antisocial y desea emitir únicamente para su máquina), una dirección IP privada (por ejemplo 192.168.0.101, para dar servicio en una red local), o su dirección IP externa (por ejemplo, 209.204.249.201, para emitir en una WAN, no en una LAN). En la mayoría de los casos puede conectarse a su propia emisión usando 127.0.0.1 en lugar de lo que se muestra. ANY le permite a su servidor SHOUTcast, escuchar en todas las direcciones IP en todos los interfaces disponibles.

Listado de Código 1.15: Ajustando el puerto para proxy/yp.SHOUTcast.com


; Yport, es el puerto para conectarse a yp.SHOUTcast.com. Para aquellos
; que se encuentran detrás de representantes de cacheo web
; (web proxies), cambie esta opción al puerto alternativo (debería ser
; 666, compruebe www.SHOUTcast.com si tiene problemas). De lo contrario,
; déjelo en 80. Estamos trabajando activamente para reabrir el puerto
; 666, pero en este momento el único puerto que funciona es el 80.

Yport=80

Esta variable tiene dos funciones. En primer lugar, es el puerto que se usa para conectar a yp.SHOUTcast.com. La página yp.SHOUTcast.com es la usada por nullsoft para los servidores públicos, de forma que los usuarios sepan en que puertos se está escuchando. Los usuarios pueden buscar su estación emisora en esta página. El segundo uso que se le da a esta variable es para proxies web. Ajústela al puerto que usa para las conexiones a través de un proxy, igualmente ajuste DestIP a su proxy para realizar la emisión.

Listado de Código 1.16: Ajustando el DNS inverso


; NameLookups. Especifique 1 para realizar DNS inverso a las
; conexiones. Esta opción puede incrementar el tiempo que se
; necesita para conectarse a su servidor si su servicio DNS es lento.
; El valor por defecto es 0 (desactivado).

NameLookups=0

Esta opción especifica si se desean realizar búsquedas DNS inversas o no en los clientes. Esto tomará una dirección IP e intentará encontrar el correspondiente nombre del servidor. Se usa para que los registros de actividad sean más detallados.

Listado de Código 1.17: Ajustando la retransmisión


; RelayPort y RelayServer especifican que se desea que el servidor se
; comporte como un servidor de retransmisiones. Estos servidores
; actúan como clientes de otro servidor y retransmiten sus canales.
; Ajuste RelayPort a 0, RelayServer vacío, o simplemente deje estas
; líneas comentadas para desactivar el modo retransmisión.
; RelayPort=8000
; RelayServer=192.168.1.58

Estas opciones especifican si su servidor está actuando como un servidor de retransmisión. Los servidores de retransmisión se usan a menudo para tomar una conexión de bajo ancho de banda que sólo puede emitir a un cliente, y usar su mayor ancho de banda para servir a más clientes. RelayPort especifica el puerto y la dirección IP del servidor SHOUTcast del que desea hacer retransmisión. Comente estas opciones si no tiene planes de usar su servidor para retransmitir.

Configuración del servidor

Listado de Código 1.18: Ajustando la contraseña del administrador


; AdminPassword. Esta contraseña (si se especifica), cambia el
; comportamiento de la opción Password para ser una contraseña de
; retransmisión únicamente, y limita las tareas de administración
; HTTP a la contraseña especificada aquí. El transmisor con la
; contraseña de arriba aún puede ingresar en el sistema y ver los
; usuarios conectados, pero sólo el AdminPassword será capaz de
; echar, prohibir y especificar servidores inversos.
; El valor por defecto está sin definir (Password permite controlar
; la fuente y la administración)
; AdminPassword=contraseñaadmin

Ajustando esta variable, se creará un perfil de emisor y otro de administrador. El emisor puede entrar en el servidor con una clave y ver las conexiones activas. Sin embargo, si esta persona quiere echar, prohibir o administrar conexiones del servidor, deberán entrar con la contraseña del administrador. Esta opción crea roles más específicos en su servidor. Esto es lo recomendado para instancias en las que el administrador no es la misma persona que el emisor.

Listado de Código 1.19: Ajustando la desconexión automática de los usuarios


; AutoDumpUsers controla si los oyentes son desconectados en caso de
; que la fuente sea desconectada. El valor por defecto es 0.

AutoDumpUsers=0

Aquí se especifica si los usuarios son echados o no si se desconecta de la emisión por cualquier razón. Está ajustado a 0, de tal forma que los clientes agotarán el tiempo o continuarán intentando guardar la emisión. Use esta opción si espera interrupciones breves en cualquier momento.

Listado de Código 1.20: Ajustando el tiempo de inactividad de la fuente


; AutoDumpSourceTime especifica durante cuanto tiempo, en segundos,
; se permite a la transmisión fuente estar ociosa antes de que el
; servidor las desconecte. 0 permitirá que la transmisión fuente este
; ociosa indefinidamente antes de ser desconectada. El valor por
; defecto es 30.

AutoDumpSourceTime=30

Esta opción especifica cuando el servidor SHOUTcast debe terminar de esperar por una fuente (principalmente un servidor de retransmisión) para ofrecer contenidos de esta fuente. Cualquier valor entre 30 y 60 deber ser razonable para esta opción.

Listado de Código 1.21: Ajustando el directorio de contenidos


; ContentDir especifica la localización en disco del directorio desde
; el que se servirá contenido bajo demanda. Se permiten los
; subdirectorios desde la versión 1.8.2 de DNAS.
; El valor por defecto es ./content/, indicando un directorio llamado
; content en el mismo directorio desde el que se invocó a sc_serv.

ContentDir=/opt/SHOUTcast/content/

La opción ContentDir especifica dónde se encuentra el contenido que será demandado por los usuarios. Por ejemplo si desea anunciar una emisión a los empleados, podría usarlo para este propósito. El ebuild del servidor SHOUTcast lo ajusta a /opt/SHOUTcast/content por defecto. Para usar esto, copie un archivo mp3 en el directorio de contenidos y apunte su navegador a http://example.com:[port]/content/mp3name.pls. El servidor SHOUTcast Server creará automáticamente una lista de reproducción compatible para este mp3 y lo ofrecerá como una emisión bajo demanda. Use esto como alternativa a SHOUTcast Trans emitir sus contenidos.

Listado de Código 1.22: Ajustando el fichero de introducción


; IntroFile puede especificar un fichero mp3 que será transmitido a
; los oyente tan pronto como se conecten y antes de escuchar la
; transmisión.
; Note que el fichero de introducción DEBE tener el mismo ratio
; de muestreo y canales que la transmisión para que esto funcione
; correctamente. Aunque el ratio de bits PUEDE variar, podrá usar
; '%d' para especificar el ratio de bits en el nombre del fichero
; (por ejemplo, C:\intro%d.mp3 sería C:\intro64.mp3 si está
; transmitiendo a 64kbps).
; El valor por defecto es vacío.
; IntroFile=c:\intro%d.mp3

Esto le permite configurar un fichero de introducción. Cada vez que un usuario se conecta, se escuchará la reproducción de este fichero. Tal y como se indica, la relación de bits en la emisión y en la canción de introducción deben coincidir, o de lo contrario, las cosas podrían ir mal. Puede, sin embargo, poner algo como intro128.mp3 e intro64.mp3, y se reproducirá intro128.mp3 a los usuarios que se conecten a su emisión de 128kbps e intro64.mp3 a los que se conecten a 64kbps.

Listado de Código 1.23: Ajustando un fichero de respaldo


; BackupFile puede especificar un fichero mp3 que será transmitido a
; los oyentes una y otra vez cuando la fuente se desconecte.
; AutoDumpUsers debe valer 0 para usar esta característica. Cuando
; la transmisión fuente se reconecta, los oyentes se unirán de nuevo
; para escucharla.
; Note que el fichero de respaldo (backup) DEBE tener el mismo ratio
; y canales que la transmisión para que funcione correctamente.
; Aunque el ratio de bits PUEDE variar, podrá usar '%d' para
; especificar el ratio de bits en el nombre del fichero
; (por ejemplo, C:\backup%d.mp3 sería C:\backup32.mp3 si está
; transmitiendo a 32).
; El valor por defecto es no tener BackupFile.
; BackupFile=C:\intro%d.mp3

Es igual que arriba, pero el fichero se reproducirá cuando la emisión termine, en lugar de cuando el usuario se desconecta. Ésto sólo funciona si la variable AutoDumpUsers esta definida como 0.

Listado de Código 1.24: Ajustando u formato de título


; TitleFormat especifica un formato para el título enviado al oyente.
; Por ejemplo, una cadena como 'Justin Radio' fuerza el título
; 'Justin Radio' incluso si la fuente cambia el título. Puede usar
; hasta un '%s' in la cadena para sustituir el título indicado por
; la fuente. Por ejemplo, si su TitleFormat es 'Justin Radio: %s',
; y el plug-in de la fuente entrega el título 'Billy plays the blues',
; entonces el título que se verá en la red será:
; 'Justin Radio: Billy plays the blues'. Nota: únicamente funciona
; en servidores que no son de retransmisión.
; El valor por defecto no tiene ningún formato.

TitleFormat=Chris Gentoo Beats: %s

Esto ajusta un título no variable para su servidor Shoutcast. Use esto si el nombre de su emisión es distinto del nombre de su servidor. Esto no funciona con servidores configurados como retransmisores.

Listado de Código 1.25: Ajustando un formato de URL


; URLFormat especifica una cadena de formato para la URL que es enviada
; al oyente.
; Se comporta como TitleFormat (mirar arriba).
; El valor por defecto no tiene ningún formato.
; URLFormat=http://www.server.com/redirect.cgi?url=%s

Funciona igual que TitleFormat excepto que el URL listado es usado en lugar del URL de la emisión.

Listado de Código 1.26: Ajustando el estado público de una emisión


; PublicServer puede valer 'always', 'never', o 'default'
; (el valor por defecto, ¡je!).
; Cualquier otro ajuste que 'default' anulará el estad público del
; plug-in fuente, o para un servidor SHOUTcast que está siendo
; retransmitido.

PublicServer=default

Aquí se especifica si quiere que su servidor sea listado como un servidor público incluso si el plug-in de su servidor de retransmisión o fuente está listado como tal.

Listado de Código 1.27: Permitiendo la retransmisión


; AllowRelay determina si otros servidores SHOUTcast pueden
; retransmitir a través de este servidor o no. El valor por defecto es
; sí.

AllowRelay=Yes

AllowRelay determina si se permite a otros servidores hacer retransmisiones de su contenido. Si cree que no va hacer retransmisiones ajústelo a No.

Listado de Código 1.28: Permitiendo retransmisiones para mostrar públicamente la fuente


; AllowPublicRelay, cuando está ajustada a no, indicará a todos los
; servidores de retransmisión que no listen a este servidor en el
; directorio SHOUTcast (no público), asumiendo que el indicador
; público del servidor de retransmisión esté ajustado a 'default'.
; El valor por defecto es sí.

AllowPublicRelay=Yes

AllowPublicRelay especifica si su servidor va a ser listado o no en el directorio SHOUTcastpublic si el servidor del que está realizando retransmisión está ya listado. Dese cuenta de que PublicServer puede anular el efecto de este ajuste.

Listado de Código 1.29: Ajustando MetaInterval


; MetaInterval especifica cada cuanto, en bytes, los metadatos son
; enviados.
; Debería dejar este ajuste al valor por defecto de 32768, aún así
; se ofrece esta opción.

MetaInterval=32768

Simplemente déjelo como está.

Configuración del acceso

Listado de Código 1.30: Estableciendo el tiempo máximo para el oyente


; ListenerTimer es un valor en minutos el tiempo máximo permitido para
; un oyente. Si alguien excede este tiempo, será desconectado. Cuando
; está sin definir, no hay límite. El valor por defecto es no definido.
; ListenerTimer=600

No estoy seguro de porqué necesitaría este ajuste. Básicamente, si un usuario está activo durante demasiados minutos se procede a su desconexión. El único caso que se me ocurre es expulsar a los usuarios ociosos o personas que crea que deberían estar haciendo otras cosas en lugar de escuchar su emisión. El valor se indica en minutos.

Listado de Código 1.31: Ajustando el fichero de prohibiciones


; BanFile es el fichero de texto que lee y escribe sc_serv para
; indicar los clientes a los que no les está permitida la conexión
; a este servidor. Es generado automáticamente a través de la
; interfaz web.
; BanFile=sc_serv.ban

Este es el nombre del fichero que contiene la lista de clientes a los que no está permitido el acceso a su servidor. El nombre por defecto es sc_serv.ban, sin embargo puede usar el cualquier nombre que quiera en este ajuste.

Listado de Código 1.32: Ajustando la lista


; RipFile es el fichero de texto que lee y escribe sc_serv para
; indicar las direcciones IP de los clientes a los que *SIEMPRE* se
; les permite la conexión al servidor (útil para servidores de
; retransmisión).
; Este fichero es generado automáticamente a través de la interfaz
; web. Note que si su servidor está LLENO y alguien con una
; dirección IP reservada se conecta, el DNAS forzará la expulsión de
; la persona que más tiempo lleva escuchado para hacer hueco a la
; nueva conexión.
; RipFile=sc_serv.rip

Tan desalentador como suena, Rip realmente significa "Reserved IP" (IP Reservada). Úselo para que sus amigos y otras personas que considere más importantes que otros usuarios. Si actualmente está emitiendo al mayor número posible de usuarios y uno de sus miembros "rip" intenta conectarse, el servidor echará a la persona que más tiempo lleve escuchando la emisión.

Listado de Código 1.33: Ajuste si únicamente quiere que los usuarios Rip accedan a su servidor


; RipOnly, cuando está ajustado a sí, únicamente se permitirán
; direcciones IP listadas en las direcciones IP reservadas para
; conexión y retransmisión. Todas las demás conexiones para escuchar
; serán denegadas.
; Esto es útil únicamente para usuarios cuyo propósito es ofrecer su
; servidor como fuente primaria de todos los servidores de
; retransmisión públicos. Ajustando este valor a sí, también se
; fuerza al servidor a trabajar en modo privado, ya que listar a
; este servidor en el directorio no tendría ninguna aplicación. El
; valor por defecto es no.
; RipOnly=No

Esto permite que únicamente los miembros Rip se conecten a su servidor. SHOUTcast. Puede usarlo para emisiones de radio privadas o para hacer que ciertos retransmisores puedan acceder a su servidor.

Configuración masiva

Listado de Código 1.34: Ajustando las variables Unique


; Unique: asigna un nombre de variable para ser usada en cualquier
; item de configuración que apunta a un fichero. Es útil en servidores
; corriendo servidores SHOUTcast que tienen unos parámetros de
; configuración similares, exceptuando nombres de ficheros de
; registro, nombres de fichero de prohibición, etc. Cualquier
; parámetro que toma un nombre de fichero puede incluir el carácter $,
; el cual será sustituido por la variable asignada aquí. Recuerde que
; la variable única puede usárse sólo después de su definición, por lo
; que no debe tartar de usar esta variable en la definición de otra
; antes de definirla. Por ejemplo, podría hacer lo siguiente:
; Unique=mi_servidor
; y entonces definir Log=/usr/local/SHOUTcast/$.log en un fichero de
; configuración incluido. El valor por defecto es Unique=$, de modo que
; por defecto cualquier fichero con un $ en el nombre, no sustituirá
; nada.

Básicamente, si está corriendo muchos servidores SHOUTcast, sería una verdadera molestia cambiar todos los registros, prohibiciones, etc. a algo único para cada configuración. En lugar de esto, puede ajustar Unique al algún valor y el símbolo $ será reemplazado al valor que se haya ajustado en Unique. Por ejemplo, si un fichero contiene Unique=Jazz y otro contiene Unique=Rock, entonces Log=/var/log/$.log produciría /var/log/Jazz.log en un fichero de configuración y /var/log/Rock.log en el otro fichero. Así es más simple cuando se trabaja con muchos servidores SHOUTcast con configuraciones similares.

Listado de Código 1.35: Ajustando variables comunes de configuración


; Include: indica a sc_serv que lea del fichero de configuración
; nombrado *en el punto de inserción de la sentencia Include*, y lo
; procese como si fuera parte del fichero original. Note que los
; parámetros de configuración en el fichero de configuración del
; DNAS se procesan en orden, del primero al último, por lo que si un
; item es definido dos o más veces, la última definición será la que
; tendrá valor. Por esta razón, normalmente es buena idea usar los
; Includes en primer lugar en un fichero de configuración.
; Ejemplo:
; Include=/usr/local/SHOUTcast/common.conf
; El valor por defecto no es aplicable a esta variable.

Si está corriendo varios servidores SHOUTcast y desea usar variables de configuración comunes sin tener que ajustarlas en cada fichero de configuración, puede ajustarlo para que apunte a un fichero que contiene los ajustes que son comunes a varias configuraciones.

Optimizando la configuración

Listado de Código 1.36: Ajuste el número de CPUs utilizadas


; CpuCount es usado para limitar explícitamente al DNAS sobre el
; uso de procesadores en sistemas multiprocesador. Por defecto,
; SHOUTcast crea un hilo de ejecución para cada procesador que
; detecta en el sistema, y asigna oyentes de forma igualitaria
; a través de todos los hilos. En el caso en que SHOUTcast no
; determine correctamente el número de CPUs en su servidor, o si
; por cualquier razón quiere forzar a DNAS a que no use otros
; procesadores, puede indicarlo aquí.
; El comportamiento por defecto es usar tantos procesadores como
; detecte el DNAS en su sistema.
; CpuCount=1

En sistemas con múltiples CPUs, use este ajuste para forzar al servidor SHOUTcast para que use un número CpuCount de procesadores. El valor por defecto es asignar un hilo de ejecución a cada procesador, y tener oyentes en todos los hilos. Si lo ajusta a un valor inferior al número total de procesadores, hará que los procesadores libres se dediquen a otras tareas.

Listado de Código 1.37: Ajustando el hueco de envío de datos


; Sleep define la granularidad de los hilos de ejecución de los
; clientes para el envío de datos. En DNAS 1.7.0, para cada hilo
; de cliente, se enviarán hasta 1,024 bytes de datos por cada
; socket (o menos dependiendo de la ventana disponible), y a
; continuación se duerme durante el intervalo indicado en esta
; opción antes de repetir el proceso completamente.
; Note que si se hace esta valor más pequeño, incrementara de forma
; notable el uso de CPU en su máquina. El incremento, reduce el uso
; de la CPU, sin embargo, si se incrementa demasiado se puede correr
; el riesgo de que aparezcan saltos. El valor que parece óptimo para
; una transmisión a 128kbps es 833 (833 microsegundos por cada
; muestreo de cliente) en nuestros laboratorios de pruebas.
; No recomendamos ajustar este valor a menos de 100, o a alguno mayor
; que 1,024. Si su máquina es lenta, ajuste a un valor bajo para
; corregir los saltos.
; El valor por defecto es 833.
; Sleep=833

El servidor SHOUTcast usará el valor Sleep para determinar el hueco entre cada envío de datos. A mayor valor, mayor hueco, al menor valor menor hueco y por lo tanto el servidor SHOUTcast usará más tiempo de CPU. En sistemas lentos, tal y como se indica, podría querer bajar este valor de modo que el servidor SHOUTcast envíe los datos más y más frecuentemente a los usuarios. Lo mejor es dejarlo como está.

Listado de Código 1.38: Ajustando la salida XML


; CleanXML elimina algunos espacios y saltos de línea de la salida XML
; que confunden a algunos analizadores XML (no muy bien escritos). Si
; obtiene errores al renderizar XML, intente activar esta opción. El
; valor por defecto es no (desactivado).
; CleanXML=No

Probablemente no tenga que preocuparse demasiado de este ajuste, a menos que use analizadores XML propios para crear estadísticas de su servidor. Si el analizador XML no puede manejar espacios en blanco y avances de línea en XML, ajuste este valor a Yes, y debería funcionar.

Conclusiones de la configuración

Su servidor SHOUTcast debería estar configurado ahora. Para empresas que usan SHOUTcast, le recomiendo activar el registro WC3, ya que puede ser analizado fácilmente y usado para crear sus propias estadísticas. Debería también activar la variable AdministratorPassword. Probablemente desee activar alguna otra opción de configuración si está creando varios servidores SHOUTcast.

Con la configuración ya realizada, nos centraremos ahora en hacer que SHOUTcast esté arriba y funcionando. Comenzaremos con una simple emisión para un comienzo suave, luego trabajaremos con SHOUTcast Trans (ya que hay algún otro elemento implicado).

2.  Comenzando con el servidor SHOUTcast

Ajustando la emisión bajo demanda

La emisión bajo demanda, tal como se describe en el capítulo de configuración, establece automáticamente listas de música con los archivos mp3 a servir en el directorio de contenido. El ebuild del servidor SHOUTcast establece el directorio para todos los mp3 a servir en /opt/SHOUTcast/content. Comencemos creando una instancia sencilla de emisión bajo demanda de mp3.

En primer lugar, necesitaremos obtener contenido mp3 de algún lugar y ponerlo en el directorio de contenidos. Tomaremos como ejemplo el fichero ejemplo.mp3 de un directorio /Mp3 que acabamos de crear.

Listado de Código 2.1: Copiando un mp3 al directorio de contenidos

# cp ejemplo.mp3 /opt/SHOUTcast/content/
# cd /opt/SHOUTcast/content/
# ls
ejemplo.mp3

Ahora el fichero ya está copiado. Necesitamos arrancar ahora nuestro servidor SHOUTcast para que el fichero pueda ser accedido.

Listado de Código 2.2: Starting up the SHOUTcast Server

# /etc/init.d/shoutcast start
 * Starting Shoutcast Server...
*******************************************************************************
** SHOUTcast Distributed Network Audio Server
** Copyright (C) 1998-2004 Nullsoft, Inc.  All Rights Reserved.
** Use "sc_serv filename.ini" to specify an ini file.
*******************************************************************************
                                                                         [ ok ]

El pequeño letrero es para asegurarse de que ningún paso termina mal (esto es, nos aseguramos de que el servidor ha arrancado correctamente). ¡Su servidor SHOUTcast está ahora funcionado! Debido a la naturaleza del contenido bajo demanda, únicamente se podrá acceder desde un navegador Web. MPlayer o cualquier otra herramienta no será capaz de conectar a la emisión. Yo uso kmplayer para acceder a la emisión directamente desde mi navegador. Puede ver el resultado en la siguiente imagen.


Ilustración 2.1: Contenido bajo demanda

Fig. 1: OnDemandContent

Algunas personas tienen configurado Audacious para que maneje sus tipos mime, de modo que su navegador puede lanzar Audacious para reproducir el contenido de la emisión. Ahora que puede emitir contenidos bajo demanda, trabajaremos con SHOUTcast Trans para crear un auténtico servidor de emisiones de radio.

3.  Ajustando SHOUTcast Trans

Introducción a SHOUTcast Trans

SHOUTcast Trans es el nombre corto de SHOUTcast Trans(codificador), y es capaz de transcodificar ficheros mp3 a mayor o menor relación de bits. SHOUTcast Trans trabaja emitiendo los mp3 de una lista de reproducción especificada en el fichero de configuración. Comenzaremos ajustando la configuración de SHOUTcast Trans, de forma que podamos tener una buena estación de radio. Abriremos el fichero de configuración de SHOUTcast Trans, que está localizado en /etc/shoutcast/sc_trans.conf.

Listado de Código 3.1: Abriendo el fichero de configuración de SHOUTcast Trans

(En primer lugar instale SHOUTcast Trans)
# emerge shoutcast-trans-bin
(A continuación abra el fichero de configuración de SHOUTcast Trans)
# vi /etc/shoutcast/sc_trans.conf

Ahora que tenemos el fichero de configuración de SHOUTcast Trans abierto, empezaremos a configurar la emisión fuente.

Configurando SHOUTcast Trans

Listado de Código 3.2: Ajustando la lista de reproducción


; PlaylistFile (requerido INCLUSO SI ESTAMOS RETRANSMITIENDO) - fichero
; que contiene la lista de reproducción a transmitir (para crearlo, use
; el comando: find /camino/al/directorio/mp3 -type f -name "*.mp3" >
; fichero_listadereproduccion.lst

PlaylistFile=/opt/SHOUTcast/playlists/playlist.lst

Este ajuste le indica a SHOUTcast dónde encontrar los contenidos de la emisión. Este ajuste requiere que exista el fichero, por lo que, adelante, cree una lista de reproducción. Crearé una auténtica de mi directorio /Mp3 al que me refiero anteriormente.

Listado de Código 3.3: Creando la lista de reproducción

# find /Mp3 -type f -name "*.mp3" > /opt/SHOUTcast/playlists/playlist.lst

Ahora que la lista de reproducción está creada, apuntamos al fichero de configuración y SHOUTcast Trans sabrá que ficheros debe emitir.

Listado de Código 3.4: Ajustando la dirección IP y el puerto


; Serverip/ServerPort es el servidor destino al que enviar las
; peticiones.

Serverip=127.0.0.1
ServerPort=8000

Este ajuste indica dónde enviar el contenido de la emisión. En esta guía será la dirección IP y puerto del servidor SHOUTcast que se definió anteriormente (DestIP y PortBase).

Listado de Código 3.5: Ajustando la contraseña del servidor SHOUTcast


; Password es la contraseña del sc_serv al que está enviando.

Password=contraseña_que_define_en_sc_serv.conf

Es la misma contraseña que se usó en la configuración del servidor SHOUTcast.

Listado de Código 3.6: Ajustando la información de su emisión


; StreamTitle/URL/Genre define los datos que aparecen en el directorio
; y en la información de la transmisión.

StreamTitle=Chris Gentoo Beats
StreamURL=http://www.gentoo.org
Genre=¡JPOP Electrónica y Más!

Aquí se ajusta el título de su emisión (por ejemplo Radio Uno), el URL (es decir http://www.radio-uno.com), y el género (por ejemplo Electrónica Trance Tribal).

Listado de Código 3.7: Ajustando el fichero de registro


; Logfile opcionalmente denota el fichero de texto en el que se
; registrará sc_Trans. El comando kill -HUP sobre el proceso del servidor
; forzará a cerrar y reabrir este fichero (pero también terminará el
; registro a la consola).

LogFile=/var/log/sc_Trans.log

Esto apuntará al fichero de registro de SHOUTcast Trans. Todo el registro irá aquí.

Listado de Código 3.8: Ajustando el barajeo de canciones


; Shuffle. Baraja la lista de reproducción.

Shuffle=1

Decida si quiere que su lista de reproducción reproduzca de forma aleatoria las canciones de su lista en cada momento. La mayoría ajustan este valor a 1. Si va a aceptar peticiones de canciones ajústelo a 0 y le explicaré cómo hacerlo más adelante.

Listado de Código 3.9: Ajustando la emisión


; Bitrate/SampleRate/Channels: valores recomendados:
; 8kbps 8000/11025/1
; 16kbps 16000/11025/1
; 24kbps 24000/22050/1
; 32kbps 32000/22050/1
; 64kbps mono 64000/44100/1
; 64kbps stereo 64000/22050/2
; 96kbps stereo 96000/44100/2
; 128kbps stereo 128000/44100/2

Bitrate=128000
SampleRate=44100
Channels=2

; Quality se define entre 1 y 10. 1 es la mejor, 10 es la más
; rápida.

Quality=1

Bitrate ajusta la relación de bits de su emisión. Puede tomar valores desde 8000 (8kbps) a 128000 (128kbps). SampleRate ajusta la relación de muestreo de la emisión. Puede tomar cualquier valor entre 11025 (11025kHz) y 44100 (44100kHz). Channels ajusta el número de canales de su emisión. Puede tomar el valor 1 (mono) ó 2 (estéreo). Quality ajusta la calidad de la emisión. Esto de alguna manera es controlado por Bitrate/SampleRate/Channels. Aquí es donde tendrá que lidiar con la compresión de la emisión. El valor 1 le ofrece la mejor calidad, 10 le ofrece la mayor velocidad. ¡Tenga en mente la capacidad de su conexión cuando ajuste estos valores! Use la guía para hacerse una idea de las características que tiene que tener su mp3 cuando sea emisión.

Listado de Código 3.10: Configurando desvanecimientos cruzados


; Mode=0 para ninguno, 1 para 100/100->100/0, 2 para 0/100->100/0.

CrossfadeMode=1

; Longitud en milisegundos.

CrossfadeLength=8000

Esto ajusta la atenuación entre las canciones (en inglés: cross fading o atenuación cruzada). Ajustándolo a 0 desactivará esta característica. Si lo ajusta a 1, la canción 1 se atenuará y la canción 2 se intensificará. Si lo ajusta a 2, la canción 1 se intensificará y la canción 2 se atenuará. La longitud (CrossfadeLength) indica la duración de la atenuación.

Listado de Código 3.11: Activando el uso de ID3

UseID3=1

Aquí se decide si se quiere usar las etiquetas ID3 para información sobre el mp3.

Listado de Código 3.12: Ajustando el estado público del servidor


; Public determina si esta estación será mostrada o no en el
; directorio.

Public=0

Aquí se indica si las emisiones deben ser listadas públicamente cuando se retransmite a un servidor. ¡Recuerde que PublicServer en el fichero sc_serv.conf hará que se ignore esta opción!

Listado de Código 3.13: Ajustando la interacción del usuario


; Ponga información aquí para la interacción con el usuario
; (AOL IM, ICQ, IRC).

AIM=AIMHandle
ICQ=
IRC=SHOUTcast

Esta variable indica su información de contacto (el DJ). Puede indicar canales AIM o ICQ para petición de canciones o cualquier otra cosa. Igualmente puede indicar su propio canal IRC de forma que pueda interactuar con varios usuarios a la vez.

Conclusiones sobre la configuración de SHOUTcast Trans

¡Su SHOUTcast Trans ahora está preparado para emitir a su servidor SHOUTcast! Comenzaremos con la emisión de sus mp3.

4.  Comenzando con SHOUTcast Trans

Arrancando SHOUTcast Trans

Debido a que uso SHOUTcast Trans con el servidor SHOUTcast, tiendo a arrancar SHOUTcast Trans, que automáticamente arranca SHOUTcast (más fácil). Por lo que arrancaremos SHOUTcast Trans.

Listado de Código 4.1: Iniciando el SHOUTcast Trans y servidor SHOUTcast

# /etc/init.d/shoutcast_trans start
 * Starting Shoutcast Server...
*******************************************************************************
** SHOUTcast Distributed Network Audio Server
** Copyright (C) 1998-2004 Nullsoft, Inc.  All Rights Reserved.
** Use "sc_serv filename.ini" to specify an ini file.
*******************************************************************************
                                                  [ ok ]
* Starting Shoutcast Trans...                     [ ok ]

Escuchado la emisión SHOUTcast Trans

Ahora que tiene arrancado SHOUTcast Trans, comenzaremos a escuchar nuestra emisión. Yo uso MPlayer en este ejemplo para reproducir el stream.

Listado de Código 4.2: Escuchado su emisión

# mplayer -cache 1024 http://127.0.0.1:8000/
...
Playing http://127.0.0.1:8000/.
Connecting to server 127.0.0.1[127.0.0.1]:8000 ...
Name   : Chris Gentoo Beats
Genre  : ¡JPOP Electrónica y Más!
Website: http://www.gentoo.org
Public : no
Bitrate: 128kbit/s
Cache size set to 1024 KBytes
Connected to server: 127.0.0.1
Cache fill:  9.38% (98304 bytes)    Audio file detected.
==========================================================================
Opening audio decoder: [mp3lib] MPEG layer-2, layer-3
MP3lib: init layer2 and 3 finished, tables done
mpg123: Can't rewind stream by 156 bits!
AUDIO: 44100 Hz, 2 ch, 16 bit (0x10), ratio: 16000->176400 (128.0 kbit)
Selected audio codec: [mp3] afm:mp3lib (mp3lib MPEG layer-2, layer-3)
==========================================================================
Checking audio filter chain for 44100Hz/2ch/16bit -> 44100Hz/2ch/16bit...
AF_pre: af format: 2 bps, 2 ch, 44100 hz, little endian signed int
AF_pre: 44100Hz 2ch Signed 16-bit (Little-Endian)
AO: [oss] 44100Hz 2ch Signed 16-bit (Little-Endian) (2 bps)
Building audio filter chain for 44100Hz/2ch/16bit -> 44100Hz/2ch/16bit...
Video: no video
Starting playback...

Se ha recortado algo la salida. La variable -cache se ha usado para pasar por alto mis ajustes de búfer. Y ¡voilà! ¡ahora está escuchado su emisión! En el próximo capítulo le mostraremos cómo hacer algo más con su servidor SHOUTcast.

5.  Uso avanzado de SHOUTcast

Uso empresarial

Las empresas pueden usar SHOUTcast de varias formas:

  1. Use emisores de contenido bajo demanda para hacer más interesantes sus anuncios diarios.
  2. Tenga disponibles sus anuncios públicos en el momento en que ocurren, haga ver a sus clientes lo que sucede en su empresa ¡al momento! Entonces archívelos como contenido bajo demanda para futuras referencias.
  3. Haga entrevistas con medios emitidos y archívelos como contenido bajo demanda.

Hay más posibilidades de uso del servidor SHOUTcast para las empresas. ¡Use emisiones en directo para sustituir al viejo y aburrido texto!

Haciendo de DJ con SHOUTcast

El servidor SHOUTcast es uno de los más populares para los DJs nuevos y también para los veteranos. Para los que están empezando hay muchas formas de mejorar la experiencia del usuario con su servidor SHOUTcast. Tener una canción de introducción es muy importante. Le da al usuario una idea de lo que ofrece su estación. ¡Asegúrese de incluirla! Publique su servidor en yp.SHOUTcast.com (descrito en la sección de configuración del servidor de SHOUTcast) de forma que todo el mundo sepa quién es. Una de las cosas más importantes es ser capaz de oir las peticiones de sus usuarios. Para activar esta opción en primer lugar desactive Shuffle en sc_Trans.conf. Tenga preparadas, digamos, 10 canciones más o menos. Comience entonces a aceptar peticiones. Cuando alguien pida una canción, simplemente añádala al final de su lista de reproducción, y use este guión para controlar lo que SHOUTcast Trans hace con su lista de reproducción.

Listado de Código 5.1: djcontrol

#!/bin/bash

case "$1" in
  "reload")
    kill -s USR1 `cat /var/run/SHOUTcast_Trans.pid`
    ;;
  "next")
    kill -s WINCH `cat /var/run/SHOUTcast_Trans.pid`
    ;;
  *)
    echo "Comando inválido"
    ;;
esac

Cuando añada la canción a su lista de reproducción, le tendrá que indicar a SHOUTcast Trans que ésta ha cambiado con la nueva petición.

Listado de Código 5.2: Recargando la lista de reproducción

# djcontrol reload

Debería ahora hacer llegar a los usuarios que la petición de canciones está abierta. O, si lo prefiere, puede saltar canciones de la lista.

Listado de Código 5.3: Saltando canciones de la lista

# djcontrol next

Tenga cuidado en no saltar demasiado, ya que no hay control previo. Una vez que alcance la canción, la petición comienza. Normalmente espero a tener cinco peticiones más o menos antes de atenderlas. De esta forma no vuelve a comenzar. Si se queda sin peticiones y espera que en breve no las atenderá, entonces simplemente copie la siguiente sección de su lista de reproducción sobre las peticiones y recargue la lista de nuevo. Una vez que la canción actual termine, volverá a la nueva lista de reproducción.

Conclusión

Con esto termina el tutorial del servidor SHOUTcast y SHOUTcast Trans. Espero que saque partido de esta información y por favor, ¡envíeme un correo con cualquier comentario o sugerencia sobre esta página! ¡Disfrute de su nuevo servidor SHOUTcast!



Imprimir

Página actualizada 2 de noviembre, 2006

Sumario: Esta guía indica los pasos necesarios para configurar un servidor de emisión de radio con el servidor SHOUTcast y SHOUTcast Trans.

Chris White
Autor

Shyam Mani
Editor

José María Alonso
Traductor

Donate to support our development efforts.

Copyright 2001-2013 Gentoo Foundation, Inc. Questions, Comments? Contact us.