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

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

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

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

Сообщение files32 » 04.03.2023 19:00:11

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

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

Сообщение Sharfik » 04.03.2023 19:13:03

Аватара пользователя
Sharfik
энтузиаст
 
Сообщения: 763
Зарегистрирован: 20.07.2013 01:04:30

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

Сообщение files32 » 04.03.2023 19:27:44

Это все не то. Не кроссплатформенное и играет не встроеный звук.
files32
новенький
 
Сообщения: 24
Зарегистрирован: 27.10.2007 13:42:41

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

Сообщение Sharfik » 04.03.2023 20:46:59

Простите любезный, не подумал что решение надо для ленивых...
https://wiki.freepascal.org/Play_Sound_Multiplatform
Аватара пользователя
Sharfik
энтузиаст
 
Сообщения: 763
Зарегистрирован: 20.07.2013 01:04:30

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

Сообщение files32 » 04.03.2023 21:19:52

Sharfik писал(а):Простите любезный, не подумал что решение надо для ленивых...
https://wiki.freepascal.org/Play_Sound_Multiplatform

Зря ерничаете, я это проект видел, но это не то что нужно. Вы вопрос мой читали или только заголовок прочли?
Звук нужно встроить в форму со всеми удобствами, а не загружать его с диска. Как картинку в компоненте Image мы задаем через ресурсы формы Picture. На выходе есть екзешник и ни каких дополнительных файлов.

Знаю, что можно в ресурсы wav запихать, потом извлекать их как файлы в какю-нибудь временную папку и проигрывать, но мне такой вариант не подходит. Исполняемый файл будет запускаться на системе, где не будет возможности сохранять файлы.
files32
новенький
 
Сообщения: 24
Зарегистрирован: 27.10.2007 13:42:41

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

Сообщение SSerge » 05.03.2023 09:19:14

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

Вот тут какой-то горячий мексиканский парень пишет о нём, приводя пример: https://gladiston.net.br/en/programacao ... omponents/
Лично меня в примере смущает вот что: гражданин Сантана под Windows вместо этого применяет MMSound, технология коего, насколько помню, почти неприемлема на практике из за громадных задержек при воспроизведении, щелчков при наложении двух разных источников и прочего г-на. Под Windows, кажется, кроме прямого взаимодействия с directSound, больше для воспроизведения звука, который требуется привязать к визуальным событиям, ничего нормально не работает.
SSerge
энтузиаст
 
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

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

Сообщение delphius » 05.03.2023 13:09:13

files32 писал(а):Знаю, что можно в ресурсы wav запихать, потом извлекать их как файлы в какю-нибудь временную папку и проигрывать, но мне такой вариант не подходит. Исполняемый файл будет запускаться на системе, где не будет возможности сохранять файлы

А зачем его из RCDATA сохранять на диск, если можно будет просто читать в memorystream и скармливать компоненту работы со звуком? А вот непосредственно со звуком универсального кросплатформа нет, придется извращаться.
delphius
постоялец
 
Сообщения: 122
Зарегистрирован: 18.03.2020 13:40:11

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

Сообщение iskander » 05.03.2023 16:08:41

SSerge писал(а):если судить по палитре компонентов 8-го codetyphon под линуксом

А зачем нам кузнец? Почему бы просто не выбрать /Пакет/Сетевой диспетчер пакетов/ACS?
iskander
энтузиаст
 
Сообщения: 590
Зарегистрирован: 08.01.2012 18:43:34

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

Сообщение files32 » 05.03.2023 18:23:49

delphius писал(а):скармливать компоненту работы

А вот тут по подробнее. Это какой компонет умеет брать из потоков? Что мне встречались умеют брать только файл.
files32
новенький
 
Сообщения: 24
Зарегистрирован: 27.10.2007 13:42:41

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

Сообщение delphius » 05.03.2023 21:46:42

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 07.03.2023 00:47:12, всего редактировалось 1 раз.
delphius
постоялец
 
Сообщения: 122
Зарегистрирован: 18.03.2020 13:40:11

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

Сообщение SSerge » 06.03.2023 05:30:26

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

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

Сообщение Seenkao » 06.03.2023 06:51:43

delphius писал(а):А вот непосредственно со звуком универсального кросплатформа нет, придется извращаться.

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

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

Добавлено спустя 1 минуту 3 секунды:
О, я же забыл про Castle Game Engine!!! Он тоже работает с LCL.
Seenkao
энтузиаст
 
Сообщения: 502
Зарегистрирован: 01.04.2020 03:37:12

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

Сообщение delphius » 06.03.2023 07:05:12

Seenkao писал(а):Что подразумевается под "универсальной кроссплатформой"?

Без использования внешних dll/so, без "танцев с бубном" с кодовой базой/модулями, чисто под звук, не комбайн.
Условие задачи - единый исполняемый файл, собранный вместе с ресурсами, в т.ч. и аудио.
Ну вот, ACS вполне со всем справился :) осталось проверить под Linux/MacOS
delphius
постоялец
 
Сообщения: 122
Зарегистрирован: 18.03.2020 13:40:11

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

Сообщение Seenkao » 06.03.2023 07:14:59

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

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

Добавлено спустя 1 минуту 37 секунд:
delphius писал(а):Ну вот, ACS вполне со всем справился осталось проверить под Linux/MacOS

он не будет работать под MacOS, там ни чего для этого не сделано.
Seenkao
энтузиаст
 
Сообщения: 502
Зарегистрирован: 01.04.2020 03:37:12

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

Сообщение delphius » 06.03.2023 08:22:20

Seenkao писал(а):Если мы используем определённый формат файла, то нам его надо декодировать для воспроизведения и для этого нужны дополнительные кодеки.

Именно поэтому выбран формат wav с возможностью декодирования средствами пакета)

Seenkao писал(а):он не будет работать под MacOS, там ни чего для этого не сделано.

Ну надо же проверить)
И прикрутить что-то ещё, чтобы работало))) 2023 год же :mrgreen:
delphius
постоялец
 
Сообщения: 122
Зарегистрирован: 18.03.2020 13:40:11

След.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 12

Рейтинг@Mail.ru