ほんとは、
Linux+XBMC で
HTPC(HomeTheaterPersonalComputer)にしたかったのですが、試行錯誤の挙句、時期尚早(自分の技術力が足りないだけ)のためWindows7で
つなぐ試験運用することにしました。
やはりLinuxは今一歩マルチメディア系が弱い・・・・
10年以上前のMacとWinみたい・・・・
という訳で、
Windows7+XBMC(+TVTest+VLC) でHTPCにすることにしました。
で、今回はこのPCをTV以外にもそこらに転がっていた17インチの液晶にもつないで、HTPC兼コタツトップパソコンにすることにしました。
ちなみに、スペック
M/B:ベアボーン Shuttle SD32G2
CPU:Core2Duo E6300
RAM:2GB*2
SSD:Silicon Power 64GB SP064GBSS2T10S25
VGA:ELSA GLADIAC 573 128MB (GeForce 7300 LE)
電源:PicoPSU160
リモコン:iMon inside
という何世代前?のシロモノ(SSDとiMoninsideは追加)
モニタ1:日立 Wooo P50-XP05 (50インチプラズマテレビ)
モニタ2:Acer AL1721 (17インチSXGA液晶モニタ)
CPUファンは本来の9cmのものを外し、クーラーはそのままに
GELID Silent12(120mm)を針金で吊り下げ。
チップセットファンは本来の4cmのものを外し、
RDL8025BLを3.5インチベイから針金で吊り下げ、5V駆動。
これで、P50-XP05のそばにおいてもP50-XP05のHDD回転音のほうがうるさい。
ちなみに、これでアイドル50wくらい。HD再生で70~80wくらい。一日数時間だしivyBridgeにしても消費電力差で元取るまではいけないよねぇ~~
まずは、
OSのインストールから。
XBMCやリモコンなんかがうまく動くか試験運用する、という理由からWindows7Enterprise評価版を適当にググってダウンロードし、インストールすることにします。
インストールの際に、windows7はシステム予約領域というものをHDD上に確保するらしいので、それを解消しつつやります。
インストール画面で、未割当て領域で
ドライブオプション > 新規をクリックし、好きなサイズでパーティションを作ります。
すると、
システム予約領域ともう一つのパーティションが出来るので、
もうひとつのほうを削除で消します。
そして、
システム予約領域を拡張で好きなサイズにします。
そして、ここへインストールすればOK。
ちなみにシステム予約領域はBitLockerというHDDとかUSBメモリとかの暗号化に使うものらしいです。
Ultimate と Enterprise だけらしいです。
→『
BitLocker ドライブ暗号化』
ちなみにちなみに、評価版なので当然いずれは使えなくなるのですけど、
しばらくは評価してみないとわからないわけです。
という訳で、
しばらく評価する方法→『
グーグル先生』
→『
Windows OSのライセンス認証の猶予期間を延長する』
評価が固まるころにはLinuxがいい具合になることを祈りつつ・・・・
次に、
XBMCのインストールと設定『
XBMC公式』
最新はXBMC11みたいだけど、とあるプラグインが使えない(使い方がわからない
後述)ので、
XBMC10をダウンロードし、インストールします。
1:日本語化System > Setting > Appearance > InternationalLanguage を English(US) から
Japanese へ
文字化けしてところどころ“豆腐”になっているので、フォントを変えます。
Internationalの上のタブ(?)が
Skin(多分、
豆腐が三丁)なのでそこへ入ります。
で、
上から4つ目(たぶん Skin default となっているところ)を
Arial based に変えます。
あとは、文字が読めるようになったのでインターナショナルに戻って、
文字セットを
Japanese(Shift-Jis)へ
Skinはほとんどで日本語表示ができるようになってるみたい。@XBMC11
大概は、スキンを選んだ時点でフォントがDefaultに戻るので、フォントを変えればどれかしらで日本語が表示できる。(だめなのもあるけど。MetropolisとXperienceMoreだけかな?)
AEON NoxはKoreanで日本語になった。なぜ?
ちなみに、日本語がだめなSkinで日本語表示するための方法は
『
XBMC Windows SKINの日本語化について』
『
XBMC 10.0 言語ファイル(日本語)』
あたりに書いてあります。試してませんけど・・・
2:外部プレーヤーの登録XBMCの内部プレーヤー(?)はDSPlayerってものらしいです。
そのままでも、結構色々なフォーマットの音楽、ビデオ、写真etcが再生できるのですがmpeg2TSなんかはうまく再生できないようなので、外部プレーヤーを登録します。
試行錯誤の挙句mpeg2TS用に使うプレーヤーは
TVtest試した中では唯一AACパススルーが出来て字幕もそのまま見れる。
(LinuxはどのソフトもAACパススルーが出来ない・・・wine+TVTestもだめだった・・・orz)その他の動画には
VLCを使います。(ISO見れます。)
C:\Program Files\XBMC\system\playercorefactory.xml windowsの場合
/usr/share/xbmc/system/playercorefactory.xml Linuxの場合
の記述を以下のように変えました。
<playercorefactory>
<players>
<!-- These are compiled-in as re-ordering them would break scripts
The following aliases may also be used:
audiodefaultplayer, videodefaultplayer, videodefaultdvdplayer
<player name="DVDPlayer" audio="true" video="true" />
<player name="DVDPlayer" /> placeholder for MPlayer
<player name="PAPlayer" audio="true" />
-->
<player name="VLC" type="ExternalPlayer" audio="true" video="true">
<filename>C:\Program Files\VideoLAN\VLC\vlc.exe</filename>
<args>--fullscreen --play-and-exit "{1}"</args>
<hidexbmc>false</hidexbmc>
<hideconsole>false</hideconsole>
<warpcursor>none</warpcursor>
</player>
<player name="TVTestPassThrough" type="ExternalPlayer" audio="true" video="true">
<filename>C:\Program Files\tvtest\TVTest.exe</filename>
<args>/tvtplay /fullscreen /ini TVTest-xbmc-spdifPT.ini "{1}"</args>
<hidexbmc>false</hidexbmc>
<hideconsole>false</hideconsole>
<warpcursor>none</warpcursor>
</player>
<player name="TVTest" type="ExternalPlayer" audio="true" video="true">
<filename>C:\Program Files\tvtest\TVTest.exe</filename>
<args>/tvtplay /fullscreen /ini Video.ini "{1}"</args>
<hidexbmc>false</hidexbmc>
<hideconsole>false</hideconsole>
<warpcursor>none</warpcursor>
</player>
</players>
<rules name="system rules">
<rule name="vlc" filetypes="mpeg|mpg|iso|mp4|mkv|avi" filename="*" player="VLC" />
<rule name="tvtestPassThrough" filetypes="ts" filename=".*SS.*|.*5_1.*" player="TVTestPassThrough" />
<rule name="tvtest" filetypes="ts" filename="*" player="TVTest" />
</rules>
</playercorefactory>
playerタグの
argsは
コマンドラインオプション。
VLCは全画面表示でスタート。再生終了でアプリも終了
TVTestは全画面でスタート。
tvtplayを有効化。
更に、iniをSPDIFパススルーしたいものとそうでないもので分け、ファイルネームで選別しそれを読み込む。
拡張子及びファイルネームでの選別は
ruleタグで行える。
ruleタグの
filetypesは拡張子の指定(正規表現可)。
filenameでファイルネームを正規表現で指定している。
上の例の場合、ファイルネームに『
SS』と『
5_1』と入っているときはパススルー用。
SPDIFパススルーするとtvtplayで倍速再生が出来なくなるので、5.1chだけパススルーするようにした。
(ステレオはパススルーだろうがPCMだろうがどうせ同じ。よね。)
で、5.1chの放送は番組タイトルに
【SS】か
【5.1】が入るのでこれで選別する。
ただし、Recpt1(EPGrec?)で録画するとピリオド(.)がアンダーバー(_)に変換されるので、【5.1】の文字列はファイルネームでは【5_1】になる。更に、XBMCの正規表現が【】を含んでいると判断できないようなので、こうなった。
そして、絞り込んだruleを先に書くとそちら優先で再生されるようなので、下側のruleではfilename="*"で一応選別できるようになった。
(文字列を否定する正規表現て大変よね・・・)当然EPGrec等での命名規則に激しく依存するので注意。
ちなみにplayerのnameとかにハイフン(-)など使うとそれだけでうまく動かないので記号は避けたほうがいいかも。どうせこのxmlだけでのことだし。
参考:『
XBMCで外部プレーヤーを指定する方法』
さらに、Windows7エアロを有効にしてる場合、
HD再生でカクカクになるので
vlc.exeとTVTest.exeを
右クリック>プロパティ>互換性>デスクトップコンポジションを無効 にチェック をいれる。
XBMC自体もデスクトップコンポジションを切っておいた方が、外部プレーヤーに切り替えるとき瞬かなくていいかも。元からエアロは使わないとかね。
<<追記メモ>>
HTPCがc000021a(レジストリの不整合らしい)のBSoDが出るようになったので、クリーンインストールしたら、なぜかXBMCからTVtestを開くと重くてまともに見れなくなった。
で、<player>タグの<hidexbmc>要素をfalseからtrueにしたらまともになった。
原因、理由は不明。とりあえず様子見。
参考:『External players XBMC wiki』ちなみに、フィルタ(デコーダー?)を使えるようにしてあげることでDSPlayerでもmpeg2TSもヌルヌル見れるらしいです。
参考:『
XBMC for Windows TIPS – 池デジを録画した MPEG-2 TS をヌルヌル再生する方法』
ただ、ffdshowとかなんで、Linuxだとうまくいかない予感。
3:XBMCからFirefoxを使えるようにする。まず、Firefoxはコマンドラインオプションで全画面表示が出来ないらしい。
ウィンドウの
サイズと位置は前回終了時の設定が残るので、頭で書いたようにHTPC兼コタツトップにすると、前回コタツトップでつぎにXBMCで使ったときに、全画面にならなかったりするとちょっといやなので、それぞれをプロファイルで分けることにします。
前準備として、
スタート(>すべてのプログラム>アクセサリ)>ファイル名を指定して実行 に
firefox -P としてfirefoxのプロファイルマネージャを起動。参考:『
Command Line Options』
新しいプロファイルを作成からXBMC用のプロファイルを作成し、一度起動し適当にいじって、ひとまずFirefoxを終了。
Firefoxのプロファイルは
firefox.exe -P "profilename" とすればそのプロファイルで起動できるので、どこか適当なところ(Firefoxのフォルダの中とか)に以下の内容のバッチファイル(ex.firefox_xbmc.bat)を作る。
@echo off
"C:\Program Files (x86)\Mozilla Firefox\firefox.exe" -P "xbmc"※コマンドプロンプトが出るのがいやな場合→『バッチファイル プロンプト画面を表示しない』
※XBMCのLauncherでコマンドラインオプションを指定する方法、ショートカットにコマンドラインオプションを指定する方法は、何故かうまくいかないのでバッチファイルでやることにしました。XBMCを起動し、
プログラム > GetMore... > Launcher > Install※XBMC11だとこのLauncherがなく、代わりにAdvancedLauncherというのがあったけど、どうも使い方がわからないので、XBMC10を使うことにした。 orzプログラム > Launcher を起動し、
Launcher Type は
Standalone (normal PC executable)Select the launcher application で先ほどの
バッチファイルを選択Application arguments は
空で
Set title of the launcher は
Firefox あたりで
ちなみに、後から追加で登録する場合、既に作った設定を削除する場合などは項目を選んだ状態でキーボードの『
C』を押すとコンテキストが出てくるのでそこから行えます。
参考:『
ワイヤレスキーボードと xbmc の組み合わせで快適インターネット!』
ここまでで、プログラム>LauncherでFirefoxを起動することは出来たものの階層が深いので、ホーム画面上のプログラムの隣(下)にインターネットという項目を作ってそこで一発でFirefoxを起動できるようにします。
まず、XBMCを一度Exitし、
C:\Program Files (x86)\XBMC\addons\skin.confluence\720p\Home.xmlを開き
~~略~~
<item id="1">
<label>0</label>
<onclick>ActivateWindow(Programs,Addons,return)</onclick>
<icon>special://skin/backgrounds/programs.jpg</icon>
<thumb>$INFO[Skin.String(Home_Custom_Back_Programs_Folder)]</thumb>
<visible>!Skin.HasSetting(HomeMenuNoProgramsButton)</visible>
</item>
<item id="12">
<label>443</label>
<onclick>RunPlugin(plugin://plugin.program.launcher/?Firefox)</onclick>
<icon>special://skin/backgrounds/firefox.jpg</icon>
<!--thumb>$INFO[Skin.String(Home_Custom_Back_Programs_Folder)]</thumb-->
</item>
<item id="5">
<label>13000</label>
<onclick>ActivateWindow(Settings)</onclick>
<icon>special://skin/backgrounds/settings.jpg</icon>
<thumb>$INFO[Skin.String(Home_Custom_Back_Settings_Folder)]</thumb>
</item>
~~略~~
のようにします。
『
!Skin.HasSetting(HomeMenuNoProgramsButton)』で検索をかけて(1度しか出てこない)、その塊の下に赤文字の部分を入れればOKだと思います。
ちなみに、
C:\Program Files (x86)\XBMC\addons\skin.confluence\backgroundsにfirefox.jpgというJpegの壁紙を入れると、インターネットを選んだ画面の壁紙がfirefox.jpgになります。
参考:『
xbmc のホーム画面をいじってみる』
起動からすべてをリモコンだけで操作するHTPCが目的なので家電ライクに使えないと意味がないわけで、となるとリモコンが必須。
という訳で、当初から
ACPIのS5(電源断)から起動できる、知る限り唯一の赤外線リモコンであるiMonを内蔵済み。
iMon inside韓国(中国?)の通販会社から\3,500で届きました。微妙な値段・・・
リモコンの受光部はUSBでつなぐので、つなぎさえすればキーボードのように何かのキーが帰ってくるのかと思ったら、専用のアプリ(ドライバー)を入れないとだめなのね。なんだやっぱり・・・。ということ(専用ドライバによる)は、そこらに転がってるリモコンの信号は受取れないってことね。ちょっとがっかり・・・。よく考えれば(考えなくても)、当然か・・・
そして、LinuxだとLircってのでリモコン受光部さえあれば、いらなくなったリモコンを使えるようだけどWindowsにはないっぽい。
(正確にはUSB対応のがない。Lirc派生のWinLircはシリアル接続のみ)
EventGhostでimonをHIDヒューマンインターフェースデバイスとか何とかで割り当てても、imonの専用アプリで割り当てたもの以上のキーは出てこない。ぽい。リモコンはRM100という小さいもの。
ボタン電池はCR2025。
より一般的な2032にしてくれればいいものを・・・・附属のボタン電池を入れて、反応がすごく鈍くて、何を間違っているのかとアプリのリインストールを繰り返していたら3日後には電池が切れた・・・orz
リモコンのボタンと専用アプリでのボタンの名前の対応表のようなものがなく、微妙にわからなかったのでメモ。
| 専用アプリでの名前 | 仮想キーコード /AutoHotKeyでの名前 |  |
1 | App.Exit | 自由に割当可 |
2 | Power | 自由に割当可 |
3 | Back | VK_BACK / BS |
4 | Up | 自由に割当可 |
5 | Menu | VK_APPS / AppsKey |
6 | Left | 自由に割当可 |
7 | Enter | VK_RETURN / Return |
8 | Right | 自由に割当可 |
9 | VOL+ | 自由に割当可 |
10 | Down | 自由に割当可 |
11 | CH+ | 自由に割当可 |
12 | VOL- | 自由に割当可 |
13 | Mute | 自由に割当可 |
14 | CH- | 自由に割当可 |
15 | Previous | 自由に割当可 |
16 | Play | 自由に割当可 |
17 | Next | 自由に割当可 |
18 | Quick Launch | 自由に割当可 |
ボタンに対して帰ってくるキーコードを専用アプリでカスタマイズできる。
※赤字の3つだけは固定されていて変えられない。ということで、これらのボタンに好きなキーを割り当てて(一部マルチメディアキーも可)アプリ側もホットキーをそれにあわせれば、好きなように動かせる。
さらに
AutoHotKeyも活用すれば、完璧。
ちなみにimon以外で、PCの起動を本体のボタンを押さずリモコンライクに起動するアイデアとして、
・スマホとかのWifi端末からマジックパケットを送りWOLでPCを起こす。
・ワイヤレスキーボードetcで『電源の管理』タブ(デバイスマネージャー>キーボード>プロパティ)でサスペンド解除が出来る場合、それを使う。
等がある。
特に下の方法は、M/Bとキーボードが対応さえしていれば一般的なUSBドングル付きのワイヤレスキーボードがPCリモコンになる。(無駄にでかいけど・・・)
さらに、Buffalo(メルコ?)の
DT-OP-RCがこの電源の管理に対応してるらしく、S3サスペンドからならこのリモコンだけで復帰できるらしい。(多分Linuxでもいけるよね)
アマゾンで\2,500円位で買える(2012/11/17現在)ので、悪くないと思う。一個確保しとこうか・・・
番外編1:音声のデジタルとアナログ同時出力AACのSPDIFパススルーにこだわりTVTestにした(ひいてはWindowsにした)訳だけど、デジタル接続のマルチチャンネルアンプで聞きたいとき(映画とか音楽ものとか)と、テレビのスピーカーでもいいときがあるわけで、そうなると出来ればデジタル、アナログ同時出力されていることが望ましい。
で、結論から言うと5.1chの場合は不可(SPDIFパススルー優先)。
ステレオ2chの場合は同時出力可ということになった。
※TVTestがパススルーをする際に音声デバイスがデジタルになっていないとだめ。
音声フィルタはなしになっていないと色々とだめ。とおもう。
設定項目は 設定 > 再生 のあたりで、ステレオ2chの場合は以下の方法で実現できる。
概要としては、アナログで出力し、PC内部でアナログをデジタルに送る(?)様な感じ
※TVTestは・パススルーをしない・音声デバイスをデフォルトとか(アナログ)にする。コンパネ(表示方法:アイコン) > サウンド > 録音
リスト表示されている部分で右クリック > 無効なデバイスの表示ここまでで、ステレオミキサーが出てきたら ステレオミキサーを
有効に
そして、
再生 で
スピーカー (アナログ)が
既定のデバイス になってることを確認
録音 に戻り
ダブルクリックでステレオミキサーの
プロパティを開き
・
聴く >
このデバイスを使用して再生する を
デジタルアウト系に
・
このデバイスを聴く に チェック
で、アナログとデジタル両方に出力される
デジタルが若干遅れる(DSP通るしね)けど1フレ2フレ位のレベルなので映像に対しては遅れて感じない。無意識の脳内補完てすごいよね・・・・
※デジタルアウトを再生の既定にして、サウンドミキサーでアナログへ聴く はできなかった。
おそらくサウンドミキサーは入力がアナログ固定なんだろう・・・よく分からないけど・・ちなみに、ステレオミキサー がない場合
ドライバを入れることでステレオミキサーが出てくることもある。
うちの場合、Realtekからドライバ(
High Definition Audio Codecs)を
ダウンロード → インストール で出てきた。
マシンの再起動後にステレオミキサーが出てこなければ あきらめるしかない。たぶん。
参考:『
S/PDIFとアナログを同時出力(Windows7)』
番外編2:2つの画面をうまいこと切り替える先にも書いたとおりHTPC兼コタツトップなのでディスプレイが2枚つながっている訳ですが、一方はFullHD(1920*1080)、もう一方はSXGA(1280*1024)になるので、解像度がまるきり違うためミラーリング(画面のコピー)にすると片方が制限を受けることになってしまう。
かといって、2画面を同時に使うことはないので通常のデュアルディスプレイの使い方ではとても不便。
ということで、ディスプレイ1、ディスプレイ2を完全に切り替えて使うことにします。
が、当然毎回コンパネから~なんてやってられないので、バッチで出来ないかと探したら『
Display Changer』が完璧。
グラフィックボードが古くて(かな?)nvidiaの最新のドライバーがうまいこと入らないようなので、2枚とも
汎用Pnpモニタとかになってしまうけど、
\\.\DISPLAY1、
\\.\DISPLAY2で判別が付くようで切り替えもうまくいく。
バッチファイルはこんな感じ
"C:\Program Files\12noon Display Changer\dc.exe" -monitor="\\.\DISPLAY1" -primary -width=1280 -height=1024 -force
timeout /T 3
"C:\Program Files\12noon Display Changer\dc.exe" -monitor="\\.\DISPLAY2" -detachやってることは、
ディスプレイ1(17インチSXGA)をメイン画面として有効にする。
3秒待つ。
(深い意味はないけど切り替えの猶予)ディスプレイ2(テレビ)を切り離す。
これでテレビから17インチへ、切り替えが出来た。
逆も適当に作って、あとはリモコンから来るキーアクションを
AutoHotKeyでこのバッチを実行するようにしてあげればOK。
(バッチ使わず、AutoHotKeyから直接でもいいのだろうけど、構築したのがこの順番だったので・・・)『
Display Changer』はリンク先に詳しく事例も書いてあるのでそちら参照(英語だけど)
AutoHotKeyは『
AutoHotkeyを流行らせるページ』『
AutoHotKeyの初手』『
AutoHotkeyのチュートリアルを読んだ』『
使用例』この辺が役に立った。