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

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

3 réponses

Répondre au sujet
cincap 490 Messages postés dimanche 5 décembre 2004Date d'inscription 6 avril 2009 Dernière intervention - 3 févr. 2007 à 14:28
+1
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cincap
cs_abdousoft 109 Messages postés mardi 3 août 2004Date d'inscription 5 novembre 2007 Dernière intervention - 5 févr. 2007 à 09:00
0
Utile
Salut CinCAp


Merci bien c'est ca que je cherche.



@+


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