0 votes

Enregistrement et sauvegarde de fichiers .wav avec TMediaPlayer (Delphi 2010)

Je suis vraiment nouveau dans le monde de Delphi.

J'utilise actuellement le TMediaPlayer pour enregistrer des sons et les sauvegarder. J'ai créé un événement de clic pour le bouton d'enregistrement dans le TMediaPlayer qui exécute un SaveFileDialog. L'utilisateur doit taper un nom de fichier qu'il souhaite sauvegarder, puis après avoir enregistré le fichier .wav, il peut cliquer sur le bouton d'arrêt et le fichier .wav enregistré est sauvegardé.

En fait, il ne crée pas de fichier.

Je vais montrer quelques parties importantes de mon code delphi.

if Button = TMPBtnType.btRecord then
begin
SaveDialogSpeichern.Execute;
MediaPlayerSound.FileName := SaveDialogSpeichern.FileName;
MediaPlayerSound.StartRecording;

end

et ceux de la sauvegarde :

  MediaPlayerSound.Stop;
  MediaPlayerSound.Save;

Je ne peux pas utiliser le fichier bass.dll, donc je voudrais le faire avec le TMediaPlayer s'il y a un moyen possible.

2voto

darkdog Points 1944

J'ai trouvé une solution à mon problème. Il semble que le TMediaPlayer ne supporte pas la création de fichiers sonores ni l'enregistrement de fichiers sonores.

Il existe un moyen d'utiliser le WinApi (en utilisant mmSystem ;)

J'ai utilisé ce code :

    mciSendString(PChar('OPEN NEW TYPE WAVEAUDIO ALIAS mysound'), nil, 0,
    Handle);
 mciSendString(PChar('SET mysound TIME FORMAT MS ' +     
   'BITSPERSAMPLE 8 ' +                
   'CHANNELS 1 ' +                     
   'SAMPLESPERSEC 8000 ' +             
   'BYTESPERSEC 8000'),                
   nil, 0, Handle);
 mciSendString(PChar('RECORD mysound'), nil, 0, Handle);
mciSendString(PChar('SAVE mysound "' + SaveDialogSpeichern.FileName+'"' ), nil, 0,
    Handle);
mciSendString(PChar('CLOSE mysound'), nil, 0, Handle) 

J'espère que cela aidera ceux qui ont le même problème.

2voto

Et je veux aussi ajouter ceci : vous pouvez démarrer, arrêter et sauvegarder votre enregistrement en utilisant cette méthode.

procedure TForm1.Button1Click(Sender: TObject);     // Record
begin
  mciSendString('OPEN NEW TYPE WAVEAUDIO ALIAS mysound', nil, 0, Handle);
  mciSendString('SET mysound TIME FORMAT MS ' +     // set time
    'BITSPERSAMPLE 8 ' +                // 8 Bit
    'CHANNELS 1 ' +                     // MONO
    'SAMPLESPERSEC 8192 ' +             // 8 KHz
    'BYTESPERSEC 8192',                // 8000 Bytes/s
    nil, 0, Handle);
  mciSendString('RECORD mysound', nil, 0, Handle);
end;

procedure TForm1.Button2Click(Sender: TObject);     // Stop
begin
  mciSendString('STOP mysound', nil, 0, Handle)
end;

procedure TForm1.Button3Click(Sender: TObject);      // Save

begin
mciSendString(PChar('SAVE mysound "' + '/test.wav'+'"' ), nil, 0,
    Handle);
  mciSendString('CLOSE mysound', nil, 0, Handle)
end;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X