0
1

More than 5 years have passed since last update.

Rasberry Pi の標準プレーヤ(omxplayer)で、音楽を鳴らす

Last updated at Posted at 2019-08-06

最初に

もうすぐ子供が生まれ、とうとう父になるようです。
夜泣きとかすごいと思うので、赤ちゃんが泣いた時に、一時対応として、
「泣き声がすごかったら、ア●パ●マ●とかの曲を流す」ということをさせようと思っています。
要件:センサーで音を検知したら、音楽をランダムで再生する

この仕組みを作るためには、以下のことができなければなりません。
1.Rasberry Piで音楽を鳴らす
2.音センサーで検知させる
3.センサー検知後に、ランダムな曲を選択する
などなど

今回は、「1.Rasberry Piで音楽を鳴らす」ということを主眼に記事を書いていきます。

環境

Python
Rasberry Pi
USBミニスピーカ(DAISO製)

音楽を再生させてみる

■参考にさせていただいたURL
https://qiita.com/goowaSystemTeam/items/95525dae25dee270087b

基本的に、上記のURLを参考にすると、Pythonでの音楽の再生方法と停止の方法がわかります。

参考にしたURLだと、10秒で音楽を停止するようにしているので、
「音楽の長さを取得して、音楽の終了時に停止する」という処理に変えてみたいと思います。

ここで、mutagenというモジュールをインストールします。
以下の公式サイトに記載がありますが、オーディオのメタデータを操れるモジュールのようです。
https://mutagen.readthedocs.io/en/latest/

・mutagenのインストール

pip install mutagen

コード

playOmxplayer.py
# -*- coding: utf-8 -*-

import subprocess
import time

from mutagen.mp3 import MP3

#以下の音楽ファイルのパスは、環境に応じて変更してください
audio = MP3('/path/to/music/music_test.mp3')
print (audio.info.length)

#動画を再生する
#以下の音楽ファイルのパスは、環境に応じて変更してください
command = 'omxplayer /path/to/music/music_test.mp3'
proc = subprocess.Popen(command,shell=True,stdin=subprocess.PIPE)

#-- なんからの処理(音声の長さ分の停止)  --
#time.sleep(10)
time.sleep(audio.info.length)
#-------------------------------------

#終了処理
print("Fiininish")
proc.stdin.write("q")

これで、音楽終了時に、プレーヤーを停止させる、というロジックができました。

実行

python playOmxplayer.py

実行結果

192.574693878    #←再生する音楽の長さ(秒表示)
Audio codec mp3 channels 2 samplerate 44100 bitspersample 16
Subtitle count: 0, state: off, index: 1, delay: 0
Fininish
Stopped at: 00:03:12

無事にスピーカーからも音声が出力されました

IMG_0091.JPG
※DAISOさんのスピーカは、USBで給電して、イヤホンジャック部分にプラグを挿すようです。

さて、次回はRaspiの配線の先にある、音センサーとの接続をやっていきたいと思います。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1