2010-07-05 2 views
1

хорошо im действительно новый для мира дельфинов.Запись и сохранение .wav файлов с TMediaPlayer (Delphi 2010)

Прямо сейчас, используя TMediaPlayer, чтобы записать звук и сохранить его. Я сделал событие щелчка для кнопки записи в TMediaPlayer, которая выполняет SaveFileDialog. Пользователь должен ввести имя файла, которое он хотел бы сохранить, а затем после записи .wav-файла он может нажать кнопку остановки, и он сохранит записанный файл WAV.

На самом деле это событие не создает файл.

я покажу некоторые важные части кода моего DELPHI кода

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

end 

и те, для сохранения:

MediaPlayerSound.Stop; 
    MediaPlayerSound.Save; 

Я не могу использовать bass.dll, поэтому я хотел бы сделать это с TMediaPlayer, если есть возможный способ

ответ

2

Я нашел решение для своей проблемы. Кажется, что TMediaPlayer не поддерживает создание звуковых файлов, либо запись звуковых файлов.

Существует способ использовать WinApi (используя mmSystem;)

я использовал этот код:

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) 

надеюсь, что это поможет кто-нибудь с такой же проблемой

2

А также я хочу добавить это; вы можете начать остановку и сохранить свою запись, используя этот способ

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; 
Смежные вопросы