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

cs_abdousoft
Messages postés
109
Date d'inscription
mardi 3 août 2004
Dernière intervention
5 novembre 2007
- 3 févr. 2007 à 12:43 - Dernière réponse : cincap
Messages postés
490
Date d'inscription
dimanche 5 décembre 2004
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
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
cincap
Messages postés
490
Date d'inscription
dimanche 5 décembre 2004
Dernière intervention
6 avril 2009
- 3 févr. 2007 à 14:28
1
Merci
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

Merci cincap 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 95 internautes ce mois-ci

Commenter la réponse de cincap
cs_abdousoft
Messages postés
109
Date d'inscription
mardi 3 août 2004
Dernière intervention
5 novembre 2007
- 5 févr. 2007 à 09:00
0
Merci
Salut CinCAp


Merci bien c'est ca que je cherche.



@+


abdelmoumene djezar
Commenter la réponse de cs_abdousoft
cincap
Messages postés
490
Date d'inscription
dimanche 5 décembre 2004
Dernière intervention
6 avril 2009
- 5 févr. 2007 à 10:07
0
Merci
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
Commenter la réponse de cincap

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.