ラズパイを使ってomxplayerでフォルダ内に保存された音楽ファイル(mp3, m4a等)をランダム再生する方法です。
omxplayerがインストールされていない場合は、以下のコマンドでインストールしてください。
実際に作ったプログラムは以下の通りです。
13行目の参照フォルダは音楽ファイルのみが保存されているフォルダを指定してください。
ターミナルで実行した場合、フォルダ内のファイル数、ファイル名、ランダムで選んだ番号などが表示されるようになっています。
参考にしてください。
実行イメージ
ファイル数: 15 1-11 Tout Tout Pour Ma Cherie.mp3 03 Chiquitita.mp3 redOrBlack.mp3 07 Dancing Queen & Waterloo.mp3 ANNIE_SPECIAL_EDITION_Title11.mp4 01 Dancing Queen.mp3 06 Gimme Gimme Gimme.mp3 02 Honey Honey.mp3 lesMiserable.mp3 04 Our Last Summer.mp3 08 Time To Say Goodbye.mp3 15 Amazing Grace.mp3 01 勝つんだ!.mp3 08 Mamma Mia.mp3 05 I Have A Dream.mp3 8 曲目を再生 再生コマンド: omxplayer -o local /home/pi2/music/'lesMiserable.mp3'
解説
フォルダ内のファイル名はosコマンドlistdirで取得できます。
取得されるデータはリスト形式です。
使用例
files = os.listdir(フォルダパス)
filesにはfiles[0], files[1]…と連番でファイル名が保存されます。
filesの要素数すなわちフォルダ内のファイル数は、len関数で取得します。
len(files)
乱数と組み合わせて、取得したファイル名のうちの1つのファイル名添え字を決定します。
# 乱数で選曲
r = random
r.seed()
play_no = r.randint(0, len(files)-1)
omxplayerは以下のコマンドでターミナルからは呼び出せます。
omxplayer -o local パス名を含めたファイル名
例えば、以下のような文字列を作ってosコマンドpopenで呼び出せばいいわけです。
omxplayer -o local /home/pi/music/hogehoge.mp3
しかし、スペースを含む音声ファイル名の場合きちんと再生してくれませんでした。そこで文字列連結の際にファイル名の前後に’シングルクォーテーションをつけて文字列を生成するようにするときちんと動作しました。
実際のプログラム部分
cmd = "omxplayer -o local " + music_pass + "'" + file + "'" result = os.popen(cmd).readline().strip()
わたしはcrontabで毎朝決まった時間にこのプログラムの実行を設定しておき朝の音楽として利用しています。
目覚ましなどにも利用できそうです。
コメント