janinfernal
@janinfernal

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Raspberry Pi 起動時から自動音楽再生させたい

解決したいこと

Raspberry Piで起動時にシェルスクリプトでもPythonでもいいのでイヤホンジャックから音楽を自動再生させたいです。

発生している問題・エラー

手動(マウスカーソルで)Thonny Python IDE、シェルスクリプト実行は
どちらも問題なく稼働しているのですが、自動(.serviceなど)にすると音が出ない、
再生ファイルは.wav .mp3どちらでもいいです。
pythonはLEDとスイッチも追加してみたがソフトが動いてはいました、
接点で再生+LED点灯にしましたがLEDのみ点灯しました。

追記
ターミナルでshを実行しても音が出ませんでした。

sudo sh /home/admin/a.sh

メイン基板ラズパイ4
音出力は AVジャック、音量MAX、Muteなし イヤホンジャックからスピーカに接続になってます。

例)

#a.sh
aplay /home/admin/a.wav




#a.py すみません、色々試したやつの途中しかなかったので見やすいようにはしていませんが載せときます。

import vlc
import RPi.GPIO as GPIO
#import cv2##
from PIL import Image
import picamera
import time
import subprocess, shlex
from mutagen.mp3 import MP3
#import pygame.mixer

#pygame.mixer.init(30000)
#pygame.mixer.music.load("/home/admin/da/TALK_001.wav")
#pygame.mixer.music.play(1)

#from playsound import playsound
#playsound("/home/admin/da/TALK_001.wav")

#p = vlc.MediaPlayer()
#p.stop()
#p = vlc.MediaPlayer()
#p.set_mrl('/home/admin/da/TALK_001.wav')
#p.play()

#起動確認
subprocess.Popen("/home/admin/Desktop/g.sh".split(),stdout=subprocess.PIPE, shell=True)
#subprocess.call("aplay /home/admin/da/TALK_001.wav", shell=True)
#vlcPath = "/usr/bin/cvlc"
#vid = "/home/admin/da/TALK_001.mp3"
#subprocess.call([vlcPath, vid])
#subprocess.call("mpg321 /home/admin/da/TALK_001.mp3", shell=True)
#p = subprocess.Popen([vlcPath, vid])



GPIO.setmode(GPIO.BCM)
GPIO.setup(14, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(15, GPIO.OUT)#L

GPIO.setup(18, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(23, GPIO.OUT)#L

GPIO.setup(24, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(25, GPIO.OUT)#L

GPIO.setup(8, GPIO.IN, pull_up_down=GPIO.PUD_UP)


time.sleep(3)#表示時間12
for i in range(4):
  GPIO.output(15, GPIO.HIGH)#L
  time.sleep(0.3)#表示時間3
  GPIO.output(15, GPIO.LOW)#L
  time.sleep(0.3)#表示時間3

#p = vlc.MediaPlayer()

try:
    while True:
               if GPIO.input(14) == 0:##elif
                  GPIO.output(15, GPIO.HIGH)#L
                  time.sleep(0.5)
                  #GPIO.output(15, GPIO.LOW)#L
                  #p.stop()
                  #p = vlc.MediaPlayer()
                  #p.set_mrl('/home/admin/da/TALK_001.mp3')
                  #subprocess.call([vlcPath, vid]).kill()
                  #vlcPath = "/usr/bin/cvlc"
                  #vid = "/home/admin/da/TALK_001.mp3"
                  #subprocess.Popen([vlcPath, vid])
                  subprocess.Popen("/home/admin/Desktop/g.sh".split(),stdout=subprocess.PIPE, shell=True)
                  #subprocess.call("mpg321 /home/admin/da/TALK_001.wav", shell=True)
                  #p.stop()
                  #p = vlc.MediaPlayer()
                  #p.set_mrl('/home/admin/da/TALK_001.wav')
                  #0p.play()
                  
                  #pygame.mixer.music.stop()
                  #pygame.mixer.music.load("/home/admin/da/TALK_001.wav")
                  #pygame.mixer.music.play(1)
                  #SoundPlayer.play('/home/admin/da/TALK_001.mp3', stop=True)
                  #p.play()
                  time.sleep(2)

               if GPIO.input(18) == 0:##elif
                  GPIO.output(23, GPIO.HIGH)#L
                  time.sleep(0.5)
                  #GPIO.output(23, GPIO.LOW)#L
                  #p.stop()
                  #p = vlc.MediaPlayer()
                  #p.set_mrl('/home/admin/da/TALK_002.mp3')
                  #SoundPlayer.play('/home/admin/da/TALK_002.mp3', stop=True)
                  #subprocess.call([vlcPath, vid]).kill()
                  #vlcPath = "/usr/bin/cvlc"
                  #vid = "/home/admin/da/TALK_002.mp3"
                  #subprocess.Popen([vlcPath, vid])
                  
                  pygame.mixer.music.stop()
                  pygame.mixer.music.load("/home/admin/da/TALK_002.mp3")
                  pygame.mixer.music.play(1)
                  #p.play()
                  s#ubprocess.call("play /home/admin/da/TALK_002.wav")
                  time.sleep(2)
                
               if GPIO.input(24) == 0:##elif
                  GPIO.output(25, GPIO.HIGH)#L
                  #GPIO.output(25, GPIO.LOW)#L
                  p.stop()
                  #p = vlc.MediaPlayer()
                  #p.set_mrl('/home/admin/da/TALK_003.mp3')
                  #SoundPlayer.play('/home/admin/da/TALK_003.mp3', stop=True)
                  #subprocess.call([vlcPath, vid]).kill()
                  vlcPath = "/usr/bin/cvlc"
                  vid = "/home/admin/da/TALK_003.wav"
                  subprocess.Popen([vlcPath, vid])
                  
                  #pygame.mixer.music.stop()
                  #pygame.mixer.music.load("/home/admin/da/TALK_003.mp3")
                  #pygame.mixer.music.play(1)
                  #p.play()
                  time.sleep(2)
                  
               if GPIO.input(8) == 0:##elif
                  GPIO.output(15, GPIO.LOW)#L
                  GPIO.output(23, GPIO.LOW)#L
                  GPIO.output(25, GPIO.LOW)#L
                  #p.stop()

                  time.sleep(2)
                  

except KeyboardInterrupt:
    GPIO.cleanup()
    #cv2.destroyAllWindows()


#同一フォルダ内に.wavと.mp3を入れてあります


自分で試したこと

pythonはmpg321、Pythom-vlc、pygame、を試しましたが駄目でした。

よろしくお願いいたします。

0

音がHDMI出力になっていたり、音量が0になっていたりしませんか?
Thonnyで音が出たという、pythonのコードを開示することはできませんか?
また、イヤホンジャックがあるなら、Raspberry Pi 3か4ですか?
自動再生させたい環境はヘッドレスですか?

1Like

HDMI出力にも音量0にもなっていなさそうです。
Pythonコードも一応載せました、ごちゃごちゃですみません。
ラズパイ4 イヤホンジャックからスピーカになります。プログラム試作中用にアンプ基盤などは着けていないスピーカへダイレクトです。

0Like

すみません、OSを入れなおして最初からやったらできました!ありがとうございました。

2Like

OSのVerが古くPi4と相性よくなかったのかも?
サイトから新しいOSダウンロードして作った物を動作させたらできました。

1Like

Your answer might help someone💌