Jouer un son WAV ou MP3? [Résolu]

Signaler
Messages postés
101
Date d'inscription
mardi 3 août 2004
Statut
Membre
Dernière intervention
5 novembre 2007
-
cincap
Messages postés
490
Date d'inscription
dimanche 5 décembre 2004
Statut
Membre
Dernière intervention
6 avril 2009
-
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

Messages postés
490
Date d'inscription
dimanche 5 décembre 2004
Statut
Membre
Dernière intervention
6 avril 2009
2
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
Messages postés
101
Date d'inscription
mardi 3 août 2004
Statut
Membre
Dernière intervention
5 novembre 2007

Salut CinCAp


Merci bien c'est ca que je cherche.



@+


abdelmoumene djezar
Messages postés
490
Date d'inscription
dimanche 5 décembre 2004
Statut
Membre
Dernière intervention
6 avril 2009
2
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