LINUX.ORG.RU

Какой самый переносимый способ поддержки MP3 в аудио-редакторе в линуксах?

 


0

2

1) Вот audigger что-то где-то ищет (ffmpeg вроде какой-то) и просит какую-то либу поставить, если юзер хочет MP3. Но mp3 есть в разных либах (декомпрессия) - от mpg123 до могучих libavconv. Будет ли кошерно, если будет реализован мега-адаптер, поддерживающий несколько таких популярных либ?

2) А как в линуксах принято искать либы в системе в рантайме (после установки)? Шариться по ФС? Не навязываться же на какие-то пакетные манагеры. Я так понимаю, что правильнее всего пошариться по ФС или дать юзеру забить путь, потом подгрузить .so динамически всяким там ldopen и т.п.

P.S. Если кто-то решит написать «MP3 - не нужно», то мы зададим ему ворос, где же он в посте нашёл утверждение о том, что оно нужно...



Последнее исправление: hlamotron (всего исправлений: 2)

1) GStreamer??? уже сам по себе объединяет кучу либ в том числе libav/ffmpeg и прочие, а ffmpeg тоже в свою очередь - у тебя NIH?

2) не совсем понимаю зачем это знать

I-Love-Microsoft ★★★★★
()
Последнее исправление: I-Love-Microsoft (всего исправлений: 1)

А как в линуксах принято искать либы в системе в рантайме (после установки)?

Если это не внутренние плагины твоей утилиты, то никак. Это работа ld.so.

Шариться по ФС? Не навязываться же на какие-то пакетные манагеры.

По ФС шарится ld.so, и ты на него автоматически завязываешься при компиляции динамически слинкованной ELF-ки.

Я так понимаю, что правильнее всего пошариться по ФС

Это делает ld.so.

или дать юзеру забить путь

Юзер может указать кастомные LD_LIBRARY_PATH или даже LD_PRELOAD, и тогда ld.so сам всё сделает.

потом подгрузить .so динамически всяким там ldopen и т.п.

Если это внешняя библиотека, которая является твоей обязательной зависимостью, то эту работу каноничнее спихнуть на ld.so.

devsdc ★★
()
Ответ на: комментарий от devsdc

Если хочется опциональные рантайм-зависимости, то делай их плагинами и работай с ними как описал, да. Но «шариться по ФС» будет включать в себя тогда только те пути, которые были заранее отведены под плагины твоей утилиты.

devsdc ★★
()

самый переносимый

тащи либу с собой. libmpg123 вполне себе.

waker ★★★★★
()

Фреймворк GStreamer или линковка/system() к ffmpeg

mystery ★★
()
Ответ на: комментарий от waker

Я отвечал на вопрос «как принято», а не «как можно». И ниже даже написал, что с внутренними библиотеками-плагинами так и надо.

devsdc ★★
()

mpg123 - не совсем либа.

ffmpeg вроде какой-то

Не «какой-то», а практически стандартный.

Точнее говоря, если тебе нужно аудио-видео в линуксе, ты можешь рассчитывать на наличие в твоём дистрибутиве либо самого ffmpeg, либо его форка libav. Оба пакета представляют в твоё распоряжение более-менее одно и то же: libavcodec, libavformat и libavutil. Так что городить над ними ещё какой-то мегаадаптер считаю излишним.

Соответственно, чего-то там искать в рантайме, имхо, тоже излишне. Будешь делать пакет для конткретного дистрибутива - пропиши зависимость.

FFMPEG для Windows тоже есть, но там его придётся тащить самому. Но рантайм тут опять-таки не при чём, просто положи в пакет нужные DLL.

hobbit ★★★★★
()

Статически слинковаться с libmpg123.

mix_mix ★★★★★
()

Например игры таскают с собой SDL_audio или библиотеки ffmpeg

ZenitharChampion ★★★★★
()

ldd показывает, с чем слинкован бинарь
/etc/ld.so.conf - конфиг загрузчика ld (glibc)
ldconfig - обновления кеша /etc/ld.so.cache, что бы постоянно не искать по захардкоженным путям глибцу
Когда запускаешь бинарь, /lib/ld.so смотрит в кеш, где список всех бибилиотек, и грузит эти объекты в память, если их там нету
Библиотеки - это shared объекты, и они грузятся разово
Если приложение статично слинковано, то все объекты в нем хранятся, и ld.so не используется (ну или минимально, я хз как) и объекты в памяти дублируются
Из-за этого статично слинкованные программы жрут память, но не зависят от библиотек

mystery ★★
()

Да, кстати, поскольку у тебя промелькнуло слово «аудиоредактор», то всё же, может, стоит подумать, что делать, если «юзер захочет» ещё что-то, КРОМЕ MP3?

А если вероятность этого таки ненулевая, то я всё же настойчиво предлагаю завязываться не на mpg123, а на более универсальное решение - ffmpeg/libav (см. мой комментарий выше). И мега-адаптера не потребуется.

Удачи в разработке.

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.