Встроить звук в проект Lazrus

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

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

files32
новенький
Сообщения: 24
Зарегистрирован: 27.10.2007 13:42:41

Встроить звук в проект Lazrus

Сообщение files32 »

Вопрос. Как встроить звук в проект LAZARUS, чтобы можно было его проиграть кроссплатформено. Может компонент какой есть? Как TImage берет картинку из свойства Picture.
files32
новенький
Сообщения: 24
Зарегистрирован: 27.10.2007 13:42:41

Сообщение files32 »

Это все не то. Не кроссплатформенное и играет не встроеный звук.
Аватара пользователя
Sharfik
энтузиаст
Сообщения: 836
Зарегистрирован: 20.07.2013 01:04:30

Сообщение Sharfik »

Простите любезный, не подумал что решение надо для ленивых...
https://wiki.freepascal.org/Play_Sound_Multiplatform
files32
новенький
Сообщения: 24
Зарегистрирован: 27.10.2007 13:42:41

Сообщение files32 »

Sharfik писал(а):Простите любезный, не подумал что решение надо для ленивых...
https://wiki.freepascal.org/Play_Sound_Multiplatform
Зря ерничаете, я это проект видел, но это не то что нужно. Вы вопрос мой читали или только заголовок прочли?
Звук нужно встроить в форму со всеми удобствами, а не загружать его с диска. Как картинку в компоненте Image мы задаем через ресурсы формы Picture. На выходе есть екзешник и ни каких дополнительных файлов.

Знаю, что можно в ресурсы wav запихать, потом извлекать их как файлы в какю-нибудь временную папку и проигрывать, но мне такой вариант не подходит. Исполняемый файл будет запускаться на системе, где не будет возможности сохранять файлы.
SSerge
энтузиаст
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Сообщение SSerge »

files32
если судить по палитре компонентов 8-го codetyphon под линуксом, единственный компонент для работы со звуком, похожий на вменяемый - ACS I/O
(TACSAudioOut). Оно вроде бы может воспроизводить из потока.

Вот тут какой-то горячий мексиканский парень пишет о нём, приводя пример: https://gladiston.net.br/en/programacao ... omponents/
Лично меня в примере смущает вот что: гражданин Сантана под Windows вместо этого применяет MMSound, технология коего, насколько помню, почти неприемлема на практике из за громадных задержек при воспроизведении, щелчков при наложении двух разных источников и прочего г-на. Под Windows, кажется, кроме прямого взаимодействия с directSound, больше для воспроизведения звука, который требуется привязать к визуальным событиям, ничего нормально не работает.
delphius
постоялец
Сообщения: 131
Зарегистрирован: 18.03.2020 12:40:11

Сообщение delphius »

files32 писал(а):Знаю, что можно в ресурсы wav запихать, потом извлекать их как файлы в какю-нибудь временную папку и проигрывать, но мне такой вариант не подходит. Исполняемый файл будет запускаться на системе, где не будет возможности сохранять файлы
А зачем его из RCDATA сохранять на диск, если можно будет просто читать в memorystream и скармливать компоненту работы со звуком? А вот непосредственно со звуком универсального кросплатформа нет, придется извращаться.
iskander
энтузиаст
Сообщения: 627
Зарегистрирован: 08.01.2012 18:43:34

Сообщение iskander »

SSerge писал(а):если судить по палитре компонентов 8-го codetyphon под линуксом
А зачем нам кузнец? Почему бы просто не выбрать /Пакет/Сетевой диспетчер пакетов/ACS?
files32
новенький
Сообщения: 24
Зарегистрирован: 27.10.2007 13:42:41

Сообщение files32 »

delphius писал(а):скармливать компоненту работы
А вот тут по подробнее. Это какой компонет умеет брать из потоков? Что мне встречались умеют брать только файл.
delphius
постоялец
Сообщения: 131
Зарегистрирован: 18.03.2020 12:40:11

Сообщение delphius »

