Captuer le son sortant et l'enregistrer dans un fichier wav

Soyez le premier à donner votre avis sur cette source.

Vue 16 430 fois - Téléchargée 3 891 fois

Description

Tous sons émits sera enregistré dans un fichier wav
(en fonction de se qui est selectionné dans l"Controle du volume" :)

Il faut une fonction permettant de créé l'en-tête d'un fichier wav
et un TMediaPlayer pour enregistrer

Source / Exemple :


//Voici la fonction:
procedure CreateWav(channels : word; resolution : word; rate : longint; fn : string);
type
TWavHeader = record
rId : longint;
rLen : longint;
wId : longint;
fId : longint;
fLen : longint;
wFormatTag : word;
nChannels : word;
nSamplesPerSec : longint;
nAvgBytesPerSec : longint;
nBlockAlign : word;
wBitsPerSample : word;
dId : longint;
wSampleLength : longint;
end;
var
wf : file of TWavHeader;
wh : TWavHeader;
begin
wh.rId := $46464952;
wh.rLen := 36;
wh.wId := $45564157;
wh.fId := $20746d66;
wh.fLen := 16;
wh.wFormatTag := 1;
wh.nChannels := channels;
wh.nSamplesPerSec := rate;
wh.nAvgBytesPerSec := channels*rate*(resolution div 8);
wh.nBlockAlign := channels*(resolution div 8);
wh.wBitsPerSample := resolution;
wh.dId := $61746164;
wh.wSampleLength := 0;

assignfile(wf,fn);
rewrite(wf);
write(wf,wh);
closefile(wf);
end;

//Exemple d'utilisation:
CreateWav(2,16,44100,'C:\Test.wav');

//Pour demarrer l'enregistrement:
MediaPlayer1.DeviceType := dtAutoSelect;
MediaPlayer1.FileName := 'C:\Test.wav';
MediaPlayer1.Open;
MediaPlayer1.StartRecording;

//Pour arrêter
MediaPlayer1.Stop;
MediaPlayer1.Save;
MediaPlayer1.Close;

Conclusion :


Voir le zip pour un exemple

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_f6dqm1
Messages postés
62
Date d'inscription
lundi 8 novembre 2004
Statut
Membre
Dernière intervention
25 mai 2013
-
Bonjour
J'ai essayé ton petit programme sous WinXP mais je n'enregistre rien à part ce qui vient de mon microphone. Le mixer stéréo est bien coché en enregistrement. Tous les volumes sont au max.
Une idée ?
Gab
fabiin
Messages postés
338
Date d'inscription
mercredi 4 avril 2001
Statut
Membre
Dernière intervention
8 décembre 2009
6 -
Trouvé sur internet... :-)
PyroBruno
Messages postés
52
Date d'inscription
mardi 26 mars 2002
Statut
Membre
Dernière intervention
17 décembre 2005
-
fabiin, pourrais-tu m'indiquer où tu as trouver la doc a ce sujet, surtout pour les variables :
rId
rLen
wId
fId
fLen
dId
wSampleLength
Qui ne sont pas décrites dans le SDK windows, enfin je ne les ai pas trouver. merci d'avance et beau boulot !!!
Fly57
Messages postés
29
Date d'inscription
vendredi 3 janvier 2003
Statut
Membre
Dernière intervention
15 avril 2005
-
ta source date un peu mais je dis un grand merci, car j'ai cherché des logiciels qui le faisaient, j'en ai trouvé pleins mais tous avec une limitation d'enregistrement de une ou deux minutes mais pas assez pour capturer ce que je voulais
merci c'est nickel :)
je vais ameliorer le code pour rajouter ce que je veux en plus et ça sera aussi bien que ceux que j'ai trouvé qui sont payant
merci à toi pour cette base de travail ;)
fabiin
Messages postés
338
Date d'inscription
mercredi 4 avril 2001
Statut
Membre
Dernière intervention
8 décembre 2009
6 -
hmm..
possible, avec le TmediaPlayer, c'est a creuser, en effet,...

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.