Airplay streaming sin Airport Express ni Apple TV : Shairport!

Ver el tema anterior Ver el tema siguiente Ir abajo

Airplay streaming sin Airport Express ni Apple TV : Shairport!

Mensaje  Jaime2010 el Vie 13 Jun 2014 - 20:17

Habitualmente los Apple Adictos me hacen sonreír pero si fuéramos justos, para i-cacharros, un servidor: 3 ipods (classic, touch, y un shuffle-rockboxeado que es el que me metió en este berenjenal porque me lo regalaron en el trabajo), un ipod hi-fi (el altavoz con dock que es el abuelete de los zepelines, dock stations y consolettes, vaya nombre de juguete erótico...), un ipad, un mac mini (aunque con piel de oveja ya que está con linux) y ahora un macbook air... aún intacto.

Airplay es el mecanismo de streaming para conectar las i-cosas y ordenadores apple a los cacharros Airport Express y Apple TV. Como siempre una solución cerrada, software y hard apple, hasta que un tal DVD Jon, también responsable en este mundo de las des-encriptaciones, de descifrar el mecanismo de protección de los DVD, del DRM de Itunes, del protocolo de Itunes Store, ... vaya mala bestia..., se compró un cacharro Airport y ... lo dejó en bolas y abrió al mundo el código necesario para replicar el mismo modelo de streaming por Software sin necesidad de un hardware o software apple, emisor o receptor: JustePort http://nanocr.eu/software/justeport/

Desde entonces el tiempo ha pasado y han salido "forks", esto es variaciones de justeport tanto para enviar como para recibir, y hasta soluciones comerciales de software como airfoil, airserver, reflector, etc. Junto con licencias de hardware en receptores de todo tipo.

Curioso, he investigado como hacer que mis i-cacharros se conecten a la plataforma de audio servidora que tengo hoy y la solución es una variación de justeport, llamado Shairport, un plugin de LMS, Sox y un loopback de audio por software.

En general hay versiones de cada cosa para cada sistema operativo, yo lo hice para Linux y si puedo, mostraré la misma opción para OS X y Windows, al menos lo esencial que debiera ser: Server Airplay, Sox y Loopback para convertir un ordenador en un receptor Airplay.

Usos, desde el ipad o el macbook :

  • Buscar en la tienda favorita y escuchar los samples de los discos por tu equipo
  • Streaming de youtube
  • Itunes (ugh...) enviando música en calidad CD a otro servidor no Apple
  • Spotify
  • Etc


Este es el objetivo puesto en un diagrama



Última edición por Jaime2010 el Vie 13 Jun 2014 - 20:21, editado 1 vez

Jaime2010
Grand Master
Grand Master

Cantidad de envíos : 3935
Localización : Santiago de Chile
Fecha de inscripción : 31/05/2010

Volver arriba Ir abajo

Re: Airplay streaming sin Airport Express ni Apple TV : Shairport!

Mensaje  Jaime2010 el Vie 13 Jun 2014 - 20:18

Linux

Esta configuración me costó..., pero ahora suena perfecto... así que aprovechad que son al menos 3 noches hasta altas horas de la madrugá dando cabezazos a la pared...

Shairport 2.0

No vale con la version clásica de Shairport, bueno para ser justos, si sirve pero tiene unos tiempos de latencia bestiales, es decir hasta un minuto de diferencia desde que das el play hasta que sale la música por los altavoces. Esto en la configuración con LMS, es probable que LMS le esté agregando algo que no logro disectar o entender por qué: si funciona en forma individual este tiempo es bastante aceptable.

También probé Shairplay, pero este tiene un problema ahora de sincronización, es decir que empieza a sonar recortado por problemas de timing, lo mas cercano a un problema de jitter a lo bestia. Para hacer mas descorazonador el lío,  el problema es aleatorio. Puede sonar muy bien por un tiempo y después ... horroroso.

El que vale es la la version 2.0 de Shairport, que se está distribuyendo con las Raspberry, en el caso de Linux hay que compilar lo que puede echar para atrás a muchos, pero recomiendo probar, es un sistema simple y ya por si bien integrado.

Yo utilizo Ubuntu, se descarga primero el Git, el programa de gestión de versiones y repositorio, esto desde una aplicación Terminal

