坂本研Webの大学院講義「フィジカルコンピューティング特論」作品展示でも書いたのですが,この展示では1つの紹介動画をループ再生で流しっぱにしています。
要するにデジタルサイネージみたいなものですが,一度設定したらあとは管理フリーにしたかった(つまり放置したい)ので,以下のような条件でやりたいと思いました。
- 朝自動的に起動し,夜自動的に終了する。
- 自動的に起動したときに,動画を自動的に再生し始めたい。
これを何で実現するか考えたとき,
- ノートPCやNUC: 定時の電源ON/OFFの設定が,少し調べた感じBIOSの対応を調べなければならず,面倒そう。かといって,外付けタイマーでON/OFFすると今度は「OSが正常にシャットダウンされませんでした」とか出そう。
- デジ像などのメディアプレイヤ: 意外と高い。応用が効かない。レジューム再生はできるけど,それをループ再生にはたぶんできない。
- デジタルフォトフレーム: 意外と高い。応用がかなり効かない。動画のフォーマットも限られている。
などと考えていったら,Raspberry Pi で実現するのが良いんじゃないかと思いました。表示はごく普通のPC用液晶ディスプレイを使う。ただしごく普通の安いのはHDMIがついていないこともあるので,HDMI-DVI変換をする。電源ON/OFFは外付けの家電用タイマで行う。
というわけで,主なものとして以下の機器を用意しました。
- Raspberry Pi 2 Model B
- Philips 15.6インチ液晶ディスプレイ 166V3LAB/11
- HDMI->DVI変換ケーブル (こういうやつ)
- リーベックス デジタルプログラムタイマII PT50DG
その他細かいものとしては以下を使いました。
- トランセンド microSDHC 8GB TS8GUSDHC10
- Raspberry Pi 2 Model B用エンクロージャ
- ヤザワ AC/USB変換アダプター HC100WHU2A
- ELECOM Micro-USBケーブル [A – MicroB] MPA-AMB20BK
RasPi2 には 2015-05-05-raspbian-wheezy をインストールし,raspi-config の Enable Boot to Desktop/Scratch では graphical desktop を選択します。
動画は今回は 960×540 (16:9), mp4(AVC/H.264), 29.97fps, 3Mbps で作りました。動画のアスペクト比やコーデックなどにあまり制限されないのも RasPi でやるメリットだと思います。この動画を RasPi2 の適当なディレクトリに置きます。
raspbian には動画プレイヤ omxplayer が始めから入っており,これでフルスクリーン再生ができます。
これを起動時に動作させるようこの辺などを参考に /etc/xdg/lxsession/LXDE-pi/autostart に以下を追加します。
@omxplayer --refresh --loop /path/to/video.mp4
リブートしたらだいたい期待通りの動きになりました。
これでうまくいくかと思ったのですが,テストのためしばらく放置してみると再生がフリーズしていることがあります(OS自体は動いています)。また,動画の最後の2~3秒が無視されて最初に飛んでしまいます。
そこで,OMXPlayer公式から最新ビルドomxplayer_0.3.6~git20150710~4d8ffd1_armhf.debを取ってきて以下のようにインストールします。
# wget http://omxplayer.sconde.net/builds/omxplayer_0.3.6~git20150710~4d8ffd1_armhf.deb # dpkg -i omxplayer_0.3.6~git20150710~4d8ffd1_armhf.deb
なお,OMXPlayer公式にある以下の手順は必要ありませんでした(2015-05-05-raspbian-wheezyには既にこれらのパッケージの最新版が入っていました)。
# apt-get install libpcre3 fonts-freefont-ttf
# apt-get install fbset
これで完璧に動くようになりました。
あとはデジタルプログラムタイマで,RasPi と液晶ディスプレイの両方を定時ON/OFFするように設定しました。