jueves, 30 de mayo de 2013

Configurar Servidor de streaming MPD para usar Alsaequal

Existe un pequeño problema al transmitir desde el servidor de streaming integrado a MPD, y ese es que la salida de audio la maneja por Hardware, es decir que tener una herramienta como Alsaequal, (ecualizador para el servidor de sonido Alsa), nos es intrascendente, ya que no lo toma en cuenta y el sonido sale tal cual esta en nuestro equipo.

Si queremos poder darle un poco de sabor a nuestra transmisión debemos cambiar la configuración de MPD, en /etc/mpd.conf modificamos:

audio_output {
 type  "alsa"
 name  "My ALSA EQ"
 device  "plug:plugequal" # optional
 format  "44100:16:2" # optional
# mixer_type      "hardware"      # optional
 mixer_device "default" # optional
 mixer_control "PCM"  # optional
 mixer_index "0"  # optional
}

Agregamos el servicio de mpd al grupo de audio:

# usermod -aG audio mpd

Si queremos revisar que nuestro usuario y mpd estan en la lista del grupo de audio:

# cat /etc/group | grep audio

Y listo!! ya tenemos ecualizador en nuestro servidor de streaming con MPD!!! PD.- Aquí el post original en Ingles.

Servidor de streaming con Debian y MPD, radio por internet.

MPD (Music Player Daemon) es un reproductor de musica por consola, liviano y de fácil acceso, aunque su único defecto (si se le puede llamar así) es que carece de un control de lista de reproducción, pero existen muchos programas que pueden controlarlo desde la consola o con interfaz gráfica.

Una de sus ventajas que se tiene es que se puede administrar vía LAN o Internet a traves del puerto 6600, en lo particular uso GMPC para administrarlo.

Y otra gran ventaja es que trae integrado un servidor de transmisión por http, para hacer streaming por la LAN o Internet, sin necesidad de otro servidor de Streaming como Icecast (que es otro rollo pero lo veremos despues).

El hardware necesario es minimo, lo he tenido trabajando con una pentium II a 333 MHz y 256 en RAM y disco duro de 8 GB, sin teclado, mouse y monitor. La instalación del sistema operativo es Debian Wheezy netinstall, en una instalacion mínima, solo el sistema base.

La instalación en si es muy sencilla, pero vamos a utilizar aptitude para corregir cualquier falta de paquetes necesaria.

Como requisitos es necesario tener instalado alsa o pulseaudio para el audio, lame y vorbis-tools para poder reproducir mp3 y ogg.

En mi caso solo lo hago con [b]alsa[/b]:

# apt-get install alsa-base alsa-oss alsa-source apmd alsa-utils linux-sound-base xapm 

# apt-get install lame vorbis-tools

Reiniciamos alsa para que tome la configuración:

 # /usr/sbin/alsa reload

Instalamos MPD:
# apt-get install mpd

Y vamos a crear las carpetas de configuracion de mpd:

$ mkdir /home/mi_usuario/.mpd

$ mkdir /home/mi_usuario/.mpd /playlist

Y les recomiendo que creen una carpeta en donde tengan la musica que quieren que se reproduzca pro mpd, en este caso creamos esta carpeta así:

$ mkdir /home/mi_usuario/musica

Y vamos a editar nuestro fichero de configuración de mpd.

# nano /etc/mpd.conf

Y vamos a cambiar las siguientes lineas y dejarlas de esta manera, favor de sustituir mi_usuario por el suyo:

music_directory "/home/mi_usuario/musica"

playlist_directory "/home/mi_usuario/.mpd/playlist"

db_file   "/home/mi_usuario/.mpd/tag_cache"

log_file  "/home/mi_usuario/.mpd/mpd.log"

pid_file  "/home/mi_usuario/.mpd/pid"

state_file  "/home/mi_usuario/.mpd/state"

sticker_file                   "/home/mi_usuario/.mpd/sticker.sql"

user    "mi_usuario"

Si queremos dejar solamente nuestro reproductor de uso local, en la siguiente linea la dejamos como viene:

bind_to_address  "localhost"

Si queremos transmitir nuestra musica cambiamos localhost por nuestra direccion ip local, (cambiamos "mi_direccion_ip" por el numero de nuestra dirección ip):

bind_to_address  "mi_direccion_ip"

Descomentamos la linea del puerto, (quitamos el signo de numero):

port    "6600"

Ahora la configuracion de salida por Alsa:

# An example of an ALSA output: 
#
audio_output { 
 type  "alsa" 
 name  "My ALSA Device" 
 device  "hw:0,0" # optional 
 format  "44100:16:2" # optional 
 mixer_device "default" # optional 
 mixer_control "PCM"  # optional 
 mixer_index "0"  # optional 
} 
#

La dejamos tal cual. Y si queremos transmitir por internet, la configuracion del servidor httpd seria esta:

# An example of a httpd output (built-in HTTP streaming server): 
# 
audio_output { 
 type  "httpd" 
 name  "Debiancast" 
 encoder "lame"   # optional, vorbis or lame 
 port  "8000" 
# quality  "5.0"   # do not define if bitrate is defined 
 bitrate  "128"   # do not define if quality is defined 
 format  "44100:16:1" 
}

De aqui lo importante, name es el nombre que le queremos dar a nuestro server de stream, y el encoder podemos usar vorbis si queremos reproducir ogg (por default)o lame si queremos reproducir mp3.

Y ¡listo! Ya terminamos la configuración de mpd. Ahora a crear la lista de reproducción esta la podemos configurar con Sonata, esto lo podemos hacer desde nuestro propio equipo o desde otro equipo en la red en caso de que nuestro servidor no tenga interfaz gráfica.

Con un click derecho del mouse debajo de la barra de reproducción aparece el submenu, entramos a preferencias y creamos un perfil, ahora llenamos la información:


Nombre: nombre_del_servidor
Servidor: direccion_ip
Puerto: 6600
Contraseña:
Directorio de Musica: (aqui siempre lo hace por defecto, segun la configuracion del mpd)


Como podemos ver nos aparece la musica o archivos de audio de nuestra carpeta que configuramos en mpd.conf, de ahi escogemos y hacemos nuestra lista de reproducción y podemos poner que se repita y que sea aleatoria.



Nos conectamos y listo! Ya estamos transmitiendo nuesta lista de reproducción por internet. Para poder escucharla podemos usar el winamp o el audacious, en agregar, seleccionamos URL o dirección IP y la ponemos de este modo:



http://direccion_ip:8000

Esto significa que se esta transmitiendo desde la dirección ip del servidor
por el puerto 8000.


Para poder escucharlo desde fuera de nuestra red local, tenemos que mapear el puerto en nuestro router, es decir redireccionar las llamadas al puerto 8000 a la dirección ip de nuestro servidor en el mismo puerto (8000). Y además tenemos que configurar un cliente de DNS dinámico como no-ip, creamos un host en no-ip e instalamos el cliente en nuestro servidor y con eso es suficiente.