foobar2000

Wine、Xvfb、そしてfoobar2000、を使ったUbuntu上でのUPnPサーバー構築

Posted on

TAK形式とか便利だけどWindowsでしか使えないようなある意味マイナーな可逆圧縮形式のファイルを使えたり、Vorbisとか、アルバム単位でまとめられる形式を扱えたりするfoobar2000を使って、UPnPサーバーを作ろうかなとちょっと無茶をしてみました。利点として考えられるのは。。

  • TAK等のマイナーな形式や、アルバム単位のVorbisファイルなどをきちんと利用できる
  • Sambaサーバーと一緒にしておけば、ストレージの節約にもなる
  • このとき利用するfoo_upnpは、インターネットアクセスも可能なので、どこでも利用できる。

等があります。逆に、欠点として

  • 結局はWindows上の動作をシミュレートしているため、不具合が起こりうる
  • ハードの要件がまあまあ高そう。
  • Wine+Xvfb+SSHという、root権限の使えないサーバーだとあり得ないような要件。

などがあげられます。

と、やり方。。とりあえず、Xvfbとwineを入れましょう。

$sudo apt-get install xvfb wine

次に、foobar2000をダウンロードして、Portable Installを行います。さらに、foo_upnpもダウンロードし、componentsファイルに入れます。また、lame_enc.dllをダウンロードして、foobar2000.exeのあるフォルダに入れます。また、適宜必要なコンポーネント(takファイルのデコーダーなど、お好きに。)もダウンロードして、componentsフォルダに入れます。http control等があれば便利かもしれません。

そして、foobar2000をWindows上から設定します。変更する方がいい設定項目は、

Playback-Output の、Output Device

UPnP-Server-Basic SettingsのNetwork nameと、ポート。

UPnP-Server-Adavnced Settingsの、Internet Access欄

UPnP-Server-Streaming profilesで、foobar2000と、Default、さらにお好みで他の場合も、Transcoding to MP3をalwaysにして、Decoding to PCMをneverにします。

その後、wineの動作確認と、フォルダ形成のため、

$Xvfb :7 -screen 0 800x600x8 &
$export DISPLAY=:7.0
$wine notepad $

を実行して、その後、notepadのプロセスを消します。

その後、foobar2000一式のフォルダを~/.wine/drive_c/Program Files/上にコピーします。

$cp ./foobar2000 ~/.wine/drive_c/Program Files/

簡単に起動するように、適当な名前のスクリプトを作りました。。

#!/bin/bash

Xvfb :7 -screen 0 800x600x8 &

export DISPLAY=:7.0

wine ~/.wine/drive_c/Program Files/foobar2000/foobar2000.exe  >/dev/null &
exit;

これをchmod 755 (ファイル名)、 で実行すれば一通り、動作します。DLNAクライアントでその様子を確認出来ると思います。