Lire un MP3 avec la bibliothéque movie
Publié : sam. 20/févr./2016 16:34
N'étant pas vraiment un truc ou astuce, je poste ce code ici. La bibliothéque movie permet d'intégrer la diffusion d'une vidéo dans une application. Toutefois il est possible de lire aussi des fichiers mp3
Un code plus complet avec ajout d'une file d'attente et parcours des titres sur ce lien.
http://www.purebasic.fr/french/viewtopi ... 61#p180761
Code : Tout sélectionner
;Lire un MP3 avec la bibliothéque movie
Enumeration
#MainForm
#Mp3
#Mp3Title
#Mp3Select
#Mp3Play
#Mp3Stop
#Mp3Volume
EndEnumeration
Declare OnSelect()
Declare OnPlay()
Declare OnStop()
Declare OnVolumeChange()
Declare OnExit()
InitMovie()
OpenWindow(#MainForm, 0, 0, 280, 150, "Lire un MP3 avec la bibliothéque movie", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
;Affichage du titre
TextGadget(#Mp3Title, 10, 20, 380, 22, "No mp3 select ...")
;Interface du lecteur
ButtonGadget(#Mp3Play, 10, 50, 80, 24, "Play")
ButtonGadget(#Mp3Stop, 100, 50, 80, 24, "Stop")
ButtonGadget(#Mp3Select, 190, 50, 80, 24, "Select")
;Volume
TrackBarGadget(#Mp3Volume, 10, 120, 260, 22, 0, 100)
SetGadgetState(#Mp3Volume, 50)
;Triggers (Déclencheur)
BindGadgetEvent(#Mp3Play, @OnPlay())
BindGadgetEvent(#Mp3Stop, @OnStop())
BindGadgetEvent(#Mp3Select, @OnSelect())
BindGadgetEvent(#Mp3Volume, @OnVolumeChange())
BindEvent(#PB_Event_CloseWindow, @OnExit())
Repeat : WaitWindowEvent(10) : ForEver
Procedure OnSelect()
Protected MP3file.s = OpenFileRequester("Sélectionner un mp3", "", "mp3 (*.mp3)|*.mp3", 0)
If MP3File
LoadMovie(#Mp3, MP3File)
SetGadgetData(#Mp3Play, 0) ;Un titre est en cours de lecture
OnPlay()
OnVolumeChange()
;Affichage du titre
SetGadgetText(#Mp3Title, GetFilePart(MP3file))
EndIf
EndProcedure
Procedure OnPlay()
If IsMovie(#Mp3)
Select MovieStatus(#Mp3)
Case 0 ;Le titre n'est pas en cours de lecture
PlayMovie(#Mp3, WindowID(#MainForm))
SetGadgetText(#Mp3Play, "Pause")
Case -1 ;Le titre est en pause : Reprise de la lecture
ResumeMovie(#Mp3)
SetGadgetText(#Mp3Play, "Pause")
Default ;Le titre est en cours de lecture : On le met en pause
PauseMovie(#Mp3)
SetGadgetText(#Mp3Play, "Play")
EndSelect
EndIf
EndProcedure
Procedure OnStop()
If IsMovie(#Mp3)
StopMovie(#Mp3)
SetGadgetData(#Mp3Play, 0)
SetGadgetText(#Mp3Play, "Play")
EndIf
EndProcedure
Procedure OnVolumeChange()
Protected Value = GetGadgetState(#Mp3Volume)
If IsMovie(#Mp3)
MovieAudio(#Mp3, Value, 0)
EndIf
EndProcedure
Procedure OnExit()
If IsMovie(#Mp3)
FreeMovie(#Mp3)
EndIf
End
EndProcedure
