映像展示の再生デバイスとしてRaspberry Piを使うと最高(Raspbian Stretch版)

※以前、同内容のエントリ「映像展示の再生デバイスとしてRaspberry Piを使うと最高 - nomolkのブログ」を公開していましたが、久しぶりに準備したら状況が変わっていたので最新版として再公開します。

Maker Faireとか展示会とかに作品を出すとき、映像展示として動画を流しっぱなしにしておきたいケースがよくあります。デジタルサイネージ的なやつです。当初ノートPCにモニタをつないでやっていたのですが、パソコンとして使いたい時に映像を止めなければいけないし、離席中などに盗難にあうリスクもあります。再生環境について何年も模索した末、Raspberry Piを使用するのがベストという結論にたどり着きました。

いいところ

・小さくて軽量(DVDプレーヤは重い)
・比較的、安価
・カスタマイズの自由度が高い
・動画フォーマットを問わない
・モニタとの相性問題が少ない(安物の中国製DVDプレーヤを使っていると、たまにリフレッシュレートの関係で表示できないモニタがありました)
・電源が遮断されても無操作で自動復帰できる(長期の展示会で夜間に電源が遮断される場合に、毎朝わざわざ再生ボタンを押しに行かなくてよい)

悪いところ

・HDMI入力のあるモニタが必要(VGAコンバータを持って行けば解決。コンバータ噛ませたときの設定方法
・準備が多少面倒(DVD等に比べるとさすがに)

あと別解としてタブレットを使うと1台完結で済むのでめちゃくちゃ楽ですが、視野角が狭いのと盗難リスク、あとはやっぱりでかい画面のほうが人目を惹くので、できればモニタを使ったほうがいいと思います。

基本的なやりかた

OSはRaspbian Stretch with desktopを入れておけば問題ないです。OSのインストール方法は長くなるので他所で調べよう。
そのあと実機でターミナルを開くかSSHでログインします。StretchはデフォルトでSSHがOFFになっているので注意しましょう。GUIの設定メニューのインターフェースのところで有効化するか、/boot/ ディレクトリに ssh という名前のファイルを置いても有効化されます。

動画の再生にはomxplayerという動画プレーヤを使用します。
/home/pi/.config/lxsession/LXDE-pi/autostart に以下を追加します。

@omxplayer --refresh --loop -o both  再生したい動画ファイル
  • o both オプションをつけると、HDMIとRaspberry Piのオーディオ端子の両方から音声を出力できます(オプションの一覧はこちら)。こうしておけばモニタにスピーカーがついていればそれが使えますし、なければスピーカーを持ち込んで接続できます。

※追記:モニタを変えたら映像が映らなくなってしまいましたが、--refresh を削除したらできました。うまくいかない場合はお試しください。

再生したい動画が1本であれば、これだけで設定完了です。起動時に動画を自動再生してくれます。

動画の配置方法ですが、自分はSSHにTeraTermを使っているのでSSH SCPの機能で転送しています。もちろん普通にUSBメモリとかで移動してもいいです。

複数の動画を連続再生する

動画が1本なら上記の方法でいいのですが、複数の動画を順番に流したい場合もあると思います。あいにくomxplayerにはプレイリスト機能がないので、スクリプトを使って1本再生ごとに起動し直します。
下記はこの記事に載っていたスクリプトにオプション設定を足したものです。

#!/bin/sh

setterm -cursor off
VIDEOPATH="動画ファイルのディレクトリ" 
SERVICE="omxplayer"

while true; do
        if ps ax | grep -v grep | grep $SERVICE > /dev/null
        then
                sleep 1;
        else
                for entry in $VIDEOPATH/*
                do
                        clear
                        omxplayer --refresh -o both $entry > /dev/null
                done
        fi
done

これを例えば videoplayer.sh という名前で保存して、/home/pi/.config/lxsession/LXDE-pi/autostart にはomxplayerのかわりに

@bash /home/pi/videoplayer.sh

を追記します。パスはスクリプトを置いたパスに置き換えてください。

上記はディレクトリ内の動画をすべて再生する場合ですが、プレイリストを事前に作っておいてそのとおりに再生する方法もありました。再生順を指定したい場合はこれがよさそうです。
Omxplayer to play a list of files sans GUI - Raspberry Pi Forums

ちなみに連続再生する場合は動画同士のボリュームをきちんと合わせておかないと、動画が切り替わるたびにスピーカーの音量を調節せねばならず非常にだるいことになります。必ず事前にMP3Gain + AACGain等を使ってレベルを合わせておきましょう。

書きながら気がついたのですが、こんなことしなくても全部つなげた動画を1本作っておいて普通にループさせるのが一番楽かもしれません。

機材環境

だいたい下記の3つのどれかを使っています。
1.HDMI入力付きのテレビ
2.適当なモニタ+bluetoothスピーカー(有線でつなぐ)
3.適当なモニタ+モノラルのパワードスピーカー

大きい展示会で会場側にモニタを用意してもらうと1.のパターンになることが多いです。楽ですが、場合によっては追加のスピーカーを検討したほうがいい場合も。

2.の場合はあまり音量が出ないので、展示会場等では雑踏にかき消されがちです。スピーカーの選定に気を遣う必要があります。
[asin:B01H007O6K:detail]
僕は最近これを使っています。わりと大きい音も出せますし、長辺20cmで800g超なので手搬入も余裕です。大画面だと音量足りないですが、長机の上に20インチ前後のモニタ置くくらいの規模で使うなら十分だと思います。安定動作優先のためbluetoothは使わず有線でつなぎます。

3.はあまりない状況かもと思いますが、イベントがあったりして簡易PAも兼ねたい場合です。
スピーカーが1本なのでモノラルで再生したいのですが、omxplayerには動画の音声をモノラル再生するオプションが見当たらず、必要に応じてポータブルミキサーを噛ませています。

未解決の問題

冒頭に挙げた「電源が遮断されても無操作で自動復帰できる」のは再生機器側だけの問題であって、モニタの電源は別途入れなければいけません。
電子工作をして、画面の輝度が低かったらリモコンのシグナルを送ってテレビをつけるとかサーボでモニタの電源ボタンを押すとかやればいいのですが、面倒だしそれはそれで動作確認が必要になるので、現実的な落としどころとしては会場のスタッフの方にお願いしたりしています。

また、上記の設定をしたRaspberry Piを直接操作して、動画再生を終了させる手段が見つかっていません(ドキュメントにはキーボードのQを押せと書いてありますが反応しません)。動画再生をやめるにはSSH等でログインして自動起動設定を解除したのち、再起動する必要があります。キーボード等で直接、動画再生を中断する方法があれば教えてください。

告知


「技術力の低い人 限定ロボコン(通称:ヘボコン)」という企画を主催しているのですが、6/30にヘボコン2018を開催します。出場申し込みは本日24時締切、観戦チケットは来週発売予定です。
それから5/18-20は米国サンマテオ(サンフランシスコの近く)で開催されるMaker Faire Bay Areaにも出展します。
いずれも詳細はデイリーポータルZにて。
portal.nifty.com

↓過去のイベントの様子です
www.youtube.com
www.youtube.com