仕事柄、RaspberryPiをメディアプレーヤーとして使用する機会が多いのですが、ふと自動起動した際にUSBメモリを読んで自動再生させたいなと思ったので、メモです。
起動時のスタートアップスクリプト
autostart.shファイルを用意することで可能です。
$ nano /storage/.config/autostart.sh
ここにシェルスクリプトを書いていきます。
#!/bin/sh
(
# 起動を待つ
sleep 20
MEDIA=`ls /media/ | cut -d" " -f1`
if [ "" = $MEDIA ]; then
echo "no such media."
else
TYPE=`cat /media/${MEDIA}/type.txt`
if [ "video" = $TYPE ]; then
echo "play ${TYPE}"
kodi-send --action="XBMC.PlayMedia(/media/${MEDIA}/)"
kodi-send --action="XBMC.PlayerControl(repeatall)"
kodi-send --action="Action(Fullscreen)"
elif [ "image" = $TYPE ]; then
echo "play ${TYPE}"
kodi-send --action="SlideShow(/media/${MEDIA}/)"
fi
fi
)&
解説
このスクリプトは起動処理をブロックするため、全体を()で囲み、最後に&をつけることでバックグラウンドプロセス化しています。
まずは、20秒間、LibreELECが起動するのを待ちます。
sleep 20
ls /media
でディレクトリを一覧し、pipeでつなぎ、cutでスペース区切りを配列に変換したのちに、配列の頭の値を取得することでパスを取得します。
MEDIA=`ls /media/ | cut -d" " -f1`
動画と静止画、それぞれニーズがあるので、type.txtをUSBメモリに配置してそのファイルの中身を確認します。
TYPE=`cat /media/${MEDIA}/type.txt`
ファイルの中身がvideoなら、動画を再生
ファイルの中身がimageなら、静止画をスライドショー
あとはシンプルなシェルスクリプトです。
kodi-send
LibreELECやOSMC等のKodiプラットフォームではkodi-send
というコマンドを使用してコントロールできます。
動画再生
/media/${MEDIA}/
ディレクトリにあるメディアファイルを再生します。
$ kodi-send --action="XBMC.PlayMedia(/media/${MEDIA}/)"
すべてをリピート再生します。
$ kodi-send --action="XBMC.PlayerControl(repeatall)"
動画再生をフルスクリーンにします。
$ kodi-send --action="Action(Fullscreen)"
静止画スライドショウ
$ kodi-send --action="SlideShow(/media/${MEDIA}/)"
autoexec.py
autoexec.pyを使って、pythonで起動スクリプトを書くこともできるそうです。
https://kodi.wiki/view/Autoexec_Service