Russian Qt Forum

Qt => Мультимедиа => Тема начата: Firefox от Апрель 05, 2010, 19:44



Название: Остановить воспроизведение звука
Отправлено: Firefox от Апрель 05, 2010, 19:44
Здравствуйте. сталкнулась с такой проблемой: у меня в таймере воспроизводиться звук. воспроизвожу через QSound play(). первый вопрос функция isFinished() срабатывает только есть в setLoop(2) не меньше повторений. с 1 выдаёт всегда true, есть в примечании об этом написано, но нельзя ли как-то обойти. и второй вопрос. как остановить немедленно воспроизведение в Windows. если делать stop(), то звук доигрывается до конца и только потом останавливается. для меня это не приемлемо.


Название: Re: Остановить воспроизведение звука
Отправлено: break от Апрель 05, 2010, 23:22
Цитировать
у меня в таймере воспроизводиться звук. воспроизвожу через QSound play(). первый вопрос функция isFinished() срабатывает только есть в setLoop(2) не меньше повторений. с 1 выдаёт всегда true, есть в примечании об этом написано, но нельзя ли как-то обойти
а какой эффект нужен? не совсем понятно...

Цитировать
если делать stop(), то звук доигрывается до конца и только потом останавливается. для меня это не приемлемо.

может сначала pause() а потом stop() попробовать?


Название: Re: Остановить воспроизведение звука
Отправлено: Sergeich от Апрель 06, 2010, 00:19
Под виндой юзая QSound никак. Пользуй phonon.


Название: Re: Остановить воспроизведение звука
Отправлено: Firefox от Апрель 06, 2010, 09:23
нужно вот для чего. в таймере раз в 5 секунд делается такая последовательность.выводиться 4 буквы текста, ожидание в 2 секунды, в другое текстовое поле выводиться число букв выведенных.всё это время должна играть музыка. я её запускаю перед началом таймера. а в таймере проверяю, если файл закончил воспроизведение, то воспроизвести ещё раз.  когда текст закончит выводиться музыка тоже должна закончиться. а по команде stop() она не заканчивается пока не закончиться цикл воспроизведения. а длина файла звукового минута, приходиться ждать пока он закончиться.
фононом пользоваться не умею и не хочу из-за такой мелочи. может есть функции WinAPI, которые реализуют воспроизведение и останавливают сразу?


Название: Re: Остановить воспроизведение звука
Отправлено: kuzulis от Апрель 06, 2010, 10:30
Цитировать
может есть функции WinAPI, которые реализуют воспроизведение и останавливают сразу?
DirectSound, но это не WinAPI (вроде).
Для дельфей много компонентов и примеров под это дело, думаю нетрудно будет переделать под C++ :)

Вот к примеру первая ссылка: http://www.realcoding.net/article/view/4131

PS: я сам когда-то давно это использовал (в дельфях) :)


Название: Re: Остановить воспроизведение звука
Отправлено: Sergeich от Апрель 06, 2010, 12:10
может есть функции WinAPI, которые реализуют воспроизведение и останавливают сразу?
http://msdn.microsoft.com/en-us/library/dd743680(VS.85).aspx :
BOOL PlaySound(
    LPCTSTR pszSound,
    HMODULE hmod,
    DWORD fdwSound
);

SND_ASYNC   The sound is played asynchronously and PlaySound returns immediately after beginning the sound. To terminate an asynchronously played waveform sound, call PlaySound with pszSound set to NULL.


Название: Re: Остановить воспроизведение звука
Отправлено: Firefox от Апрель 06, 2010, 19:42
Спасибо)попробую.