Воспроизведение звукового файла из ресурсов (Linux)
Модератор: Модераторы
Воспроизведение звукового файла из ресурсов (Linux)
С воспроизведением звуковых файлов через приложение проблем нет, используя функцию fpSytem(), но подскажите, как направить во внешнее приложение файл из ресурса. Копаю в сторону tprocess, но пока никак не могу сообразить, как реализовать эту возможность
Что за ресурсы ? Чем воспроизведение из файла плохо ?
Ism писал(а):Что за ресурсы ?
- ресурсы которые я подключаю к проекту, в частности те, которые собираю утилитой lazres
Ism писал(а):Чем воспроизведение из файла плохо ?
- ничем не плохо, просто хочу ЭТИ файлы спрятать в тело программы
... для Windows все реализуется достаточно просто, для этого нужно воспользоваться функцией sndPlaySound из модуля mmsystem, хочу подобным образом реализовать под линукс
В mmsystem хранятся winapi ф-ции. Этот способ не подходит для линукса. Легче вынуть файл из ресурса и воспроизвести его с помощью aplay.
Для Linux вам проще брать из ресурса в TMemoryStream , затем SaveToFile в temp и воспроизвести в любой удобной программе
Если особо возвращаться можно через это Named pipes
http://habrahabr.ru/post/94350/
[url]http://ru.wikipedia.org/wiki/Именованный_канал[/url]
Если особо возвращаться можно через это Named pipes
http://habrahabr.ru/post/94350/
[url]http://ru.wikipedia.org/wiki/Именованный_канал[/url]
dilloYa писал(а):для этого нужно воспользоваться функцией sndPlaySound из модуля mmsystem
dilloYa писал(а):проблем нет, используя функцию fpSytem()
А ничего, что при этих методах несинхронность может измеряться несколькими секундами, а программа при этом - уходить в аут?
...Ибо наличие у программиста компьютера, существенно более мощного, чем у пользователей его программы - есть Зло.
Мне вот все интересно, кто нибудь вообще под линуксом из fpascal реализовавал нормальное воспроизведение звука, т.е. через ALSA или PulseAudio, без вызова внешних полноценных плееров и без того, чтобы звуковые файлы выпускать на диск?
Под Windows, если что, directX (DirectSound) с этим справляется, и работоспособная интерфейсная библиотека к лазарусу для него есть.
SSerge писал(а):А ничего, что при этих методах несинхронность может измеряться несколькими секундами, а программа при этом - уходить в аут?
- программа в аут не уходит, если вызываемое приложение отправить в фон
SSerge писал(а):...Ибо наличие у программиста компьютера, существенно более мощного, чем у пользователей его программы - есть Зло.
- ну у любой программы, даже у калькулятора, есть некоторые системные требования, тем не менее у меня есть возможность тестировать программу на существенно более слабом компьютере
SSerge писал(а):Мне вот все интересно, кто нибудь вообще под линуксом из fpascal реализовавал нормальное воспроизведение звука, т.е. через ALSA или PulseAudio, без вызова внешних полноценных плееров и без того, чтобы звуковые файлы выпускать на диск?
- именно такой подход и хочу реализовать, правда через fpSystem, мне кажется, это не получится сделать
SSerge писал(а):Мне вот все интересно, кто нибудь вообще под линуксом из fpascal реализовавал нормальное воспроизведение звука
Смотря что называть нормальным. Можно попробовать через OpenAL.
kosteek писал(а):Можно попробовать через OpenAL.
Интерфейсные модули для freepascal для него существуют?
Насчет использования библиотек, кто мешает портировать на fpc части кода на С++ работающие со звуком как требуется ?
Есть Gstreamer http://ru.wikipedia.org/wiki/GStreamer
FreePascal работает с .so точно так же как и другие языки, а куски кода для воспроизведения небольшие и протировать будет несложно
Можно вообще использовать Gtk напрямую http://wiki.lazarus.freepascal.org/Acce ... s_directly
А в Qt возможно уже есть функции воспроизведения
http://www.lazarus.freepascal.org/index ... pic=3908.0
Есть Gstreamer http://ru.wikipedia.org/wiki/GStreamer
FreePascal работает с .so точно так же как и другие языки, а куски кода для воспроизведения небольшие и протировать будет несложно
Можно вообще использовать Gtk напрямую http://wiki.lazarus.freepascal.org/Acce ... s_directly
А в Qt возможно уже есть функции воспроизведения
http://www.lazarus.freepascal.org/index ... pic=3908.0
Под КДЕ есть Фонон бакэнд.