Código:
sudo apt-get install git

Luego bajamos el código fuente con el comando

Código:
git clone https://github.com/mikebrady/shairport-sync.git

vamos al directorio copiado desde el repo

Código:
cd shairport-sync

Nos aseguramos de tener lo minimo para compilar, esto instala la tool-chain de compilación

Código:
sudo apt-get install build-essential

Luego simplemente seguimos las instrucciones desde https://github.com/mikebrady/shairport-sync

Primero las dependencias

Código:
apt-get install avahi-daemon autoconf libtool libdaemon-dev libssl-dev libavahi-client-dev libasound2-dev

Luego el proceso de configuración para compilar y la compilación con make, si todo va bien debierais tener generado el ejecutable shairport, en el mismo directorio

Código:
autoreconf -i

./configure --with-alsa --with-avahi

make

Por último instalamos, quedará por defecto en /usr/local/bin

Código:
sudo make install

SOX

Sox lo utilizamos como tranfer hacia el dispositivo de audio o como en el caso de LMS para leer los datos recibidos por shairport, instalar

Código:
sudo apt-get install sox

Loopback

Un loopback es un dispositivo de audio virtual que ofrece un puerto de entrada y otros (s) de salida, todo lo que llegue por el puerto de entrada es direccionado al de salida. Asi se puede implementar procesos de escritura/consumo o de intercomunicación de procesos de audio.

En el caso de Linux existe una alternativa integrada en la arquitectura base alsa y es alsaloop, la verdad no estoy seguro porque hace mucho que instale alsa, pero creo que basta con

Código:
sudo apt-get install alsa-base

Y teniendo una versión actualizada del kernel linux, estamos.

Luego simplemente desde la misma linea de comando, cargar alsaloop

Código:
sudo modprobe snd-aloop

Ahora esta disponible un dispositivo de entrada y otro de salida que podemos utilizar en el experimento, probar con el comando "aplay -l"

En mi caso la salida es la siguiente:

Código:
tarjeta 3: Loopback [Loopback], dispositivo 0: Loopback PCM [Loopback PCM]
  Subdispositivos: 7/8
  Subdispositivo #0: subdevice #0
  Subdispositivo #1: subdevice #1
  Subdispositivo #2: subdevice #2
  Subdispositivo #3: subdevice #3
  Subdispositivo #4: subdevice #4
  Subdispositivo #5: subdevice #5
  Subdispositivo #6: subdevice #6
  Subdispositivo #7: subdevice #7
tarjeta 3: Loopback [Loopback], dispositivo 1: Loopback PCM [Loopback PCM]
  Subdispositivos: 8/8
  Subdispositivo #0: subdevice #0
  Subdispositivo #1: subdevice #1
  Subdispositivo #2: subdevice #2
  Subdispositivo #3: subdevice #3
  Subdispositivo #4: subdevice #4
  Subdispositivo #5: subdevice #5
  Subdispositivo #6: subdevice #6
  Subdispositivo #7: subdevice #7

Entonces, tenemos
Tarjeta 3, dispositivo 0 como entrada
Tarjeta 3, dispositivo 1 como salida

Las direcciones son intercambiables,

Lo habitual en el caso de alsa para referirse a lo anterior en forma directa sin mixer,  es
hw 3,0
hw 3,1

Vamos allá

Juntando todo

Abrimos dos aplicaciones Terminal ejecutamos en la primera

Código:
shairport -o alsa -- -dhw:3,0

Esto hace que shairport escuche los envíos airplay que hagan los dispositivos conectados y simplemente traspase el audio al dispositivo hw:3,0 que como vimos anteriormente conecta a hw:3,1

Luego en el segundo Terminal, ponemos a sox a escuchar por el dispositivo hw:3,1 y la salida la enviamos al dac o dispositivo que mejor nos acomode

Código:
sox -q -t alsa hw:3,1 -t alsa hw:2,0

Y con ello debiéramos ser capaces de escuchar por la salida hw:2,0 que en mi caso es el dac.

Alguien puede preguntarse por qué, simplemente mandar desde el shairport al dac, así:

Código:
shairport -o alsa -- -dhw:2,0

