あおしまの日記

あおしまさんの日記らしいです。個人的に興味がある事を時々書きます。スマートウォッチPebble日本語パックを作成、公開しています。

RaspberryPiを使った動画再生ボックス製作

16:9な動画を流して展示する話が持ち上がり、従来使っていた動画再生ボックスもそろそろ更新するか?という話になったので、いい機会だからRaspberryPiで作ってみようかというのが発端です。
さすがに10年前の4:3映像を今でも流すのも何ですし、流しているテレビはすでにHDMIありの16:9画面なので、自分の頭の体操を兼ねてやって見た記録です。
aoshimak.hatenadiary.jp

条件は?

  • 電気入れたら動画をぐるぐるさせたい。タイマーでブチッと切れたら次回再起動で手間なく管理したい。
  • 全画面で動画を流すので、X動かなくても良い。コンソールで動画流れるならその方が良い。
  • 動画の差し替えが簡単にできる仕組みを考えたい。

機種をどうするか?

RaspberryPi4が出たタイミングなのでもちろんこれにしたかったのですが、2020年6月時点だと諸々の問題点がありました。

動画をどう再生するか問題

  • Raspi3/4は64bit対応OSが出てきたが、コンソール動画再生はVLCに変わっている。CPUパワーで押し切る形だが、動きは良い。ただし発熱すごい。
    • vlcの場合のメリットとしては、m3u形式のプレイリストが使えて、それをループ再生できる。データ領域にplaylistを置いておき、それを指し示して-Lでループさせると便利。-Rだとプレイリストの先頭のものだけ繰り返すので1ファイルの繰り返しになってしまうので注意。
  • Raspi1/2/3は従来の32bitOSを使えて、コンソール動画再生はomxplayerを使用する。素晴らしいライブラリだが、64bit環境には移植されない方向。発熱は少ない。

github.com

  • omxplayerはRaspi1/2/3どれでも、用意した5分/45MBのmpeg4をぬるぬる再生できた。しかし、動画のローディングは機械のCPU能力に比例した。複数動画の切り替わりにはRaspi3の方が向いている。

動画をどう配置するか問題

  • SDカードを使い捨てと割り切って、RaspiのSDカード内に専用区画を作って、そこに動画を置くことにした。
  • 専用区画をFAT32にすることで、このSDカードをパソコンに差し込めば、目的の区画へのファイル出し入れは簡単に行えるようにした。
  • 具体的には、32GBのSDを用意し、RaspiOSを書き込み直後、gpartedなどでOSエリアを後ろ16GBに移動拡張した。
  • すると、boot領域の区画1と、後ろ16GBの区画2の間に、15GB強の領域が設定できる。ここをFAT32の区画3として確保する。(これもgpartedでやった)
  • そのあと、RaspiOSを起動する。
  • ディレクトリ/mnt/dataを作成する。ここにデータ領域をマウントさせたい。
  • /etc/fstabに/dev/mmcblk0p3のマウント情報を書き足す。形式vfat、partuuidXXXXX-03としておくと楽。もちろん自動でマウントさせたい。(noautoつけない)

自動再生のためのお膳立て

  • raspi-configで起動レベルをコンソール+自動ログインに設定。アカウントpiの自動ログイン。キーボード繋がないし、networkも繋がない、普段隠して置く展示機なのでこれで良い。
  • アカウントpiの.bashircの末尾に、動画再生スクリプトの実行のために、sh movieplay.shみたいな行を足しておく。
  • movieplay.shの内容は以下の通り。内容はここから拝借。

nomolk.hatenablog.com

 #!/bin/sh
 
 setterm -cursor off -blank 0
 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
    • キーボードも繋がないので、省電力設定が働いて表示が出なくなった。対策として、settermの行に-blank 0を足してある。

設置

  • 最終的には手元に余っていたRaspi1(mpeg2アクセルコードあり)を利用することにした。
  • コンセントにタイマーを置き、そこから延長コードで2口に分け、テレビとRaspiにつないだ。
  • HDMIケーブルでRaspi-TVを接続
  • SDカードを差し込んで、起動。
  • 一定時刻になると再生を開始し、一定時刻になると電源が落ちる。

追記

  • 結局Raspi4買っちゃったので、それはそれで、KODI用にセットしてみた記録

  • HDMIケーブルがmicroHDMIになった。変換ケーブルで対応した。
  • 電源がUSB-Cになった。microB-USBC変換コネクタで対応した。
  • 電気を食うデバイスを使わないので、電源は従来から使っている2.1Aのものをそのまま使ったが、KODI動画再生には問題なかった。
  • 2020年6月現在だと、LibreELEC−64bitではRaspi4のCEC対応がない。リモコンを別に用意することになる。今後の対応に期待して待ち。
  • Raspi4は発熱がすごい。ファン導入も検討したが居間に置くので音が出るのはやめた。全身放熱フィンのようなケースを用意した。Amazonに似たようなのが多いので、日本国内から送られる物を探すと良い。*1

  • 同じSDカードをRaspi3に差し込んでもLibreElec−64bitが起動した。こちらはCEC対応もあり、動画再生能力も向上した。32bitの時に比べて、NASにある生TSの倍速再生でストレスがなくなったので、今のところはこれでいいやということになった。

Raspberry Pi 3 Model B V1.2 (日本製) 国内正規代理店品

Raspberry Pi 3 Model B V1.2 (日本製) 国内正規代理店品

  • 発売日: 2016/02/29
  • メディア: Tools & Hardware

*1:自分はAliから買った。5月末〜6月ごろはAmazonに中華からの物品が軒並み品切れ、またはバカ高になっていた。コロナの影響と、大規模な関税脱税の反動で中国→日本の物流が滞っていたタイミングだった模様。それとAmazon側のサクラチェッカー対策での中華出品者のFBA移行が組み合わさって、日本国内の在庫がなくて軒並み売り切れか、中国発送のものしかない状況に当たってしまっていた。そこで、源流であるAliに探しに行って購入した。6月頭に買って、6月末に到着。