min117の日記

初期desireもち。趣味Mac,メインFedora,仕事xp。

RaspberryPi4 でデジタルサイネージ(apache + php のみで実装)

RaspberryPiでデジタルサイネージ作った。出力先はテレビ。こうなる。

f:id:min117:20210724135418j:plain

ピックとかバッハとか書いてあるけど、件のクソリンピックとは一切関係ない。

 

むしろ、あんなピック見なくてよくするためにテレビでBGM(クラシック)流したい、再生中の曲名を画面にサイネージしたい、それが今回のきっかけ。

 

※ ちなみにこのクソリンピックのあとは東京は大変なことになるだろう。まともな検査しないし、感染者数は隠すだろうけど。破綻は必ず来る。

 

ラズパイからNASにアクセス。フォルダに入ってる大量のmp3をループで順番に再生(omxplayer)しつつ、再生中の曲名を画面に映すようにした。

f:id:min117:20210724135423j:plain

min117.hatenablog.com

 

原理は簡単。

bashNASの中にあるmp3繰り返し読むループ組む。

・ループで捕まえたmp3をomxplayerで再生する。

 かつ

 そのmp3名を、拡張子.phpのファイルに書き込む(my_omxing.php

 かつ

 その.phpを/var/www/htmlに置く(mv my_omxing.php /var/www/html/

 直後に

 chromium-browserを全画面(kioskモード)で起動し、phpファイルを読む

 (chromium-browser http://localhost/my_omxing.php --kiosk 2>&1 &

・これをループ終わるまで(全てのmp3について)繰り返す。

 

これを実行するシェルスクリプトがこちら。

f:id:min117:20210724141506p:plain

f:id:min117:20210724141542p:plain

19行目

 吐き出されるphpファイル(my_omxing.php)の雛形ファイル(my_omxing.php_org)を指定する。

45行目

 全てのmp3ファイルについて繰り返す。

65行目

 my_omxing.php_org にある「再生ターゲット.mp3」を、ループ変数 $i で置き換えたうえで、my_omxing.phpと名前をつけて保存する

 文字列の置き換えにsedを使うが、ここが一番苦労した。

83行目

 chromium-browserを全画面(kioskモード)で起動している。2>&1してエラーも標準出力に突っ込み、かつ末尾に&をつけることでバックグラウンド実行している(そうしないとchromiumで処理が止まっちゃって、86行目のomxplayerに行かない)。

 

my_omxing.php_org はコレ。2行目の $my_target=test.mp3 が上記のsedで(再生するファイル名に)置き換えられる

f:id:min117:20210724142326p:plain

f:id:min117:20210724142346p:plain

 

11行目から62行目

 色を反転するクールなhtml。ココ参照。

qiita.com

f:id:min117:20210724143154p:plain

f:id:min117:20210724135418j:plain

macからVNCで見るとこんな。

f:id:min117:20210724143317p:plain

 

sedによる文字列置き換えについてはココ。

orebibou.com

いつもとても参考になる。作者はたぶん天才。

f:id:min117:20210724142954p:plain

 

某zonのデザインでもこんなだから、シンプルイズベストかもしらん。

f:id:min117:20210724143435p:plain