En efecto, así suena algo, pero mal, no se bien por qué, sonaba muy bajito y distorsionado (encoding, sample rate ...)

Con sox ningún problema.

En este momento si usais por ejemplo el ipad y spotify podríais enviar el sonido al equipo principal por wifi



LMS

Para que LMS reconozca a un dispositivo airplay se utiliza un componente de terceros llamado WaveInput, que aunque sirve en este caso para hacer una captura de sonidos del sistema (una especie de monitor de dispositivos locales) en este caso lo utilizamos para leer desde nuestro loopback de salida. Sólo para Linux, sorry.

Se instala desde la consola de configuración de LMS, Configuracion->Complementos

Lo primero es incluir el repositorio de BPA, el autor del plugin: En Complementos al final de la página en "Repositorios adicionales" incluir el siguiente, http://bpaplugins.googlecode.com/svn/trunk/repo.xml

Click al botón Aplicar y si no recuerdo mal es necesario Reiniciar el LMS.

A continuación configuramos Sox para que lea nuestro loopback, puesto mas arriba. WaveInput simplemente "sugiere" a LMS un nuevo tipo de archivo, los .wavin, y como tal se pueden generar reglas de conversión y transcodificacion vía custom-convert para este tipo de archivo.

El custom-convert.conf de WaveInput reside en el mismo directorio del plugin, en el caso de Ubuntu editamos el mismo desde la ruta:

Código:
sudo gedit /var/lib/squeezeboxserver/cache/InstalledPlugins/Plugins/WaveInput/custom-convert.conf

Eliminamos la referencia a ecasound desde la regla "wavin flc * *" , he decidido convertir a flac lo que llegue a wavin.

Código:
wavin flc * *
       # R
       /usr/bin/sox -q --ignore-length -t alsa hw:3,1 -r 44100 -b 16 -c 2 -t flac - 2> /var/log/squeezeboxserver/wavein.log

Observaciones

/usr/bin/sox : debe ser la ruta completa a sox, esto porque si usamos [sox] , lo habitual, LMS utiliza el sox que trae en su propia distribución. Problema, este está "capado" de integración con dispositivos (-t alsa) lo cual es razonable ya que solo lo utiliza para  conversión de formatos. Esto que se escribe tan rápido, me costó dos noches hasta la madrugada volviéndome loco porque desde la linea de comandos funciona y desde el LMS no, así que mucho cuidado...

--ignore-length : necesario para evitar que Shairport se caiga con un error de sampling (44 a 48khz)

-t alsa hw:3,1 : le indicamos que el input es el dispositivo loopback

-t flac - : la salida a los players convertida a flac


Bien solo falta activar el WaveInput, esto se hace creando un Favorito en LMS, pinchad Favoritos y editar con el icono del Boli a la derecha, info mas abajo



Click en "Favorito nuevo" y llenar con la siguiente información

Nombre : Airplay ( o el que os guste mas)
URL : wavin:default (esto es obligatorio)

Salvar

Y es todo....

A continuación seleccionar Favoritos -> Airplay -> Play en el LMS debiera aparecer lo siguiente:



Lo que esta ocurriendo es que sox esta leyendo el loopback (configurado en el custom-convert) y enviando al player Squeezelite en este caso.

Recordar que Shairport debe estar corriendo:

Código:
shairport -o alsa -- -dhw:3,0

En este momento debiera aparecer en vuestros cacharros apple el dispositivo '"tu equipo" Shairport Sync'

Ejemplo, Macbook enviando todos los sonidos del sistema a Shairport



Itunes idem (Attention Deficit.. discazo)


Limitaciones

Obviamente, solo audio, no video
Latencia, entre 2 y 7 segundos, para la mayoría de las aplicaciones aceptable
Entre cambio de dispositivos, puede ser necesario dar Play de nuevo al Favorito Airplay. Produce un reset y nueva subida de sox.
En algún caso me dio un lio que no era capaz de reproducir el sonido desde el macbook pero si desde el ipad, o al reves... restart el que no responda.

Conclusión

Me he divertido, he aprendido y ahora tengo una funcionalidad nueva e interesante.
Lo uso para pasar alguna cosa desde el ipad al equipo, un nuevo juguete
Ojala le sirva a alguien mas


Última edición por Jaime2010 el Sáb 14 Jun 2014 - 11:16, editado 4 veces

Jaime2010
Grand Master
Grand Master

Cantidad de envíos : 3935
Localización : Santiago de Chile
Fecha de inscripción : 31/05/2010

Volver arriba Ir abajo

Re: Airplay streaming sin Airport Express ni Apple TV : Shairport!

Mensaje  Jaime2010 el Vie 13 Jun 2014 - 20:18

OS X

La forma mas sencilla que he encontrado para convertir un mac en un receptor airplay de audio y video en este caso es XBMC

Aunque no es la misma idea, ya que en el caso de Linux he planteado integrar con algo muy atómico y que pueda participar con otros (LMS). Por otra parte no quiero que sea necesario bajar un compilador para tener shairport por lo que en principio lo descarto, aunque se puede hacer.

En fin sigue siendo una buena solución aunque mas invasiva indudablemente

XBMC lo encontrais aqui http://xbmc.org/download/

Y una vez instalado ir a System -> Settings y habilitar el servidor Airplay que ya trae incorporado, usad los i-cacharros para enviar a XBMC.



Última edición por Jaime2010 el Sáb 14 Jun 2014 - 13:14, editado 2 veces

Jaime2010
Grand Master
Grand Master

Cantidad de envíos : 3935
Localización : Santiago de Chile
Fecha de inscripción : 31/05/2010

Volver arriba Ir abajo

Re: Airplay streaming sin Airport Express ni Apple TV : Shairport!

Mensaje  Jaime2010 el Vie 13 Jun 2014 - 20:18

Windows

Mi configuración y pruebas es para WIN7

En este caso existen recursos libres para hacer algo parecido a Linux, notar que estoy centrado en hacer las pruebas con software libre que cualquiera pueda bajar y utilizar, aunque las alternativas comerciales no son caras.

Shairport4w

En este caso la clave es esta variación de Shairport para plataforma Windows que lo bajais de aqui http://sourceforge.net/projects/shairport4w/

No lo dice en ninguna parte pero es un requisito tener el servicio Bonjour de Apple y la manera mas sencilla es bajando e instalando Itunes, si teneís una version mas antigua de Itunes lo recomendable es usar la ultima. Tuve algunos líos de conexion y creo que era por ello, después de instalar la ultima versión se acabaron los problemas. Si alguien no soporta itunes creo que existe la manera de bajar solo el servicio Bonjour pero no lo he intentado.

Una vez obtenido Shairport4w hay que ejecutar simplemente en donde lo bajasteis, no hay instalación.

Es muy directa la interfaz que tiene, asegurar en "Advanced" que seleccionáis el dispositivo de salida adecuado. En mi caso lo tengo saliendo por la tarjeta Alesis IO2.



Y ya lo tenéis... a que es fácil.

Ahora con la opción de integración con Loopback

Sox

Lo mismo que con Linux. A mi me gusta sox por su versatilidad, si alguien quiere usar otra herramienta que permita hacer line-in (esto es obtener la salida de un dispositivo o grabador) adelante. Imagino que con Audacity por ejemplo se puede hacer lo mismo.

Sox se baja desde aquí http://sox.sourceforge.net/

En Windows Sox queda en "C:\Archivos de Programa\Sox-14-x-x" pero no queda "visible" desde la linea de comando, o lo incluis en la variable ambiental PATH o simplemente lo ejecutais con el nombre completo así "C:\Archivos de Programa\Sox-14-x-x\sox"

Loopback

Utilizaremos un programa freeware http://vb-audio.pagesperso-orange.fr/Cable/ que agregará los dispositivos virtuales necesarios para hacer el loopback.

Este es un cambio a nivel de drivers por lo que es necesario reiniciar el sistema para que se efectúe.

Una vez hecho tendremos dos nuevos dispositivos Cable Input y Cable Output que nuestros programas de audio pueden utilizar, pantallas del icono Speaker en el Tray que muestra los dispositivos mencionados



Juntando todo

Muy sencillo

Shairport4w en Edit -> Advanced... se cambia el dispositivo de salida al Cable Input.

