適当メモ - maple4estry -


ソフトを使う

XBOX をメディアセンターにする。(XBMC - XBOX Media Center)

1万円で買える XBOX を高性能セットアップボックス-メディアセンターにしてみます。 MP3、Ogg Vorbis、DivX、XviD、WMA、Real そのたもろもろ、なんでも再生できます。 Real が再生できるSTBは XBOX だけでしょう。:-P

この手の機器は使っているPCに一切負荷をかけずにメディアを再生できるので 便利ですね。 PCから遠くのテレビ/スピーカの近くにも配置できますし、 操作中の再起動なども気兼ねなくできます。

XBOXでメディアセンタを実現するには、XBMC というソフトウェアを利用します。

XBMCを動かすことができる人に説明もいらないと思うのですが、 紹介をかねて書いてみます。 なので、説明はだいぶかいつまんでいます。

XBOX 接続図

XBOX は以下のように接続しています。 MediaWizも 一応入れてあります。

XBOX接続図

PC1/2 は Windows機で、PC3 は、Linux でファイル共有(samba)が動いています。 それぞれは、ethernet で接続されています。書いていませんが、もちろん XBOX/MediaWiz にはTV もついています。

PC3 のファイル共有に入れたメディアファイルを XBOX で再生するという 使い方をしています。 NAS を持っている人はそれも使えるでしょう。

XBOX にも HDD がついているので、そこに格納しても よいのですが、あまり HDD をいじりたくないというのと、XBOX のファイルシステム である、FATX が日本語ファイル名を得意としないので、このようにしています。 DVDメディアに格納された日本語ファイルは大丈夫なので、DVD につめて XBOX に入れておいてもいいでしょう。

XBMC は、DVD付属のリモコンでも操作できますし、 PC から XBOX に ブラウザで 接続し、Webの画面からコントロールすることもできます。カラオケみたいにキューに いれれるので、複数人で使う場合も便利です。

日本語化

20040909版 の xbmc から、True Type レンダラが搭載され、日本語が表示できるようになりました。 恐ろしいことをする人たちがいるものです。ありがたく使わせてもらいます。

日本語 true type font は、入っていないので次のようにして設定します。

XBOX にインストールした、xbmc の、

/xbmc/media/Fonts/arial.ttf

を、日本語の .ttf ファイルで上書きします。

C:\WINDOWS\fonts\

にある、使ってなさそうなのを選びましょう。

(補足) 手持ちのフォントファイルが TTC しかない場合

[追記] 自分でやっていないので分からないのですが、 .ttc ファイルを普通に .ttf にリネームしても動作するかもしれません。 もしだめであれば、下記をおためし下さい。

手持ちの日本語フォントファイルが TTC しかない場合は、 いつも心に太陽を。 さんに、 TrueType Collection を True Type Font にバラす というプログラムがあるので、使わせて頂くといいでしょう。

Soralis/gcc 用のプログラムですが、 Windows でも MinGW でコンパイルが通ります。 Linux や cygwin が入っている方はそちらで。(VC++ はやっていない・・・)

一カ所エラーがでますが下記のパッチをあてれば OK です。

