読者です 読者をやめる 読者になる 読者になる

DIMENSION 2.00

/ Nexus / Mac / Ubuntu / カメラ / beatmania / 猫 / 株 / 情報蒐集 /

UbuntuをAirPlayの母艦にする - Shairport

Ubuntu

Shairportを使えば、UbuntuをAirPlayの母艦にすることができる。
メインでUbuntuを使っていて、iPhoneからUbuntuに繋がってるスピーカーに音を飛ばしたい時に便利。
あくまでも母艦なので、UbuntuからAirPlay対応のスピーカーに音は飛ばせないので注意。


事前準備

以下を参考に必要なパッケージなどをインストールしていく。
shairport/INSTALL.md at master · albertz/shairport · GitHub


必要パッケージのインストール

$ sudo apt-get install git build-essential libssl-dev libcrypt-openssl-rsa-perl libao-dev libio-socket-inet6-perl libwww-perl avahi-utils pkg-config


必要なCPANパッケージは以下の5つ

  • HTTP::Request
  • HTTP::Message
  • Crypt::OpenSSL::RSA
  • IO::Socket::INET6
  • Net::SDP

インストールはこんな感じで

$ sudo -H cpan -i Net::SDP

他のパッケージも同じようにインストールしてやる。


Shairportのダウンロードとテスト

適当なディレクトリに移動して、git cloneする

$ cd /tmp
$ git clone https://github.com/albertz/shairport.git
$ cd shairport

とりあえず、shairportが動くかテストしてみる

$ perl shairport.pl

エラー無く実行できたら、iPhoneiTunesのスピーカー選択に "Shairpoint ***" が出現するので選択してやる。

f:id:esf:20121107174818p:plain

f:id:esf:20121107174847p:plain:h400


無事にUbuntuのスピーカーから、iTunesの音楽が再生できれば成功。
テストが完了したら、今動かしてるshairpointをCtrl+Cで止める


Shairportの正式な導入

先ほどgit cloneして出来上がった、shairport/ に居ることを確認する。

$ pwd
/tmp/shairport


以下のようにインストールする。

$ make
$ sudo make install
install -D -m 0755 hairtunes /usr/local/bin/hairtunes
install -D -m 0755 shairport.pl /usr/local/bin/shairport.pl
install -D -m 0755 shairport /usr/local/bin/shairport


起動スクリプトのコピー

$ sudo cp -a shairport.init.sample /etc/init.d/shairport


shairportサービスの開始

$ /etc/init.d/shairport start


サービスの停止や再起動をしたい場合

$ /etc/init.d/shairport stop
$ /etc/init.d/shairport restart


shairportがLISTEN状態になっているか確認する。デフォルトでは5002番ポートを使う

$ sudo lsof -nPi:5002
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
perl    13502 root    4u  IPv6 111039      0t0  TCP *:5002 (LISTEN)
perl    13502 root    6u  IPv6 114620      0t0  TCP 192.168.2.50:5002->192.168.2.221:55739 (ESTABLISHED)


再び、iPhoneやMacのiTunesからスピーカー選択で"Shairpoint"を選び、Ubuntuのスピーカーから音楽再生できるか確認する。


問題点

Shairportが不安定。
shairportのサービスが開始されてて、転送側からshairportの選択をしてるし、ESTABLISHEDにもなってるのに、曲がスピーカーから流れないことが多い……