2010-07-05 17 views
1

Je suis vraiment nouveau dans le monde de Delphi.Enregistrement et enregistrement des fichiers .wav avec TMediaPlayer (Delphi 2010)

À l'heure actuelle, j'utilise le TMediaPlayer pour enregistrer du son et le sauvegarder. J'ai créé un événement click pour le bouton d'enregistrement dans TMediaPlayer qui exécute un SaveFileDialog. L'utilisateur doit saisir un nom de fichier qu'il souhaite enregistrer, puis, après avoir enregistré le fichier .wav, il peut cliquer sur le bouton d'arrêt et enregistrer son fichier .wav enregistré.

En fait, il ne crée pas d'événement créer un fichier.

Je vais montrer certaines parties de code importantes de mon code delphi

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

end 

et ceux pour sauver:

MediaPlayerSound.Stop; 
    MediaPlayerSound.Save; 

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

Répondre

2

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

Il y a une façon d'utiliser le winapi (en utilisant MMSYSTEM;)

i 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) 

espère que cela aidera tout le monde avec le même problème

2

Et aussi je veux ajouter ceci; vous pouvez commencer à arrêter et enregistrer votre enregistrement de cette manière

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;