スマホをリモコンにraspberry piでFreeNAS上の動画を再生する


『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接続のキーボードか、マウスがないと厳しいです。安物で良いので用意しておきましょう。

RaspBMC_00

先に結果を見せてしまいましたが、この投稿にまとめるのは下記の連携です。

  1. epgrecで録画する(任意)
  2. ffmpegでH.264圧縮をする(必須)
  3. 録画サーバからFreeNASに転送する(任意)
  4. 上記1~3をcronで自動化する(任意)
  5. FreeNAS上からDLNA配信する(必須)
  6. 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接続のマウスかキーボードを用意しておくと良いです。

RaspBMC_001

Raspberry PIの動作に最低限必要な物。Amazonだとまとめ買いしないと

セットアップ中に必要な物(無ければ予め購入しておいてください。)

raspBMCのダウンロードメニューからイメージをダウンロードします。WindowsでSDカードにイメージを転送する場合はこちらから。LinuxやMacの場合はこちらから。

RaspBMC_01

Windowsでのセットアップは、SDカードをSDカードライタで書き込みます。ダウンロードしたraspbmc-win32を回答した中のinstallerを実行すると下記の画面が出てくるので、Acceptをクリックします。

RaspBMC_02

SDカードを挿入したSDカードライタを指定してインストール。

RaspBMC_03

インストールが終わると、Congratulations!が表示されるので、×ボタンで終了。

RaspBMC_04

ここからがRaspberry PIを利用します。SDカード、HDMIケーブル、USBマウス、LANケーブル、マイクロUSBケーブルを指して、電源を入れます。Raspberry PIは電源ボタンが無いので、通電したら勝手に電源ON状態になります。

RaspBMC_10

少し待っていると、TVにRaspBMCの画面が出てきます。

RaspBMC_30

この画面になる前に、アップデートがあるけどどうする?みたいな事を聞かれる場合が多いです。その場合にはおとなしくアップデートすればOKです。初回起動時には英語画面になっているので、設定を進めます。ここは、Windows版のXBMCとほぼ同じなのですが、IPの設定等はRaspBMC用のインターフェースが用意されているので、最初に、RaspBMCを固定IPにしておきましょう。

RaspBMC_31

Raspbmc Settingsをクリックすると、下記のような画面になります。

RaspBMC_32

この画面で、USB DHCPのチェックを外し、固定IPを設定します。

次に、XBMCの日本語化と、FreeNAS上のminiDLNAサーバを登録します。

インストール出来たら日本語化して、FreeNASで構築したDLNAサーバを登録します。UIはWindows版のXBMCとほぼ同じなので、(スクリーンショットがきれいな)Windows版の画面を載せます。

xbmc17

System > settingsを選ぶ。

xbmc18

Appearanceを選ぶ。

xbmc19

skinで、FontsにArial baseを、Starup WindowにVideosを選ぶ。

xbmc21

言語にJapaneaseを選ぶ。

xbmc22

続いて、FreeNAS上のminiDLNAで構築したDLNAサーバを登録する。音楽>ファイルを選択。

xbmc23

ビデオを追加を選択。

xbmc24

参照を選択。

xbmc25

UPnP Devicesを選択してOK。

xbmc26

FreeNASが見つかったらOK。

xbmc27

何処のディレクトリにするかなので、好きなのを選んでOK。

xbmc28

上記のような感じで登録できる。

xbmc40

登録したFreenas-dlnaが表示されている。

xbmc41

ディレクトリを下がっていく。

 

xbmc42

miniDLNAに登録済み(sambaでアップロードしている)の動画一覧が表示される。

raspBMCの設定が済んだら、次はiphoneのOfficial XBMC Remoteをセットアップします。androidの場合にも同様のソフトがあるので検索してインストールしてください。
RaspBMC_50

インストールする。

RaspBMC_51

インストールすると、xbmcRemoteのアイコンが出るので起動します。

RaspBMC_52

最初は何も登録されていないので、Add Hostから、XBMCサーバを登録します。ここでは、raspBMCに設定した固定IPアドレスを入力します。

RaspBMC_53

Find XBMCをクリックすれば、ネットワーク上にあるXBMCサーバを勝手に探してきてくれます。

RaspBMC_54

これで、Saveを押せば登録完了。簡単ですね。

RaspBMC_55

登録したXBMCサーバをクリックすると、下記のような画面になるので、Files等から下に下がっていきます。

RaspBMC_56

今回、freenas-dlnaと言うサービス名でFreeNAS上にminiDLNAをセットアップ済みなので、それを選択します。ファイルが無ければ、一番下のメニュー部分から探してください。青い『・・・』は他のメニューへのリンクです。

RaspBMC_58

miniDLNAが認識しているファイル一覧が出ます。

RaspBMC_59

クリックすると、メニューが表示されるので、Playを選択します。

RaspBMC_60

再生が始まると、iphone側は下記のような画面になって、リモコンと同じような操作が出来る様になります。スライダーで10分後等に送ったり、早送り、停止、再生等をしてみると、これが本当にRaspberry PIかと言うほどサクサク動きます。

RaspBMC_70

iphoneから再生位置等が手早く操作できるので、CM送りなども簡単です(あまりに快適に動くのでビックリしました)

RaspBMC_72

再生中の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で接続すればかなりおもしろいことになりそうです。

タグ付けされた , , , , , , . ブックマークする へのパーマリンク.

One Response to スマホをリモコンにraspberry piでFreeNAS上の動画を再生する

  1. もち 曰く:

    TS ファイルはMPEG2のキーが必要みたいですねー

    キーを入れてハードウェアデコードさせるとかなりさくさく見れますよ!

コメントを残す

メールアドレスが公開されることはありません。