Воспроизведение звуков

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
Lie
незнакомец
Сообщения: 2
Зарегистрирован: 16.03.2011 17:12:21

Воспроизведение звуков

Сообщение Lie »

На форме присутствуют к примеру две кнопки. Хочется добиться того, чтобы при нажатии на btn1 вопроизводился звук, соответственно при нажатии на btn2 воспроизводился другой звук (wave file). ПРобовал делать я через "aplay", "play" и "mplayer". В итоге получалось следующее: Нажимаю btn1, воспроизводится звук и происходит зарержка - кнопка в стостоянии нажатия до тех пор, пока файл не проиграется полностью, и в это время невозможно нажать вторую кнопку.
Подскажите пожалуйста, как этого избежать?
Аватара пользователя
Nik
энтузиаст
Сообщения: 573
Зарегистрирован: 03.02.2006 23:08:09
Откуда: Киров
Контактная информация:

Re: Воспроизведение звуков

Сообщение Nik »

Как вариант - функции воспроизведения запускать в разных потоках. Или воспользоваться библиотекой типа BASS - там такие проблемы обычно не возникают.
Сквозняк
энтузиаст
Сообщения: 1159
Зарегистрирован: 29.06.2006 22:08:32

Re: Воспроизведение звуков

Сообщение Сквозняк »

В виндовсе есть комманда start, работает без багов

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

start mplayer opr02OBE.flv

В линуксе аналог комманды выглядит так

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

nohup mplayer opr02OBE.flv &

Кроме того, тебе нужно будет засекать время начала воспроизведения и игнорировать события нажатия "музыкальной клавиши" время_необходимое_на_воспроизведение + ~100мс.
Lie
незнакомец
Сообщения: 2
Зарегистрирован: 16.03.2011 17:12:21

Re: Воспроизведение звуков

Сообщение Lie »

Оо, большое спасибо))
Odyssey
энтузиаст
Сообщения: 580
Зарегистрирован: 29.11.2007 16:32:24

Re: Воспроизведение звуков

Сообщение Odyssey »

А если запуск происходит через TProcess, можно просто убрать у него флаг poWaitOnExit

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

AProcess.Options := AProcess.Options - [poWaitOnExit];
Ответить