【Raspberry Pi】mp3をpythonで再生する方法

こんにちは! けい(Twitter)です。

この記事はこんな人におすすめ
  • mp3をラズパイで再生する方法が知りたい方
  • pythonプログラムで実行したい方

ラズパイのオーディオ環境

ディスプレイにHDMIを繋ぐ方法

ラズパイをディスプレイに直接HDMIで繋いでいる方は、ディスプレイのスピーカーからラズパイの音声出力が出ているはずです。

まずyoutubeなどで、音が出るかを試してみましょう。

HDMIを接続しているのに音が出ない場合は、HDMIケーブルに音が伝わっていなかったり、ディスプレイのスピーカーの故障などが考えられるので、次の方法を試してみて下さい。

ラズパイのA/V out端子にスピーカーを繋ぐ方法

こちらの方法の方が確実性が高いので、おすすめです。

写真はラズパイ3B+のオーディオ端子を示しています。
オーディオ端子にスピーカーを接続します。

Omxplayerを使用してコマンドラインでmp3を再生

mp3を再生

omxplayerは、RaspberryPi OSをインストールすると、デフォルトでインストール済です。
なので、新たにインストールする必要がなく、mp3を再生できます。
また、動画も再生することができます。

一応omxplayerのインストールコマンドです。

$ sudo apt update
$ sudo apt install omxplayer

では、さっそくmp3ファイルを鳴らしていきたいのですが、mp3ファイルを用意する必要があります。
そこでラズパイ公式が紹介している、こちらのコマンドでmp3ファイルをダウンロードしてみます。

$ wget http://rpf.io/lamp3 -O example.mp3 --no-check-certificate

現在のディレクトリに「example.mp3」というファイルがダウンロードされます。

このファイルを使って、次のコマンドでmp3を再生してみます。

$ omxplayer example.mp3

いかかでしょうか? 

このように簡単にmp3ファイルを再生することができます。

オプション

オプションを指定することもできます。

次のコマンドでオプションで何を変えられるかを見ることができます。

$ omxplayer -h

HDMI経由で音声を出したいときは次のコマンドを実行します。

$ omxplayer -o hdmi example.mp3

イヤホンジャックから音声を出したい時は次のコマンドを実行します。

$ omxplayer -o local example.mp3

HDMIとイヤホンジャック両方から音声を出したい時は次のコマンドを実行します。

$ omxplayer -o both example.mp3

他にもオプションは沢山あるので、試してみて下さい。

pythonでmp3を再生

omxplayerはコマンドで実行するため、pythonでsubprocessを使えば、python上でコマンドを実行することができます。

サンプルコード

from time import sleep
import subprocess

MP3_PATH = 'example.mp3'
args = ['omxplayer', MP3_PATH]

process = subprocess.Popen(args)
sleep(5)

args = ['kill', str(process.pid)]
subprocess.Popen(args)

2行目:import subprocess

pythonでコマンドを実行するために、subprocessをimportします。

7行目:process = subprocess.Popen(args)

この行でコマンドを実行しています。

実行したいコマンドは、「omxplayer example.mp3」です。
コマンドの文字列をargsに格納し、subprocess.Popenの入力としています。

11行目:subprocess.Popen(args)

最後にプロセスを終了するために、killコマンドを実行します。