Russian Qt Forum
Ноябрь 22, 2024, 22:11 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Остановить воспроизведение звука  (Прочитано 7322 раз)
Firefox
Гость
« : Апрель 05, 2010, 19:44 »

Здравствуйте. сталкнулась с такой проблемой: у меня в таймере воспроизводиться звук. воспроизвожу через QSound play(). первый вопрос функция isFinished() срабатывает только есть в setLoop(2) не меньше повторений. с 1 выдаёт всегда true, есть в примечании об этом написано, но нельзя ли как-то обойти. и второй вопрос. как остановить немедленно воспроизведение в Windows. если делать stop(), то звук доигрывается до конца и только потом останавливается. для меня это не приемлемо.
Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #1 : Апрель 05, 2010, 23:22 »

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

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

может сначала pause() а потом stop() попробовать?
Записан
Sergeich
Гость
« Ответ #2 : Апрель 06, 2010, 00:19 »

Под виндой юзая QSound никак. Пользуй phonon.
« Последнее редактирование: Апрель 06, 2010, 00:21 от Sergeich » Записан
Firefox
Гость
« Ответ #3 : Апрель 06, 2010, 09:23 »

нужно вот для чего. в таймере раз в 5 секунд делается такая последовательность.выводиться 4 буквы текста, ожидание в 2 секунды, в другое текстовое поле выводиться число букв выведенных.всё это время должна играть музыка. я её запускаю перед началом таймера. а в таймере проверяю, если файл закончил воспроизведение, то воспроизвести ещё раз.  когда текст закончит выводиться музыка тоже должна закончиться. а по команде stop() она не заканчивается пока не закончиться цикл воспроизведения. а длина файла звукового минута, приходиться ждать пока он закончиться.
фононом пользоваться не умею и не хочу из-за такой мелочи. может есть функции WinAPI, которые реализуют воспроизведение и останавливают сразу?
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #4 : Апрель 06, 2010, 10:30 »

Цитировать
может есть функции WinAPI, которые реализуют воспроизведение и останавливают сразу?
DirectSound, но это не WinAPI (вроде).
Для дельфей много компонентов и примеров под это дело, думаю нетрудно будет переделать под C++ Улыбающийся

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

PS: я сам когда-то давно это использовал (в дельфях) Улыбающийся
« Последнее редактирование: Апрель 06, 2010, 10:35 от kuzulis » Записан

ArchLinux x86_64 / Win10 64 bit
Sergeich
Гость
« Ответ #5 : Апрель 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.
Записан
Firefox
Гость
« Ответ #6 : Апрель 06, 2010, 19:42 »

Спасибо)попробую.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.051 секунд. Запросов: 22.