概要
デジタルフォトフレームは写真のみ再生ですので、バックグラウンドにMP3ファイルを再生するのもよいかなと思ってネットで調べたものをメモしてみます。
インストールするパッケージ
①サウンドを出力するパッケージをインストールする
・パッケージインストール
pi@RPI3B:~ $ pip install playsound
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting playsound
Downloading https://www.piwheels.org/simple/playsound/playsound-1.3.0-py3-none-any.whl (8.0 kB)
Installing collected packages: playsound
Successfully installed playsound-1.3.0
・サンプルコード
import playsound
playsound.playsound('sample.mp3')
②PyGameパッケージはキーボード制御、サウンド出力などゲームに必要な機能が含まれているパッケージです。
・パッケージインストール
私は既にインストールされているメッセージが出ていますが、皆さんは確認してみてください。
pi@RPI3B:~ $ pip install pygame
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Requirement already satisfied: pygame in /usr/lib/python3/dist-packages (1.9.6)
・サンプルコード
import pygame
SCREEN_WIDTH = 400
SCREEN_HEIGHT = 500
pygame.init()
SCREEN = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
pygame.display.set_caption("pygame sount test")
clock = pygame.time.Clock()
pygame.mixer.music.load('sample.mp3')
# MP3を無限繰り返し再生
pygame.mixer.music.play(-1)
playing = True
while playing:
for event in pygame.event.get():
if event.type == pygame.QUIT:
playing = False
pygame.quit()
if event.type == pygame.KEYDOWN:
# 「↑」キーを押下するとボリュームを上げることができる
if event.key == pygame.K_UP:
v = pygame.mixer.music.get_volume()
pygame.mixer.music.set_volume(v + 0.1)
print("volume up")
# 「↓」キーを押下するとボリュームを下げることができる
if event.key == pygame.K_DOWN:
v = pygame.mixer.music.get_volume()
pygame.mixer.music.set_volume(v - 0.1)
print("volume down")
# 「←」キーを押下すると再生されるMP3中止される
if event.key == pygame.K_LEFT:
pygame.mixer.music.pause()
print("stop")
# 「→」キーを押下するとサンプルファイルが再生できる
if event.key == pygame.K_RIGHT:
pygame.mixer.music.unpause()
print("re-play")
clock.tick(60)
その他
繋げているLCDの中にスピーカーが内蔵されているものの場合、下記のコマンドでHDMIを再指定すると
問題なく音が出るようになりましたので、参考してみてください。
・コマンド
pi@RPI3B:~ $ sudo raspi-conf
①「System options」を選択する
②「S2 Audio」を選択する
③「HDMI 1」を選択する
④「Finish」を選択する
終わりに
デジタルフォトフレームに写真が見えて好きなMP3を再生することができるようになりました。
今のソースでは1つのファイルしか再生できないですが、次回に複数のファイルが再生できるように工夫してみます。
今日はここまでです。
ありがとうございます。