Встроить звук в проект Lazrus
Модератор: Модераторы
Встроить звук в проект Lazrus
Вопрос. Как встроить звук в проект LAZARUS, чтобы можно было его проиграть кроссплатформено. Может компонент какой есть? Как TImage берет картинку из свойства Picture.
Это все не то. Не кроссплатформенное и играет не встроеный звук.
Простите любезный, не подумал что решение надо для ленивых...
https://wiki.freepascal.org/Play_Sound_Multiplatform
https://wiki.freepascal.org/Play_Sound_Multiplatform
Зря ерничаете, я это проект видел, но это не то что нужно. Вы вопрос мой читали или только заголовок прочли?Sharfik писал(а):Простите любезный, не подумал что решение надо для ленивых...
https://wiki.freepascal.org/Play_Sound_Multiplatform
Звук нужно встроить в форму со всеми удобствами, а не загружать его с диска. Как картинку в компоненте Image мы задаем через ресурсы формы Picture. На выходе есть екзешник и ни каких дополнительных файлов.
Знаю, что можно в ресурсы wav запихать, потом извлекать их как файлы в какю-нибудь временную папку и проигрывать, но мне такой вариант не подходит. Исполняемый файл будет запускаться на системе, где не будет возможности сохранять файлы.
files32
если судить по палитре компонентов 8-го codetyphon под линуксом, единственный компонент для работы со звуком, похожий на вменяемый - ACS I/O
(TACSAudioOut). Оно вроде бы может воспроизводить из потока.
Вот тут какой-то горячий мексиканский парень пишет о нём, приводя пример: https://gladiston.net.br/en/programacao ... omponents/
Лично меня в примере смущает вот что: гражданин Сантана под Windows вместо этого применяет MMSound, технология коего, насколько помню, почти неприемлема на практике из за громадных задержек при воспроизведении, щелчков при наложении двух разных источников и прочего г-на. Под Windows, кажется, кроме прямого взаимодействия с directSound, больше для воспроизведения звука, который требуется привязать к визуальным событиям, ничего нормально не работает.
если судить по палитре компонентов 8-го codetyphon под линуксом, единственный компонент для работы со звуком, похожий на вменяемый - ACS I/O
(TACSAudioOut). Оно вроде бы может воспроизводить из потока.
Вот тут какой-то горячий мексиканский парень пишет о нём, приводя пример: https://gladiston.net.br/en/programacao ... omponents/
Лично меня в примере смущает вот что: гражданин Сантана под Windows вместо этого применяет MMSound, технология коего, насколько помню, почти неприемлема на практике из за громадных задержек при воспроизведении, щелчков при наложении двух разных источников и прочего г-на. Под Windows, кажется, кроме прямого взаимодействия с directSound, больше для воспроизведения звука, который требуется привязать к визуальным событиям, ничего нормально не работает.
А зачем его из RCDATA сохранять на диск, если можно будет просто читать в memorystream и скармливать компоненту работы со звуком? А вот непосредственно со звуком универсального кросплатформа нет, придется извращаться.files32 писал(а):Знаю, что можно в ресурсы wav запихать, потом извлекать их как файлы в какю-нибудь временную папку и проигрывать, но мне такой вариант не подходит. Исполняемый файл будет запускаться на системе, где не будет возможности сохранять файлы
А зачем нам кузнец? Почему бы просто не выбрать /Пакет/Сетевой диспетчер пакетов/ACS?SSerge писал(а):если судить по палитре компонентов 8-го codetyphon под линуксом
А вот тут по подробнее. Это какой компонет умеет брать из потоков? Что мне встречались умеют брать только файл.delphius писал(а):скармливать компоненту работы
Я не буду с этим спорить, надо просто попробовать самому руками, но загружают они все в любом случае в память из файла, перед проигрыванием.files32 писал(а):А вот тут по подробнее. Это какой компонет умеет брать из потоков? Что мне встречались умеют брать только файл.delphius писал(а):скармливать компоненту работы
Во вложении для примера memorysound.zip сделал под windows (MMSystem) загрузку и проигрывание wav из ресурса, компилируется под чистым fpc
Можно проверить и под лазарем на какой нибудь визуалке, например на PlayWavePackage
UPD. Посмотрел компонент, под win использует тоже MMSystem, а под остальные (Linux/MacOS) пытается найти установленный внешний проигрыватель, методом перебора и запуском его путем передачи файла в качестве параметра, поэтому не подойдет.
Ну, значит, из пушки по воробьям
UPD. Проверил работу компонента под win и под ubuntu. Нормально воспроизводит из ресурса. Под MacOS надо проверять, но тоже должно работать. Во вложении пример acssound.zip.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось delphius 06.03.2023 23:47:12, всего редактировалось 1 раз.
Боже ж ты мой. 2023-й год. До сих пор, получается, не написано ни одного компонента/библиотеки для fpc, позволяющих работать со звуком без вызова коллекции внешних утилит. Неужели всем достаточно найти неизвестно какой плеер в системе, загрузить его, и сунуть ему поток на вход. И то что он может не загрузится, загрузится с задержкой, зависнет в конце концов - никого не волнует?
Что подразумевается под "универсальной кроссплатформой"? OpenAL идёт везде. Я пользуюсь, но делать всё всё равно надо ручками.delphius писал(а):А вот непосредственно со звуком универсального кросплатформа нет, придется извращаться.
ZenGL воспроизводит OGG, WAV.
GLScene вроде больше форматов воспроизводит.
ACS не пользовался.
Для LCL наверно больше подойдёт GLScene, но он тоже не грузит "автоматом" ресурсы (хотя могу ошибаться).
Добавлено спустя 1 минуту 3 секунды:
О, я же забыл про Castle Game Engine!!! Он тоже работает с LCL.
Без использования внешних dll/so, без "танцев с бубном" с кодовой базой/модулями, чисто под звук, не комбайн.Seenkao писал(а):Что подразумевается под "универсальной кроссплатформой"?
Условие задачи - единый исполняемый файл, собранный вместе с ресурсами, в т.ч. и аудио.
Ну вот, ACS вполне со всем справился
delphius, они все используют внешние dll/so/dylib. Просто надо понимать, что часть этих библиотек поставляются вместе с ОС. Если мы используем определённый формат файла, то нам его надо декодировать для воспроизведения и для этого нужны дополнительные кодеки.
Просто есть уже готовые решения, которыми и пользуются люди.
Добавлено спустя 1 минуту 37 секунд:
Просто есть уже готовые решения, которыми и пользуются люди.
Добавлено спустя 1 минуту 37 секунд:
он не будет работать под MacOS, там ни чего для этого не сделано.delphius писал(а):Ну вот, ACS вполне со всем справился осталось проверить под Linux/MacOS
Именно поэтому выбран формат wav с возможностью декодирования средствами пакета)Seenkao писал(а):Если мы используем определённый формат файла, то нам его надо декодировать для воспроизведения и для этого нужны дополнительные кодеки.
Ну надо же проверить)Seenkao писал(а):он не будет работать под MacOS, там ни чего для этого не сделано.
И прикрутить что-то ещё, чтобы работало))) 2023 год же
