C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Прием и передача аудио информации
Fon
Отправлено: 03.09.2004, 16:19


Не зарегистрирован







Добрый день.
Подскажите, пожалуйста, как написать такую программу. Ранее с подобными задачами я не сталкивался.
Например, есть файл A.wav. Необходимо выдать его на аудио-выход и одновременно с этим начать забирать информацию с аудио-входа, записывая ее, например, в файл B.wav. Напишите, пожалуйста, какие подводные камни тут могут быть.
Sl@Sh
Отправлено: 03.09.2004, 19:03


Мастер участка

Группа: Участник
Сообщений: 383



Это должно тебе помочь, извини, что на паскале.

uses mmSystem;

{....}

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 8000 ' + // 8 KHz
'BYTESPERSEC 8000', // 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
var
verz: String;
begin
GetDir(0, verz);
mciSendString(PChar('SAVE mysound ' + verz + '/test.wav'), nil, 0, Handle);
mciSendString('CLOSE mysound', nil, 0, Handle)
end;
Fon
Отправлено: 04.09.2004, 18:27


Не зарегистрирован







Спасибо за совет.
С воспроизведением все более менее ясно. Но возникли проблемы с записью. Как правильно произвести запись в wav файл используя MCI интерфейс. Пусть, например, в течении двух минут на аудио вход поступает сигнал, который необходимо записать, как это правильно сделать?
Заранее спасибо.
Sl@Sh
Отправлено: 04.09.2004, 20:03


Мастер участка

Группа: Участник
Сообщений: 383



Используй таймер. Например введи некую переменную k типа char равную нулю. Когда таймер включается, то увеличивается на 1, но при этом следует проверить, не равно ли её значение 2 и больше. Если всё таки равно, то глушим таймер, а вместе с ним и запись. Интервал таймера для двух минут = 120000. Удачи! smile.gif

Вернуться в Вопросы программирования в C++Builder