-
Добрый день!
Написал программу для записи с микрофона в wav. Но вот какой вопрос. Файл wav содается после того как я нажимаю кнопку Стоп. А пока идет запись, куда пишеться звук? Во временный файл? ниже публикую процедуры Запись и Стоп
//Кнопка начать запись Form1.dlgSave.FileName:=ExtractFilePath(Application.ExeName)+'audio'+IntToStr(co untpart)+'.wav'; MCICheck(mciSendString(mciOpenWav, nil, 0, 0)); MCICheck(mciSendString(mciSetWavAttrs, nil, 0, 0)); MCICheck(mciSendString(mciRecordWav, nil, 0, 0)); Form1.State := rsRecording;
//Кнопка отсановить запись MCICheck(mciSendString(mciStopWav, nil, 0, 0)); Form1.State := rsStopped; if Pos(#32, Form1.FileName) > 0 then begin //MCI requires quotes around file name/paths with spaces in Form1.FileName := '"' + Form1.Filename + '"'; //MCI doesn't seem able to overwrite a filename with spaces in if FileExists(Form1.FileName) then DeleteFile(Form1.FileName) end; SaveCmd := Format(mciSaveWav, [Form1.FileName]); MCICheck(mciSendString(PChar(SaveCmd), nil, 0, 0)); MCICheck(mciSendString(mciCloseWav, nil, 0, 0)); Form1.FileName := '';
//
-
Попробовал поставить NewAC Но там почемуто в AudioIn нужно указывать время записи Rectime. А мне это не подходит
-
Почему бы не воспользоваться функциями типа waveInXXX?
-
скачивал исходник на основе это функции. Программа тоже сначала пишет непонятно куда а после того как нажмеш стоп, появляется файл
-
было бы супер, если подсказали, как при помощи этой функции записывать файл прямо на диск. здесь, походу, запись идет в буфер.
-
mp3 файл в отличие предназначен для потокового вещания. Он состоит из небольших кусочков которые можно проигрывать по мере их прихода. У wav формат для хранения у него в начале файла указывается длина. Поэтому окончательный файл будет по нажатию кнопки стоп". Но во время записи можно периодически обновлять длину файла.
Советую разобраться с waveInXXX. При помощи этой функции можно читать данные порциями сохранять эти порции в wav при помощи до записи в конец файла. И если добавить ещё и обновление размера файла то окончательный результат будет почти сразу. А да команда flush(file) - принудительно запишет данные из временного буфера в файл.
-
|