![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как проиграть несколько звуков из ресурса? [D7]
И. Павел © (2010-02-05 22:11:00)Здравствуйте. В ресурсе имеется несколько звуковых файлов: .wav (PCM) и .wav с mp3 кодеком. Нужны следующие возможности:
1) Воспроизводить несколько звуков одновременно
2) Зацикливать некоторые из звуков
3) Останавливать некоторые из звуков (лучше "пауза" но можно и "стоп")
4) Программа должна состоять из единственного файла - исполнимого.
Подскажите, пожалуйста, как все это реализовать?
Рассматривал такие методы:
1.SndPlaySound - каждый очередной вызов прекращает проигрывание предыдущих звуков.
2.Через MCI - не знаю - можно ли передавать туда ресурсы?
'open waveaudio shareable'
'play "C:\xyz\BackgroundMusic.wav"'
'play "C:\xyz\AnotherMusic.wav"'
'close waveaudio'
3. DirectShow. Никогда им раньше не пользовался. Если простое проигрывание файлов иначе сделать не получится, наверное, сделаю через него.
И Павел (2010-02-06 13:08:00) [1]
> Anatoly Podgoretsky ©
Спасибо. Для текущей задачи мне не совсем подходит, но на будущее запомню, что проиграть файл из ресурса можно одной функцией.
> Может я дурак, а если заюзать через нити?
Спасибо. Но (кажется, в Delphi потоки и нити не отличаются?) так я уже пробовал. Тоже, если предыдущий звук запущен асинхронно, он прерывается, а если синхронно - не пускает новый.
> Нет особых проблем даже проиграть на каждый канал что-то
> отдельное, не говоря уж о стандартном микшировании.
Насколько я понимаю, речь идет о DirectSound? Если нет - пожалуйста, поясните.
KilkennyCat (2010-02-06 06:32:00) [2]
> Дурак (06.02.10 02:50) [6]
ради одновременности? необязательно. Нет особых проблем даже проиграть на каждый канал что-то отдельное, не говоря уж о стандартном микшировании.
Германн (2010-02-06 03:15:00) [3]
> Дурак (06.02.10 02:50) [6]
>
> Может я дурак, а если заюзать через нити?
Может ты и не дурак, но сам вопрос дурной.
Дурак (2010-02-06 02:50:00) [4]Может я дурак, а если заюзать через нити?
Anatoly Podgoretsky (2010-02-05 23:35:00) [5]PlaySound
1) Воспроизводить несколько звуков одновременно
Вроде не может.
2) Зацикливать некоторые из звуков
Запросто
3) Останавливать некоторые из звуков (лучше "пауза" но можно и "стоп")
Не знаю
4) Программа должна состоять из единственного файла - исполнимого.
Никаких проблем, может играть из файла, ресурса, памяти
И многое другое, но не все.
Anatoly Podgoretsky (2010-02-05 23:27:00) [6]> И. Павел (05.02.2010 23:17:03) [3]
PlaySound
И. Павел (2010-02-05 23:17:00) [7]
> Anatoly Podgoretsky ©
Я нашел эту фразу в MSDN, но там, кажется, не сказано, что теперь используют на замену SndPlaySound. Подскажите, пожалуйста, что используют вместо SndPlaySound теперь? Может быть, как раз DirectShow, или что-то другое?
> antonn ©
Спасибо за вариант. Пока искал способы работы со звуком тоже натыкался на эту библиотеку. Но дело в том, что я хотел бы сделать программу в виде единственного файла - чем добавлять dll лучше вынести звуковые файлы - плюс в том, что пользователь сможет их изменять на свой вкус.
Anatoly Podgoretsky (2010-02-05 22:29:00) [8]Справка> sndPlaySound is being maintained for backward compatibility.
antonn (2010-02-05 22:24:00) [9]если к программе добавить bass.dll, то скажу, иначе не скажу :)