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

0/5 (5 avis)

Vue 17 510 fois - Téléchargée 4 038 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
14 nov. 2010 à 14:42
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 329 Date d'inscription mercredi 4 avril 2001 Statut Membre Dernière intervention 8 décembre 2009 6
18 juil. 2004 à 14:29
Trouvé sur internet... :-)
PyroBruno Messages postés 51 Date d'inscription mardi 26 mars 2002 Statut Membre Dernière intervention 17 décembre 2005
16 juil. 2004 à 18:17
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
16 avril 2004 à 20:13
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 329 Date d'inscription mercredi 4 avril 2001 Statut Membre Dernière intervention 8 décembre 2009 6
28 mai 2003 à 17:53
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.