8 / 6 / 3
Регистрация: 08.07.2015
Сообщений: 54
1

Событие окончания воспроизведения звука

09.08.2015, 17:44. Показов 1482. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день!

Для воспроизведения звука использую WinAPI-функцию PlaySound, воспроизводящую wav-файлы.

В некоторых ситуациях нужно знать, когда закончилось воспроизведение звука. snd_Sync не подходит, поскольку звук воспроизводится по событию, т.е., во-первых, Sync стопорит всё приложение (это и понятно), во-вторых, в это время могут приходить события, требующие того же звука. При синхронном воспроизведении накапливается целая очередь и потом получается ж#па.

Каким образом узнать, когда закончилось воспроизведение звука? Возможно, приходит какое-то wm-сообщение?

Пока придумал только такой костыль: воспроизводить звук с snd_Async и стартовать таймер, раз, например, в 100 мсек вызывающий PlaySound(,,snd_NoStop). Если играет звук, функция должна вернуть False - ресурс воспроизведения звука занят. Но костыли городить не хочется...

Добавлю: были мысли стартовать звук синхронно, но в отдельном потоке TThread. Но я ранее уже пытался использовать потоки, при их работе начинают отваливаться другие компоненты (глюк Лазаруса, коих я уже переловил тьму), в результате от потоков отказался.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.08.2015, 17:44
Ответы с готовыми решениями:

mciSendString отловить момент окончания воспроизведения
Доброго времени суток! Мне необходимо отловить событие остановки воспроизведения файла,...

Как закрыть wmplayer после окончания воспроизведения
Добрый день! Помогите разобраться Фрагмент кода: sPaths = "C:\Program Files\Windows Media...

Воспроизведения звука мгновенно
Здраствуйте. Хочу сделать звук щелчка на нажатие клавиш. Я знаю про функцию PlaySnd или както так....

Ошибка воспроизведения звука
Не пойму как исправить ошибку: public Microsoft.DirectX.AudioVideoPlayback.Audio audio; public...

2
5778 / 4521 / 1430
Регистрация: 14.04.2014
Сообщений: 20,143
Записей в блоге: 20
10.08.2015, 07:33 2
используйте библиотеку Bass там есть все необходимое
0
652 / 233 / 46
Регистрация: 24.01.2013
Сообщений: 716
10.08.2015, 10:16 3
Активно работаю в Лазарусе с потоками, правда пользуюсь функциями BeginThread() и WaitForSingleObject().
Глюков никаких пока не замечал.
0
10.08.2015, 10:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.08.2015, 10:16
Помогаю со студенческими работами здесь

Кроссплатформенная библиотека воспроизведения звука
Доброе утро! Есть-ли библиотека под .NET и/или Mono, которая позволяет воспроизводить звук? Так,...

Компонент для воспроизведения звука
Подскажите пожалуйста есть ли в Delphi компонент который может воспроизводить мелодии и если есть...

Ошибка при воспроизведения звука
Такая проблема... по нажатию кнопки должна играть музыка Вот код private void...

Ошибка при попытке воспроизведения звука
Есть программа, где на фоне изначально играет длинный саундтрек, а при нажатии ЛКМ на графический...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru