Ho già parlato di AirPlay per Xbox; con questo termine si intende la possibilità di vedere su Xbox Media Center, quindi su PC o su TV, quello che vediamo su iPad o iPhone, sia esso un film memorizzato sul palmare oppure un filmato in streaming proveniente da Youtube o comunque supportato da iPad/iPhone. Il principio in questo caso è semplice, si tratta di un protocollo abbastanza semplice dove in pratica viene inviato al dispositivo remoto (sia esso l'Xbox o una Apple-TV) l'URL dello streaming, niente di più. Ho collaborato al primo prototipo di questo software a fine 2010 ma lo sviluppatore principale ha poi gettato la spugna, anche perché nel frattempo un progetto migliore, AirPlayer, ha preso vita e devo dire che funziona molto bene.
Diverso è lo streaming audio; ora si chiama sempre AirPlay ma è legato agli Airport della Apple, degli access-point/media-player molto belli e pratici, in grado non solo di estendere la nostra rete Wireless ma anche di funzionare come gateway audio. Basta infatti collegarli alle casse per poter suonare direttamente dai nostri iPhone la nostra musica locale. La differenza di protocollo è notevole, in questo caso è proprio l'iPhone a inviare la musica (e non il dispositivo a venirsela/andarsela a prendere) e a farlo in maniera criptata. Mai sottovalutare la determinazione di un programmatore, soprattutto se la propria ragazza si è portata via l'airport extreme come è successo all'ideatore di ShairPort che da poco più di 15 giorni ha trovato e messo a disposizione la chiave privata, insomma quello che rende criptato il traffico, dell'airport rendendolo quindi... emulabile.
Ne è uscito immediatamente un software in grado di far diventare media player AirPlay qualsiasi gingillo Linux (o Windows), ma le potenzialità non sono finite qui. Una delle cose possibili, tra le altre, è quella di poter utilizzare un server Linux come ponte per poter suonare in AirPlay su dispositivi di diffusione sonora largamente diffusi come Sonos oppure, nel mio caso, Squeezebox.
Quella che segue è la mia esperienza a partire da questo articolo originale. Per prima cosa si installa tutto il necessario, per Debian, per compilare ed eseguire ShairPort (scaricabile da qui) e quindi:
apt-get install libssl-dev libao-dev libcrypt-openssl-rsa-perl avahi-daemon avahi-utils pkg-config make ecasound libwww-perl
Una volta scaricati i sorgenti basta scompattarli e compilarli, ad esempio /opt/shareport. Sul proprio squeezeboxserver, già installato e funzionante, si installa il plugin WaveInput; se si utilizza SqueezeboxServer 7.6 ed il plugin è ancora in versione 7.5 è necessario modificare, barando, il file /var/lib/squeezeboxserver/cache/InstalledPlugins/Plugins/WaveInput/install.xml e sostituire 7.5.* con 7.6.*. E' anche necessario modificare il file custom-convert.conf:
cat <<\EOF >/var/lib/squeezeboxserver/cache/InstalledPlugins/Plugins/WaveInput/custom-convert.conf
#
# wavin
#
wavin wav * *
# IFR
[ecasound] -q -z:db -b:4096 -f:16,2,44100 -i /var/lib/squeezeboxserver/airplay-fifo.raw -o stdout
wavin mp3 * *
# IFRB:{BITRATE=-B %B}D:{RESAMPLE=--resample %D}
[ecasound] -q -z:db -b:4096 -f:16,2,44100 -i /var/lib/squeezeboxserver/airplay-fifo.raw -o stdout | [lame] --silent -r -x -q $QUALITY$ $RESAMPLE$ -v $BITRATE$ - -
EOF
Il file airplay-fifo.raw, la cui estensione deve rimanere tale per permettere ad ecasound di decodificarlo correttamente, può essere messo anche altrove. A questo punto, riavviato Squeezeboxserver e creata tra le favourite una nuova voce con URL "wavin:default" (senza virgolette) è possibile avviare shairport:
/opt/shairport/shairport.pl --pipe=/var/lib/squeezeboxserver/airplay-fifo.raw
per veder apparire sul proprio telefonino la possibilità di inviare musica a questo nuovo dispositivo airport. Dopo pochi secondi, dovuti al buffering (attualmente non migliorabile) la musica partirà sui squeezebox client su cui è stata selezionata la nuova fonte musicale.