• Benvenuti su RaspberryItaly!
Benvenuto ospite! Login Login con Facebook Registrati Login with Facebook


Valutazione discussione:
  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5

[-]
Tags
python mp3 da file avviare

avviare file mp3 da python
#11
beh, in quel caso, conviene fare tutto da Python senza appoggiarsi a player esterni.
Ad esempio la libreria pygame, che solitamente è preinstallata in Raspberry Pi, offre anche la gestione dei suoni. Ci sono probabilmente mille altri metodi.
Codice:
import time, pygame
soundObj = pygame.mixer.Sound('suono.mp3')
soundObj.play()
time.sleep(10) # aspetta 10 secondi e lascia che il suono venga riprodotto per questo tempo
soundObj.stop()
esempio preso da qui

Qui la documentazione completa di PyGame
Risposta
#12
Ciao, sto provando solo ora queste righe (e anche altre trovate su internet) ma la riproduzione non funziona, o meglio …. Funziona ma non si sente nulla.
Cosa devo configurare in Python o sul raspy per poter sentire l’audio dal jack da 3,5 ?.
Se ascolto il file audio con VLC , selezionando al menù AUDIO , Dispositivo Audio, Audio Interno Analog Stereo ….. allora sento, altrimenti no.
Grazie


Inviato dal mio iPad utilizzando Tapatalk Pro
Alberto
Risposta
#13
Allora puoi provare qualcosa del genere
Codice:
import time, pygame
from subprocess import call

soundObj = pygame.mixer.Sound('suono.mp3')

call(["amixer", "-c", "0", "cset", "numid=3", "1"])  #questo imposta l'uscita audio da 3.5 pollici

time,sleep(2)
soundObj.play()
time.sleep(10) # aspetta 10 secondi e lascia che il suono venga riprodotto per questo tempo
soundObj.stop()
Risposta
#14
Ciao a tutti, piccolo problema con pygame.
Allora io ho creato un programmino con delle classi che riproducono dei brani o degli effetti ognuna.
Ho importato questa classe nel programma principale ma ho dei problemi.
In pratica io ho bisogno che quando parte il programma principale si senta la musica di sottofondo (che io richiamo dalla classe importata) ma ciò non avviene.
Quello che avviene e’ che esegue il programma principale fino a che trova la chiamata a pygame , finito dì riprodurre la musica …. Riparte il programma principale .
No ! , direi che non va bene

Aiuto !!

Grazie


Inviato dal mio iPhone utilizzando Tapatalk Pro
Alberto
Risposta
#15
mettici il codice che stai usando uno spezzone di esso
Risposta
#16
Ecco il programma che richiamo mentre eseguo l’altro.

Grazie

Codice:
import time , pygame , random
percorso = "/home/pi/Music/"
musiche = []
musiche.append(percorso + "Jingle_Bell_Rock.mp3")
musiche.append(percorso + "Step_Into_Christmas.mp3")
musiche.append(percorso + "All_I_Want_For_Christmas_Is_You.mp3")
musiche.append(percorso + "Happy_Christmas.mp3")
print(musiche)

    
class Effetti:
    def pioggia():
        pygame.init()
        pygame.mixer.init()
        pygame.mixer.music.load(percorso + 'Effetti/Pioggia_che_cade.wav')
        pygame.mixer.music.play(-1)
        time.sleep(30)
        pygame.mixer.music.stop()

    def temporale_lontano():
        pygame.init()
        pygame.mixer.init()
        pygame.mixer.music.load(percorso + 'Effetti/Temporale_1.wav')
        pygame.mixer.music.play(-1)
        time.sleep(20)
        pygame.mixer.music.stop()

    def temporale_vicino():
        pygame.init()
        pygame.mixer.init()
        pygame.mixer.music.load(percorso + 'Effetti/Temporale_3.wav')
        pygame.mixer.music.play(-1)
        time.sleep(20)
        pygame.mixer.music.stop()

        
class Musica:
    def musica():
        casuale = random.randint(0, len(musiche)-1)
        print (casuale)
        pygame.init()
        pygame.mixer.init()
        pygame.mixer.music.load(musiche[casuale])
        pygame.mixer.music.play(-1)
        time.sleep(20)
        pygame.mixer.music.fadeout(7000)
        #pygame.mixer.music.stop()
        
    
        
#Effetti.pioggia()
#Effetti.temporale_lontano()
#Effetti.temporale_vicino()


if __name__ == '__main__':
    Musica.musica()
    Effetti.temporale_lontano()
    Musica.musica()


Inviato dal mio iPad utilizzando Tapatalk Pro
Alberto
Risposta
#17
c'è qualcosa che non mi torna..
pygame.mixer.music.play(-1)
se usi (-1) dici a pygame di suonare il suono all'infinito
poi metti una attesa di tot secondi
e poi lo stoppi
se metti (0), il suono verrà riprodotto una sola volta e si fermerà quando terminato.

Se richiami un programma dall'altro, per quello che ne so, normalmente usi un sottoprocesso, per eseguirlo in modo asincrono, dovresti usare un approccio multiprocesso, ci sono vari metodi per farlo, ma la mia conoscenza in Python ancora non è così ferrata in quel campo (async o threading multiprocess ecc)
Usare una classe per questo scopo non è una inutile complicazione? non basta una semplice fuzione all'interno dello stesso programma?
il metodo pygame.mixer.music.play è asincrono di suo: viene avviata la riproduzione e poi il codice prosegue.
vedi qui
Risposta
#18
Ok, a parte il (-1) che potrei anche non metterlo (era ora delle tante prove) perché la musica verra’ interroga da degli effetti (temporale e pioggia, ecc.) e dopo dei quali la musica riprenderà.
Se non si è capito la cosa è per un presepio.
Il problema è che cosi come è la riproduzione della musica non si avvia e in contemporanea procede anche il codice seguente; la riproduzione della musica tiene fermo tutto fino a che non è finita… e questo non va bene.
Non capisco come poter fare perché le due cose possano andare in parallelo (visto che lo dovrebbero).
Grazie


Inviato dal mio iPad utilizzando Tapatalk Pro
Alberto
Risposta
#19
Come accennato, se richiami un metodo presente in un altro programma, di defaut il comportamento dovrebbe essere quello: lo script viene fermato, viene richiamato il metodo dell'altro script, quando terminato, il programma prosegue. Dovresti richiamarlo in modo asincrono usando async o multiproc ecc) se invece lo usi nello stesso script, pygame.mixer.music.play dovrebbe comportarsi esattamente come ti aspetti lo lanci e si mette a suonare, nel frattempo lo script prosegue. In rete ci sono molti tutorial,ad esempio questo
Risposta
  


Vai al forum:


Navigazione: 2 Ospite(i)
Forum con nuovi Post
Forum senza nuovi post
Forum bloccato
Forum Redirect