『FreeNAS上にあるmp4ファイルをraspberry piでTV出力し、リモコンはiphone/androidが利用可能です。』
そんな事がraspberry piで出来るんじゃないかと思い、appstoreを探したところ、『xbmcRemote』と言うズバリな物が見つかりました。更にraspberry pi登場直後に試して、動作速度が芳しくなかったので諦めた『RaspBMC』も最新版を使えば、mp4(H.264)フォーマットであれば問題なく再生出来る検証できました。
結果から載せます。写真左下のraspberry piが、LAN経由でFreeNAS上のminiDLNAからコンテンツをネットワーク経由で再生し、HDMIでTVに出力しています。もちろん音声も HDMIに経由でTVに出力されます。リモコンはiphone、ipad、android等が使えます。今回はiphoneにxbmcRemoteと言うソフトをインストールして、リモコンとして利用しています。もちろん、USB接続のマウスやキーボードを利用する事も可能です。
設定時には、USB接続のキーボードか、マウスがないと厳しいです。安物で良いので用意しておきましょう。
先に結果を見せてしまいましたが、この投稿にまとめるのは下記の連携です。
- epgrecで録画する(任意)
- ffmpegでH.264圧縮をする(必須)
- 録画サーバからFreeNASに転送する(任意)
- 上記1~3をcronで自動化する(任意)
- FreeNAS上からDLNA配信する(必須)
- raspberry piにインストールしたRaspBMCでFreeNAS上のコンテンツをiphone/androidをリモコンとして利用し、再生する(必須)
各々の環境構築方法は各投稿にリンクを張っておきます。
1.pt2/pt3 + epgrecで録画する
epgrecの環境構築方法はずっと前に投稿したubuntu+epgrec(UNA版)+pt3環境構築、もしくはubuntu13.10+pt3+epgrecの環境構築のどちらかを参照して下さい。
2.ffmpegでH.264圧縮をする
epgrecのサーバ上へffmpegをインストールします。コンパイルがあるので20分ほどかかると思いますが、ubuntu14.04 にffmpegをインストールするの内容に沿ってインストールしてください。エンコードは下記のような感じで2passエンコードが可能です。オプションなどは適度に変更してください(2年ほど使っていたバッチファイルの中身の通りに実行したら、ffmpegのオプションがかなり変わっていたので、急いで作った実行例なので再生に十分耐えうるエンコードは出来ますが、正直自身がありません。後日こっそり差し替えるかも。)
export TSFILE="tsfile.ts" ffmpeg -y -i "$TSFILE" -map 0:0 -c copy -c:v:1 libx264 -map 0:1 -c:a:137 libvorbis tmp.mp4 && \ ffmpeg -y -i tmp.mp4 -an -vcodec libx264 -pass 1 -preset veryslow -threads 2 -b 2000k -s 1280x720 -f rawvideo -y /dev/null && \ ffmpeg -y -i tmp.mp4 -c:a:137 libvorbis -vcodec libx264 -pass 2 -b 2000k -preset veryslow -threads 2 -s 1280x720 "$TSFILE.mp4"
3.録画サーバからFreeNASに転送する
これはsambaマウントで良いでしょう。epgrecが入っているLinuxサーバで/etc/fstabに下記のように追記してください。設定追記後、mount -a してからファイル転送のテストを行います。
sudo mkdir /mnt/tv sudo vi /etc/fstab
//172.20.1.140/tv /mnt/tv cifs username=user01,password=sambapassword
sudo mount -a # nohupでsshでログインしている時にバックグラウンドで実行したジョブを、ログアウト時に終了されないようにしています。 nohup mv /var/www/epgrec/video/*.ts /mnt/tv/ &
4.上記1~3をcronで自動化する
1~3をcronで自動化すると書きましたが、1はepgrecの自動予約機能が面倒を見てくれるので、実際には2,3を自動化すればOKです。やり方も2つに分かれます。
- epgrecのdo-record.shにffmpegの処理を追記して最後にエンコードさせる(録画が重複した場合、処理落ちする可能性有り)
- tsをh.264エンコードするスクリプトを書いてcronに登録し、日時処理する。上記に書いたffmpegと、mvコマンドを環境毎にアレンジしてcronに登録すれば良いと思います。
5.FreeNAS上からDLNA配信する
FreeNASのセットアップはこちらにまとめてあります。
6.raspberry piにインストールしたRaspBMCでFreeNAS上のコンテンツをiphone/androidをリモコンとして利用し、再生する
必要なハードウェアは下記の通り。セットアップ途中に利用するのでUSB接続のマウスかキーボードを用意しておくと良いです。
Raspberry PIの動作に最低限必要な物。Amazonだとまとめ買いしないと
- Raspberry PI Raspberry Pi 2 Model B(4000円ぐらい)
- HDMIケーブル(Amazonの600円程度の物でOK)
- USBの電源アダプタ(USB充電器等、余っているものを流用。無ければ600円程度で購入可能)
- micro usbケーブル(Raspberry PI Raspberry Pi 2 Model BにUSB経由で電源供給する。数600円程度)
- Raspberry PIのケース(1000円程度。いつの間にか基盤部分に金属がぶつかってショートしてたなんて悲しいことにならないように。)
- SD CARD(4G以上。カメラや携帯用でOK。1000円程度)
- LANケーブル
セットアップ中に必要な物(無ければ予め購入しておいてください。)
- SDカードリーダライタ(400円程度)
- USB接続のマウス(無線のこれが後々ワイヤレスマウスに使えて便利かも)かキーボード
raspBMCのダウンロードメニューからイメージをダウンロードします。WindowsでSDカードにイメージを転送する場合はこちらから。LinuxやMacの場合はこちらから。
Windowsでのセットアップは、SDカードをSDカードライタで書き込みます。ダウンロードしたraspbmc-win32を回答した中のinstallerを実行すると下記の画面が出てくるので、Acceptをクリックします。
SDカードを挿入したSDカードライタを指定してインストール。
インストールが終わると、Congratulations!が表示されるので、×ボタンで終了。
ここからがRaspberry PIを利用します。SDカード、HDMIケーブル、USBマウス、LANケーブル、マイクロUSBケーブルを指して、電源を入れます。Raspberry PIは電源ボタンが無いので、通電したら勝手に電源ON状態になります。
少し待っていると、TVにRaspBMCの画面が出てきます。
この画面になる前に、アップデートがあるけどどうする?みたいな事を聞かれる場合が多いです。その場合にはおとなしくアップデートすればOKです。初回起動時には英語画面になっているので、設定を進めます。ここは、Windows版のXBMCとほぼ同じなのですが、IPの設定等はRaspBMC用のインターフェースが用意されているので、最初に、RaspBMCを固定IPにしておきましょう。
Raspbmc Settingsをクリックすると、下記のような画面になります。
この画面で、USB DHCPのチェックを外し、固定IPを設定します。
次に、XBMCの日本語化と、FreeNAS上のminiDLNAサーバを登録します。
インストール出来たら日本語化して、FreeNASで構築したDLNAサーバを登録します。UIはWindows版のXBMCとほぼ同じなので、(スクリーンショットがきれいな)Windows版の画面を載せます。
System > settingsを選ぶ。
Appearanceを選ぶ。
skinで、FontsにArial baseを、Starup WindowにVideosを選ぶ。
言語にJapaneaseを選ぶ。
続いて、FreeNAS上のminiDLNAで構築したDLNAサーバを登録する。音楽>ファイルを選択。
ビデオを追加を選択。
参照を選択。
UPnP Devicesを選択してOK。
FreeNASが見つかったらOK。
何処のディレクトリにするかなので、好きなのを選んでOK。
上記のような感じで登録できる。
登録したFreenas-dlnaが表示されている。
ディレクトリを下がっていく。
miniDLNAに登録済み(sambaでアップロードしている)の動画一覧が表示される。
raspBMCの設定が済んだら、次はiphoneのOfficial XBMC Remoteをセットアップします。androidの場合にも同様のソフトがあるので検索してインストールしてください。
インストールする。
インストールすると、xbmcRemoteのアイコンが出るので起動します。
最初は何も登録されていないので、Add Hostから、XBMCサーバを登録します。ここでは、raspBMCに設定した固定IPアドレスを入力します。
Find XBMCをクリックすれば、ネットワーク上にあるXBMCサーバを勝手に探してきてくれます。
これで、Saveを押せば登録完了。簡単ですね。
登録したXBMCサーバをクリックすると、下記のような画面になるので、Files等から下に下がっていきます。
今回、freenas-dlnaと言うサービス名でFreeNAS上にminiDLNAをセットアップ済みなので、それを選択します。ファイルが無ければ、一番下のメニュー部分から探してください。青い『・・・』は他のメニューへのリンクです。
miniDLNAが認識しているファイル一覧が出ます。
クリックすると、メニューが表示されるので、Playを選択します。
再生が始まると、iphone側は下記のような画面になって、リモコンと同じような操作が出来る様になります。スライダーで10分後等に送ったり、早送り、停止、再生等をしてみると、これが本当にRaspberry PIかと言うほどサクサク動きます。
iphoneから再生位置等が手早く操作できるので、CM送りなども簡単です(あまりに快適に動くのでビックリしました)
再生中のRaspberry PI。真ん中のCPUが50度ぐらいまで熱を持ちます。ヒートシンクも買っておいた方が気分的に良いかもしれません。
大体、やりたい事は出来ました。後は、家中のTVに同じものをくっつけておけば、好きな所で集中管理されているFreeNAS上のmp4ファイルをどこからでも再生可能と言うことになります。同じようなことを謳った家電製品もあるのですが、FreeNASの場合、HDD容量を10Tとか20Tとかにして、幾らでもデータをため込めるし、RAID構成を組んであれば、HDDが一本程度死んでもデータが失われることは無いしでメリットばかりが目につきます。
この投稿で作った構成のメリット・デメリットをまとめます。
メリット
- 圧倒的に安い(Raspberry PI Raspberry Pi 2 Model B一式で6000円程度)
- H.264エンコード済みであればサクサク動く。1440×1080でも遅延無し。
- 早送りや再生ファイルの変更もサクサク出来る。
- FreeNASでZFSでraid-zを構築すれば、冗長化と大容量化が簡単
- リモコンはいつも手元にあるスマートフォンが使える。ワイヤレスのタッチパッド等でも良い。
- RAID構成が組んであればHDDが故障してもデータは無くならない。
- Raspberry PIの消費電力が圧倒的に低い。2~3w程度。
- 汎用品ばかりで構成しているので、壊れた場合の修理費用は単純に部品代のみ。
デメリット
- Raspberry PIが4K対応ではない(TVが勝手にアップコンバートしてくれると思いますが)
- TSファイル再生はそのままでは無理。H.264エンコードしたmp4が必要。(HDDの容量削減のためにエンコード済みなので気にならないので問題なし)。
- 常時付けっぱなしなので、あまり気にはならないが、シャットダウンしてもRaspberry PIの電源が切れない。気になるようなら中間スイッチを使えば良さそう。
普通のPC用のモニタにRaspberry PIをHDMIで接続すればかなりおもしろいことになりそうです。
TS ファイルはMPEG2のキーが必要みたいですねー
キーを入れてハードウェアデコードさせるとかなりさくさく見れますよ!