files32 писал(а):
delphius писал(а):скармливать компоненту работы
А вот тут по подробнее. Это какой компонет умеет брать из потоков? Что мне встречались умеют брать только файл.
Я не буду с этим спорить, надо просто попробовать самому руками, но загружают они все в любом случае в память из файла, перед проигрыванием.

Во вложении для примера memorysound.zip сделал под windows (MMSystem) загрузку и проигрывание wav из ресурса, компилируется под чистым fpc

Можно проверить и под лазарем на какой нибудь визуалке, например на PlayWavePackage
UPD. Посмотрел компонент, под win использует тоже MMSystem, а под остальные (Linux/MacOS) пытается найти установленный внешний проигрыватель, методом перебора и запуском его путем передачи файла в качестве параметра, поэтому не подойдет.

Ну, значит, из пушки по воробьям :mrgreen: Audio Components Suite for Lazarus/Delphi
UPD. Проверил работу компонента под win и под ubuntu. Нормально воспроизводит из ресурса. Под MacOS надо проверять, но тоже должно работать. Во вложении пример acssound.zip.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось delphius 06.03.2023 23:47:12, всего редактировалось 1 раз.
SSerge
энтузиаст
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Сообщение SSerge »

Боже ж ты мой. 2023-й год. До сих пор, получается, не написано ни одного компонента/библиотеки для fpc, позволяющих работать со звуком без вызова коллекции внешних утилит. Неужели всем достаточно найти неизвестно какой плеер в системе, загрузить его, и сунуть ему поток на вход. И то что он может не загрузится, загрузится с задержкой, зависнет в конце концов - никого не волнует?
Seenkao
энтузиаст
Сообщения: 568
Зарегистрирован: 01.04.2020 02:37:12
Контактная информация:

Сообщение Seenkao »

delphius писал(а):А вот непосредственно со звуком универсального кросплатформа нет, придется извращаться.
Что подразумевается под "универсальной кроссплатформой"? OpenAL идёт везде. Я пользуюсь, но делать всё всё равно надо ручками.
ZenGL воспроизводит OGG, WAV.
GLScene вроде больше форматов воспроизводит.
ACS не пользовался.

Для LCL наверно больше подойдёт GLScene, но он тоже не грузит "автоматом" ресурсы (хотя могу ошибаться).

Добавлено спустя 1 минуту 3 секунды:
О, я же забыл про Castle Game Engine!!! Он тоже работает с LCL.
delphius
постоялец
Сообщения: 131
Зарегистрирован: 18.03.2020 12:40:11

Сообщение delphius »

Seenkao писал(а):Что подразумевается под "универсальной кроссплатформой"?
Без использования внешних dll/so, без "танцев с бубном" с кодовой базой/модулями, чисто под звук, не комбайн.
Условие задачи - единый исполняемый файл, собранный вместе с ресурсами, в т.ч. и аудио.
Ну вот, ACS вполне со всем справился :) осталось проверить под Linux/MacOS
Seenkao
энтузиаст
Сообщения: 568
Зарегистрирован: 01.04.2020 02:37:12
Контактная информация:

Сообщение Seenkao »

delphius, они все используют внешние dll/so/dylib. Просто надо понимать, что часть этих библиотек поставляются вместе с ОС. Если мы используем определённый формат файла, то нам его надо декодировать для воспроизведения и для этого нужны дополнительные кодеки.

Просто есть уже готовые решения, которыми и пользуются люди.

Добавлено спустя 1 минуту 37 секунд:
delphius писал(а):Ну вот, ACS вполне со всем справился осталось проверить под Linux/MacOS
он не будет работать под MacOS, там ни чего для этого не сделано.
delphius
постоялец
Сообщения: 131
Зарегистрирован: 18.03.2020 12:40:11

Сообщение delphius »

Seenkao писал(а):Если мы используем определённый формат файла, то нам его надо декодировать для воспроизведения и для этого нужны дополнительные кодеки.
Именно поэтому выбран формат wav с возможностью декодирования средствами пакета)
Seenkao писал(а):он не будет работать под MacOS, там ни чего для этого не сделано.
Ну надо же проверить)
И прикрутить что-то ещё, чтобы работало))) 2023 год же :mrgreen:
Ответить