RaspberryPiでデジタルサイネージ作った。出力先はテレビ。こうなる。
ピックとかバッハとか書いてあるけど、件のクソリンピックとは一切関係ない。
むしろ、あんなピック見なくてよくするためにテレビでBGM(クラシック)流したい、再生中の曲名を画面にサイネージしたい、それが今回のきっかけ。
※ ちなみにこのクソリンピックのあとは東京は大変なことになるだろう。まともな検査しないし、感染者数は隠すだろうけど。破綻は必ず来る。
ラズパイからNASにアクセス。フォルダに入ってる大量のmp3をループで順番に再生(omxplayer)しつつ、再生中の曲名を画面に映すようにした。
原理は簡単。
・ループで捕まえた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について)繰り返す。
これを実行するシェルスクリプトがこちら。
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で(再生するファイル名に)置き換えられる。
11行目から62行目
色を反転するクールなhtml。ココ参照。
sedによる文字列置き換えについてはココ。
いつもとても参考になる。作者はたぶん天才。
某zonのデザインでもこんなだから、シンプルイズベストかもしらん。