Страница 1 из 1

Запись аудио на Builder C++

Добавлено: 17 фев 2016, 11:02
JustDaemon
Есть 2 кнопки, предположим что в программе проигрываются аудиофайлы. Нужно что бы при нажатии на первую кнопку, начиналась запись в аудиофайл, при нажатии на вторую запись заканчивается. В общем нужно что бы этот фрагмент между нажатием на первую и вторую кнопку записался в аудиофайл. Как сделать? (Любыми способами)
Ответьте хоть кто-нибудь. 4-ый форум и ни кто не отвечает(

Re: Запись аудио на Builder C++

Добавлено: 17 фев 2016, 11:41
Romeo
А гуглить не пробовал? Вот первая ссылка в выдаче, например.

Re: Запись аудио на Builder C++

Добавлено: 17 фев 2016, 13:16
JustDaemon
Romeo писал(а):А гуглить не пробовал? Вот первая ссылка в выдаче, например.
Пробовал, здесь как то слишком много мне кажется...
Сам пробовал писать так:

Код: Выделить всё

void __fastcall TForm1::Image28Click(TObject *Sender)
{
mciSendString("OPEN NEW TYPE WAVEAUDIO ALIAS rec", NULL, 0, NULL);
mciSendString("set rec bitspersample 8 samplespersec 8000 channels 1", NULL, 0, NULL);
mciSendString("record rec", NULL, 0, NULL);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Image29Click(TObject *Sender)
{
mciSendString("STOP rec", NULL, 0, NULL);
mciSendString("SAVE rec lol.mp3", NULL, 0, NULL);
mciSendString("CLOSE rec", NULL, 0, NULL);
}

Файл создаётся, но он пустой...

Re: Запись аудио на Builder C++

Добавлено: 17 фев 2016, 16:36
Romeo
Есть лишь общие рекомендации, так как c mci я раньше не работал.

Если файл пустой, то предположу, произошла какая-то ошибка. Возможно неправильно были сформированы команды или посланы не в том порядке. Сформируй строку, содержащую текст ошибки с помощью вызова mciGetErrorString и посмотри, что там будет написано.

Подробное описание команд можно найти на MSDN вот тут.

Re: Запись аудио на Builder C++

Добавлено: 17 фев 2016, 20:54
JustDaemon
я пытался так

Код: Выделить всё

void __fastcall TForm1::Image28Click(TObject *Sender)
{
mciSendString("OPEN NEW TYPE WAVEAUDIO ALIAS rec", NULL, 0, NULL);
mciSendString("set rec bitspersample 8 samplespersec 8000 channels 1", NULL, 0, NULL);
mciSendString("record rec", NULL, 0, NULL);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Image29Click(TObject *Sender)
{
mciSendString("STOP rec", NULL, 0, NULL);
mciSendString("SAVE rec lol.mp3", NULL, 0, NULL);
mciSendString("CLOSE rec", NULL, 0, NULL);
}
Image28 - первая кнопка
Image29 - вторая кнопка

Re: Запись аудио на Builder C++

Добавлено: 17 фев 2016, 20:59
Romeo
Ты уже второй раз привёл этот код. Я его уже видел.

Говорю же, получи текст ошибки и прочти его. Скорее всего он даст тебе знать, что не так.

Re: Запись аудио на Builder C++

Добавлено: 17 фев 2016, 21:16
JustDaemon
Я просто подумал, что не отправилось...
Ладно, спасибо, ща юзну

Re: Запись аудио на Builder C++

Добавлено: 18 фев 2016, 11:40
WinMain
На этом форуме уже была тема синтеза звука и записи его в файл. http://forum.developing.ru/showthread.php/22440
Внимательно её прочитай. Что касается твоего примера, то тебе не нужно этот звук воспроизводить, а нужно только записать в файл. Таким образом при нажатии первой кнопки просто получи текущее время начала записи. После нажатия второй кнопки получи текущее время и отними от него момент начала записи. Получим длительность звучания. В приведённом выше примере (пост #5) показано как задавать время звучания синтезируемого фрагмента. А в последнем посте показано как записывать полученный звук в файл.