Luego desde un terminal (menu Start->cmd) os moveis hasta el directorio Sox y se ejecuta leyendo el Loopback (Cable Output) y escribiendo a ... donde sea, un archivo, el dac, otro dispositivo, un LMS, etc. Jugad.

Código:
cd "c:\Program Files\sox-14-4-1"
sox -t waveaudio "CABLE Output (VB-Audio Virtual Cable)" -t waveaudio "Speakers (io|2)"

Aquí una pantalla completa de todo el tinglado  



Multiples opciones, multiples sistemas, podeis jugar e ir probando distintas configuraciones

-THE END-


Última edición por Jaime2010 el Dom 15 Jun 2014 - 12:19, editado 1 vez

Jaime2010
Grand Master
Grand Master

Cantidad de envíos : 3935
Localización : Santiago de Chile
Fecha de inscripción : 31/05/2010

Volver arriba Ir abajo

Re: Airplay streaming sin Airport Express ni Apple TV : Shairport!

Mensaje  i-alex@live.com el Vie 13 Jun 2014 - 23:45

Multiplataforma!!!

i-alex@live.com
Master
Master

Cantidad de envíos : 1340
Edad : 47
Localización : Altafulla, Tarragona
Fecha de inscripción : 29/12/2009

Volver arriba Ir abajo

Re: Airplay streaming sin Airport Express ni Apple TV : Shairport!

Mensaje  Jaime2010 el Dom 15 Jun 2014 - 12:20

Y tanto ... sweatdrop 

A ver quien se anima.

Jaime2010
Grand Master
Grand Master

Cantidad de envíos : 3935
Localización : Santiago de Chile
Fecha de inscripción : 31/05/2010

Volver arriba Ir abajo

Re: Airplay streaming sin Airport Express ni Apple TV : Shairport!

Mensaje  hifiliberator el Dom 15 Jun 2014 - 19:32

Joder, menudo lío para escuchar música. No me extraña que el vinilo esté resurgiendo. Very Happy 

En cualquier caso, muchas gracias Jaime. Hello 

Saludos

hifiliberator
Master
Master

Cantidad de envíos : 2358
Localización : Madrid
Fecha de inscripción : 06/08/2009

Volver arriba Ir abajo

Re: Airplay streaming sin Airport Express ni Apple TV : Shairport!

Mensaje  pablopi el Dom 15 Jun 2014 - 22:46

Enoooorme tinglado, Jaime. Muchas gracias por el curro   Aplause 

Mi experiencia con Airplay se limita al Airport que tengo (ahora) en la cocina y al que mando audio desde iTunes o desde el iPad y a sendas instancias de XBMC (en Windows y Raspberry), que va fenomenal como receptor sin complicaciones tanto de audio como de vídeo.

Para OS X hay bastantes aplicaciones que actuan como receptores Airtunes, pero suelen ser de pago. Esta en concreto es excelente y también está disponible para Windows.

http://www.airserver.com

La prueba de 7 días es gratuita. La usé una temporada en un mini, junto con JRMC, y no se "pegaban" en absoluto a pesar de correr simultaneamente.

pablopi
Grand Master
Grand Master

Cantidad de envíos : 4883
Localización : Castellón
Fecha de inscripción : 21/06/2010

http://www.pablofelip.tk

Volver arriba Ir abajo

Re: Airplay streaming sin Airport Express ni Apple TV : Shairport!

Mensaje  Jaime2010 el Lun 16 Jun 2014 - 9:15

Bueno la complejidad varía.

Para escuchar algo es bastante sencillo de hacer, mirar el setup de windows.

Para virguerias como las del LMS hay que currar un poco. Yo lo hago porque además me divierte.

En efecto Pablo hay varias iniciativas comerciales como airserver.

Queda el proyecto complementario, hacer que otros dispositivos que no sean apple, se conecten a un cacharro Airport Express/Air TV, pero ese no lo tengo presupuestado  Ok

Jaime2010
Grand Master
Grand Master

Cantidad de envíos : 3935
Localización : Santiago de Chile
Fecha de inscripción : 31/05/2010

Volver arriba Ir abajo

Re: Airplay streaming sin Airport Express ni Apple TV : Shairport!

Mensaje  pablopi el Dom 22 Jun 2014 - 22:37

