さくら VPS に Subsonic を導入しストリーミングメディアサーバーを構築してみます。
Debian/Ubuntu の場合 ここ に簡単なインストールガイドがあります。
$ sudo apt-get install openjdk-6-jre
$ wget http://www.subsonic.org/pages/download2.jsp?target=subsonic-4.7.deb
$ sudo dpkg -i subsonic-4.7.deb
デフォルトでは Subsonic プロセスは root で行われるので、セキュリティ上よくありません。特定のユーザーに変更するには /etc/default/subsonic
の内容を適宜変更しておきます。また、同じファイルでポート番号 (default: 4040) や Java のメモリ (default: 100) の設定や他のスタートアップ時のパラメーターを指定しておきます。
export LANG="ja_JP.UTF-8" SUBSONIC_ARGS="--max-memory=200 --https-port=443 --port=80" SUBSONIC_USER=subsonic
オリジナルのデータの codec がクライアントのプレーヤーでサポートされていない場合などには、メディアデータ再生時にオリジナルデータが特定のフォーマットへ変換 (transcoding) されます。その際、Subsonic 自体が transcoding を行うのではなく、サーバーのコマンドラインツールに依存しています。これらがないと、Subsonic はオリジナルデータのフォーマットでストリーミング再生を行うだけとなるようです (cf. Transcoders)。
2つの重要な transcoding のツールは ffmpeg
と lame
です。これらはもともと Subsonic に含まれるようですが、サーバーのものと入れ替えておいた方が良いと思います (Debian Squeeze での ffmpeg
のインストールは こちら を参照)。
$ sudo apt-get install ffmpeg lame $ sudo mv /var/subsonic/transcode/ffmpeg /var/subsonic/transcode/ffmpeg_orig $ sudo mv /var/subsonic/transcode/lame /var/subsonic/transcode/lame_orig $ sudo ln -s /usr/bin/ffmpeg /var/subsonic/transcode/ffmpeg $ sudo ln -s /usr/bin/lame /var/subsonic/transcode/lame
設定が終われば subsonic
再起動します。
$ sudo /etc/init.d/subsonic restart
あとはクライアントのブラウザからアクセスしてユーザーの追加やパスワードの設定、デフォルトの言語やメディアデータの場所の指定などを行います。
いくつかデータをアップロードして「Scan media folders now」をクリックします。フォルダがスキャンされると下の画像のようにアップロードしたメディアデータが再生可能となります。
うまく再生されないときは「ヘルプ」からログが確認できるので参考になるかもしれません。
Subsonic は動画のストリーミングサーバーとしても活躍しそうです (しかし、この機能を使用し続けるには Donate をする必要がある模様…)。
折角なので iOS のアプリ iSub も試してみました。
イコライザでの音質調整、Last.fm や Twitter との連携など、細かい融通が利き、操作性も確かによいのですが、このアプリで利用するための API を使い続けるためには、先と同様 PayPal 経由の寄付でライセンス認証を行う必要があるようです。こうなるともう「寄付」ではありませんね ^^;
他にも携帯電話やタブレット、デスクトップや Google Chrome 拡張など、サードパーティ開発者による多くのアプリケーションが利用できるようです (cf. Subsonic Apps)。
以下は Mac OS X (Mountain Lion) での subAir (Adobe Air) の様子。フリーですが日本語の表示には問題があるようです。
どのようにしてメディアデータを同期するか
さくら VPS の容量に余裕があるとしても、私の場合、ローカル (Mac OS X, Mountain Lion) のすべての iTunes のデータと同期を取るほどには余裕はありませんでした。そこで以下の様な rsync
を用いた方法でひとまず、いくつかのデータのみアップロードしてみました。
#!/bin/sh REMOTE="USERNAME@example.com" MUSIC="/Volumes/itunes/Music/iTunes/iTunes Media" MUSIC_LST="$HOME/Music/Subsonic/subsonic_music.lst" MOVIES="/Volumes/disk/Movies" MOVIES_LST="$HOME/Music/Subsonic/subsonic_movies.lst" # -r (recursive) を入れること! rsync -arvz --delete --force --iconv=UTF8-MAC,UTF-8 \ -e "ssh -p 10022" --rsync-path="sudo rsync" \ --files-from="$MUSIC_LST" "$MUSIC/" "$REMOTE:/var/www/subsonic/music" rsync -arvz --delete --force --iconv=UTF8-MAC,UTF-8 \ -e "ssh -p 10022" --rsync-path="sudo rsync" \ --files-from="$MOVIES_LST" "$MOVIES/" "$REMOTE:/var/www/subsonic/movies"
アップロードしたい音楽データを subsonic_music.lst
にリストアップしておきます。注意すべきは files-from
オプションでリストを読み込む場合 a
オプションを指定していても r
オプション (recursive) は指定する必要があるという点です (cf. rsync to copy only particular folders)。私はここではまりました…
【追記】
この方法でアップロードしてしばらく使用していたのですが、自動的にスキャンされるものとされないものがでてきて、不思議に思っていました。どうも Subsonic は音楽フォルダのタイムスタンプを見て新しく取り込むべきデータを判断しているようです。上記の rsync
を用いた方法では、タイムスタンプもローカルのものが反映されるので、古いタイムスタンプのものは Subsonic に取り込まれません。Subsonic をあまり使用していなかったということもあったのですが、この単純なことに長い間気づきませんでした…orz
ですので rsync
でデータを同期する場合、以下のように --no-t
を付加することにしたところ、自動スキャンからもれるデータはなくなりました。
rsync -arvz --no-t --delete --force --iconv=UTF8-MAC,UTF-8 (以下略)
すでに取り込んだものは touch
で変更しておきました。
cd /var/www/subsonic/music find . -type f -print0 | xargs -0 touch
もう一つ気づいた問題は、日本語の文字化けが一部のデータで起こること。これは id3 のタグデータが CP932 になっていたことに起因していました。
python-mutagen
に含まれる mid3iconv
で一括変換して対応しました。
find . -name "*.mp3" -print0 | xargs -0 mid3iconv -e CP932 -d
iTunes から乗り換えるべきか
最近ではネットワークにつながっていない環境の方が珍しくなってきましたので、こうした容量を取るメディアデータをサーバーに置いておけば、iPhone などの携帯端末からもその容量の少なさを気にせず音楽データを楽しむことができます。しかし、一方で Subsonic は FLAC などの高音質を維持する可逆圧縮コーデックであってもダウンサンプリングしてストリーミング再生を行います。最近ではとくに PC オーディオにも注目が集まって、デジタルデータでもなるべく高音質で音楽を楽しもうという動きがありますので、そうしたユーザーにとっては、まだ完全に移行するとまでは行かないかもしれません。
参考
- 『Subsonic』で自家製ストリーミングメディアサーバ-を楽しむという贅沢 : ライフハッカー[日本版]
- さくらのVPSとSubsonicでiTunesをゴミ箱にダンクシュートした – 甘味志向@はてな
- iTunes MatchとかGoogle Musicが持てはやされてるけど、真のパーソナルクラウドミュージックは「Subsonic」。これは譲れない | iPadWalker.NET
- Subsonicでストリーミングメディアサーバーを構築。どこでも自分の音楽にアクセス:Garbage In Garbage Out
- Subsonicを入れてみた » @Simd
- 高機能メディアサーバ Subsonic のインストール – wikiducca
“さくら VPS の Debian Squeeze に Subsonic を導入してみた” への2件の返信