98c98
<                       for (j = 0; j < table_count; j++) {
---
>                       for (unsigned short j = 0; j < table_count; j++) {

パッチをあてて、

g++ -DINTEL -o ttc2ttf ttc2ttf.cpp

で、できた実行ファイルに ttc ファイルを与えれば ttf にばらされます。

日本語表示設定

xbmc を起動すると、まずは文字化けしていますが、気合いで setting の User Interfaceまでたどり着きます。(メニューの一番下が setting です)

そこで、Language / Skin Font / Charctor-set を次のように設定します。

XBMC設定

無事、日本語化できました。 (デジカメでテレビを撮ったものなので汚いです。 実際は綺麗に表示されます)

XBMCメイン画面

ファイル共有をみにいかせる設定

Windowsのファイル共有を xbmc から見ることができるので、設定します。

/xbmc/XboxMediaCenter.xml

このファイルの各セクション(音楽、動画、写真等) の <bookmark>の <path>に、smb://IPアドレス/パス/ 形式で記入します。

<!-- my music shares !-->
<music>
	<default></default>
	<bookmark>
		<name>Repository-Server (SMB)</name>
		<path>smb://192.168.0.100/01.Public/02.趣味/01.MP3/</path>
	</bookmark>
</music>

このXMLファイルの文字コードは、UTF-8 なので、上のように日本語パスを 使う場合は注意してください。

これで、 xbmc からファイル共有に格納されているファイルを再生することが できます。 MP3 を再生することが多いのですが、 サーバアプリを使わずとも、SMB で十分再生できるようです。

Web接続でのコントロール

MediaWiz より圧倒的に便利だったのが、Webからのコントロールが可能なことでした。 いちいちリモコンで操作しなくてもマウスクリックでぽこぽこ再生できます。 (MediaWiz は PCがないところで使う前提の機器なので、この機能はなくて当たり前ですが...)

xbmc の設定で、 Web Serverの設定を有効にし、 PCのブラウザから、http://xboxのIPアドレス/ で 下記のような画面がでます。

XBMC-1.1 Web画面

日本語のファイル名が Web画面では化けるので、/xbmc/web/ ディレクトリに 格納されている、default.asp ファイルの charset を Shift_JIS に修正しました。

<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=Shift_JIS">

ホントは、XML の宣言と違ってしまいますがとりあえず・・・。

XBMC 2005-01-02版をいれてみたところ、Playlist の Clear が ひっそりと実装されていました。

XBMC-2005-01-02 Web画面

マウス連射しなくてすむので、便利になりました。

あと、だから何だってわけでもないですが、この Web画面を IEで表示させる .js ファイル をおいておきます。 (自分でそのうちなくしそうなので...)

ということで

こういう感じの物理的構成で使っています。 肝心の XBOX が写らなかった・・・。テレビラックの中にあります。

動作している写真

テレビのとなりの MediaWiz が悲しげですが、 XBOX の mp3 再生で JointStereo/MB のファイルが頭でノイズがのることが あるので、そういうファイルを再生するときは使っています。。  MediaWiz より XBOX/xbmc のほうが音がいいような気がします。

XBOX は安く売っていますので挑戦してみてください。 XBOX は、現代の MSX ですね。


XBOX をメディアセンターにする。(XBMC - XBOX Media Center) - 以下過去メモ -

XBMC-1.1 以前の Web画面

XBMC Web接続

若干操作が分かりづらいところがありますが

という感じで操作できます。 「Q」と「R」はファイル名のおしりについているものです。

また、日本語のファイル名が Web画面では化けるので、/xbmc/web/ ディレクトリに 格納されている、各 .asp .htm ファイルの charset を Shift_JIS に修正しました。

<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=Shift_JIS">

それから、画面にプレイリスト一括削除ボタンがなかったので、ソースを みたところ、

else if (strAction == XBMC_CAT_UNQUE)
{
	// get xbmc's playlist using our navigator state
	int iPlaylist;
	if (navigatorState == WEB_NAV_MUSICPLAYLIST) iPlaylist = PLAYLIST_MUSIC;
	else iPlaylist = PLAYLIST_VIDEO;

	// attemt to unque item from playlist.
	g_playlistPlayer.GetPlaylist(iPlaylist).Remove(catalogNumber(parameter));
}

コマンドもまだ実装されていないようでした。 ということでとりあえず「消しやすい」ように .asp側をなおしました。

/xbmc/xbmc-center.asp の下の方を次のように修正しています。

for (z=0; z<n; z=z+1)
{
	var type = xbmcCommand("catalog","type," + z);
	data = "<tr><td width='1%' height='18'>\n";
	
	if (type != "directory")
	{
		// we have a file to play, send command to server when clicked and do not refresh the current page
		data = data + "<a target='commandFrame' href=/xbmcCmds/xbmcForm?command=catalog¶meter=select," + z + "\n";
	}
	else {
		data = data + "<a href='xbmc-center.asp?command=select&item=" + z + "'\n";
	}
	
	data = data + " ONMOUSEOVER=\'changeImages(\"" + z + "\", \"images/" + type + "-over.gif\"); return true;\'\n";
	data = data + " ONMOUSEOUT=\'changeImages(\"" + z + "\", \"images/" + type + ".gif\"); return true;\'>\n";
	data = data + " <img NAME='" + z + "' border='0' height='18' src='images/" + type + ".gif'></a>"
	
	if (file != ".." && navigatorstate != "musicplaylist" && navigatorstate != "videoplaylist")
	{
		data = data + " ";
		data = data + "<a target='commandFrame' href=/xbmcCmds/xbmcForm?command=catalog¶meter=que," + z + "><font size='2' face='Verdana, Arial, Helvetica, sans-serif'> Q</font></a> ";
	}
	else if (navigatorstate == "musicplaylist" || navigatorstate == "videoplaylist")
	{
		data = data + " ";
		data = data +  "<a href=xbmc-center.asp?command=unque&item=" + z + "><font size='2' face='Verdana, Arial, Helvetica, sans-serif'> R</font></a> ";
	}
	
	data = data + "<a href='xbmc-center.asp?command=select&item=" + z + "'>";
	data = data + " <font size='2' face='Verdana, Arial, Helvetica, sans-serif'>" + file + "</font></a></td></tr>";
	data = data + "</a>";
	
	write(data);
	
	file = xbmcCommand("catalog","next");
}

このようにすると、「R」がファイルの頭につくのでマウスを連射すれば削除できます。:-P

修正したXBMC Web画面