Por cierto, airplay de vídeo desde la app de youtube o netflix hacia xbmc roto:

http://forum.xbmc.org/showthread.php?tid=179961&pid=1713488#pid1713488

pablopi
Grand Master
Grand Master

Cantidad de envíos : 4883
Localización : Castellón
Fecha de inscripción : 21/06/2010

http://www.pablofelip.tk

Volver arriba Ir abajo

Re: Airplay streaming sin Airport Express ni Apple TV : Shairport!

Mensaje  Lord-ka el Mar 24 Jun 2014 - 10:54

Hola a todos:
En primer lugar; ""Muchas gracias por toda la información compartida y por el trabajo que te has tomado para ello""
Y ya en segundo lugar.
Lo leeré varias veces en casa con tranquilidad y espero entenderlo y no parecer demasiado "dinosaurio" en esto del sonido.
Yo soy de los que tengo en casa cuatro equipos de sonido montados y ahora estoy preparando un quinto equipo.
Todos ellos con sus correspondientes lector de Cd, amplificador ( suele ser previo y etapa ) y cajas de altavoces.
Y en una de las habitaciones ( léase mi "despacho leonera" ) he montado un iMac con canciones en iTunes.
Pero todas las canciones las he "metido" en el ordenador a través del lector de DVD del aparato con mis discos originales.
El sonido lo saco del ordenador a través del conector USB y o transformo mediante un DAC 24/96 con Upsampling interno a 192.
En su momento sacaba el sonido por conexión óptica a través del puerto óptico del iMac, pero no me convencía tanto el sonido del DAC. Me daba la sensación de que decodificaba peor y la calidad era inferior..
Bueno, yendo directamente "al grano".
Lo que indicas en todas tus informaciones es que puedo sacar música del ordenador sin tener que pasar por iTunes y distribuirla a otros aparatos que teóricamente no soporten los protocolos de iTunes y los software de Mac ??
Y la calidad, sigue siendo la misma ??? o es superior ???.
Porque debo ser raro en todo, pero sigo teniendo la sensación de que un Cd reproducido en un reproductor de Cd me suena mejor que cuando lo reproduzco desde el disco duro del ordenador. Y pienso que la calidad de grabación es la mas alta.
Normalmente meto los Cd en calidad Lossless, WAV ó AAC. Que se supone son formatos de ficheros sin ninguna pérdida.
En fin, me leeré, releeré la información y procuraré enterarme bien y además procuraré sacar provecho a todo el trabajo que te has tomado.
Y repito. MUCHAS GRACIAS.
Lord-ka

Lord-ka
Master
Master

Cantidad de envíos : 1727
Localización : Madrid
Fecha de inscripción : 22/08/2013

Volver arriba Ir abajo

Re: Airplay streaming sin Airport Express ni Apple TV : Shairport!

Mensaje  Jaime2010 el Mar 24 Jun 2014 - 11:37

Lord-ka escribió:
Lo que indicas en todas tus informaciones es que puedo sacar música del ordenador sin tener que pasar por iTunes y distribuirla a otros aparatos que teóricamente no soporten los protocolos de iTunes y los software de Mac ??
Y la calidad, sigue siendo la misma ??? o es superior ???.

Respecto a lo primero la respuesta es mas o menos. Lo que se evita es tener un receptor dedicado Apple (Airport Extreme o Apple Tv) y poder crear una red airplay con software y hw alternativo. Itunes, apps de audio en sistemas operativos apple, ipads e ipods siguen siendo los clientes preferentes y utilizan esta red como emisores de audio.

Respecto a lo segundo, aunque creo que el protocolo es lossless si utlizas archivos en formatos aiff o alac y por lo tanto identico a un cd al menos, no me meto en valoraciones subjetivas. Mi objetivo es tener una manera de conectar los cacharros ipod/mac, conveniente más que hifi, para lo último mi elección es otra. Suena "suficientemente" bien en cualquier caso

Jaime2010
Grand Master
Grand Master

Cantidad de envíos : 3935
Localización : Santiago de Chile
Fecha de inscripción : 31/05/2010

Volver arriba Ir abajo

Re: Airplay streaming sin Airport Express ni Apple TV : Shairport!

Mensaje  Contenido patrocinado Hoy a las 3:46


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.