Jouer un son WAV ou MP3?

Résolu
cs_abdousoft Messages postés 100 Date d'inscription mardi 3 août 2004 Statut Membre Dernière intervention 5 novembre 2007 - 3 févr. 2007 à 12:43
cincap Messages postés 460 Date d'inscription dimanche 5 décembre 2004 Statut Membre Dernière intervention 6 avril 2009 - 5 févr. 2007 à 10:07
Salut

Comment Faire jouer un son wav ou MP3 en delphi sans arreter le son?
remarque: la durée de ce fichier wav est 1 minute ou plus et au demmarage de l'application.
et comment crée une application contenant un son wav dans l'executable.
son placer dans la  meme repertoire que l'executable(Comme dans les cracks).


Mercin d'avancement.

abdelmoumene djezar

3 réponses

cincap Messages postés 460 Date d'inscription dimanche 5 décembre 2004 Statut Membre Dernière intervention 6 avril 2009 2
3 févr. 2007 à 14:28
Bonjour,

1. En créant un fichier ressource (monfichier.res).

{$R monfichier.RES} // Ton fichier ressource

Sons1 WAV "Data.wav"
Sons2 RCDATA "bronze.mp3"

Var
dirdir : string;

procedure TFmMain.BplayClick(Sender: TObject);
var
  hres: THandle;
  pres: PChar;
begin
 // cherche le son représentant Data.wav soit sons1
 
  hres := FindResource(hInstance, pchar('Sons1'), 'wav');
  if hRes <> 0 then
 
//si trouvé alors
 
  begin
  hres := LoadResource(hInstance, hres);

 //charge le son
   
  pres := LockResource(hres);
    
 //joue le son en boucle ajouter SND_LOOP
   
  sndPlaySound(pres, SND_SYNC or SND_LOOP or SND_MEMORY);
  UnLockResource(hres); FreeResource(hres);



end;
end;


2. Pour le Mp3 utilise un Tmediaplayer = mp1.

procedure TFmMain.FormCreate(Sender: TObject);
var
  Res: TResourceStream;
begin
try
    Res := TResourceStream.Create(Hinstance, 'Sons2', RT_RCDATA);



// enregistre la ressource dans un fichier



  Res.SavetoFile(dirdir + 'bronze.mp3');
  finally
    Res.Free;
 
end;



  if fileexists('bronze.mp3') then
  begin
  mp1.filename : = dirdir+ 'bronze.mp3';
 
end;
end;

Dans le oncreate de la fiche tu mets :

mp1.Notify:=true;

procedure TFmMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 //efface le fichier
  if not deletefile(dirdir + 'bronze.mp3') then
    showmessage('Une erreur est survenue lors de la fermeture');
end;

3. Pour la boucle concernant le mp3 à mettre dans sa propriété "Onnotify"

procedure TfmMain.mp1Notify(Sender: TObject);
begin
  with MP1 do
   if NotifyValue = nvSuccessful then
   begin
   Notify := True;
   Play;
   end;
end;

procedure TFmMain.bplayMp3Click(Sender: TObject);
begin
 mp1.Open;
 mp1.play ;
end;

@+,


Cincap




[url]mailto:/url
1
cs_abdousoft Messages postés 100 Date d'inscription mardi 3 août 2004 Statut Membre Dernière intervention 5 novembre 2007
5 févr. 2007 à 09:00
Salut CinCAp


Merci bien c'est ca que je cherche.



@+


abdelmoumene djezar
0
cincap Messages postés 460 Date d'inscription dimanche 5 décembre 2004 Statut Membre Dernière intervention 6 avril 2009 2
5 févr. 2007 à 10:07
Bonjour,

@ abdousoft, enfin, pour arrêter la boucle d'un fichier wav, tu fais ceci :



procedure TFmMain.BstopwavClick(Sender: TObject);
begin
 sndPlaySound(nil, 0);
end;

pour arrêter la boucle d'un fichier mp3, tu fais cela :

procedure TFmMain.Bstopmp3Click(Sender: TObject);
begin
 mp1.stop ;
mp1.rewind ; // remet la lecture au début du fichier
end;

@+,

Cincap

[url]mailto:/url
0
Rejoignez-nous