LINUX.ORG.RU

Какими библиотеками лучше пользоваться для поддержки mp3, flac, ogg, ... в своём приложении?

 ,


0

1

В связи с некоторыми трудностями, приложение не может распространяться под GPL, поэтому максимум «свободы» - LGPL. Вопрос сам по себе дебилен, т.к. ответ простой - берём libFLAC, libVorbis, libmpg123, libmad, liblame - и всё супер. Но я просто хочу написать уже случившуюся историю и почитать комментарии.

Для чтения/записи .wav, .flac, .voc и неск. других «простых» форматов испольнована libsndfile (LGPL). Там есть поддержка .ogg, но при чтении она жрёт столько проца, что не хватает даже на риалтайм воспроизведение. Видимо нужно брать libVorbis. Стоило ли использовать для FLAC отдельный-кошерный libFLAC или libsndfile включает в себя libFLAC (или FLAC в libsndfile реализован с нуля o_O)?

Для поддержки mp3 применяется mpg123 (LGPL) - всё прекрасно работает. Есть варианты лучше? Почему-то некоторые плееры неадекватно реализуют перемотку для VBR mp3 - то время звучания меньше покажут, чем есть, то «ползунок» прыгает неравномерно. У меня почему-то всё хорошо с mpg123 на любом VBR... И от других библиотек хочется адекватности.

О кодировании - нужно кодировать в flac, mp3, ogg. Не помешает aac и даже создание .avi / .mkv - контейнера со одинокой звуковой дорожкой (на ютуб выкладывать). Сейчас в FLAC пишет та же libsndfile, правда я не увидел там регулировки степени сжатия. Использовать ли liblame для кодирования mp3 или что-то другое? libvorbis? libogg?

Пытался осилить libavcodec/libavformat (ffmpeg, libav) - ниасилил, есть проблемы: Вопрос по libavcodec.

Вопросы:
1) Как сделана поддержка FLAC в libsndfile? Линковкой libFLAC или реализацией с нуля?
2) libmpg123 VS libmad? (mp3)

Игры из состава Humble Bundle распространяют с libSDL. Не знаю в чём отличия libSDL_mixer и libSDL_sound, а лицензия LGPL.

Сделал поиск в менеджере установки программ. Библиотека libvorbis распространяется под лицензией BSD-3-Clause. LibVPX, libFLAC и wavpack - тоже. Если не найдётся необходимой библиотеки, то можно использовать их напрямую. Вот только они своё API могут иногда менять, и программа перестанет запускаться. А в стандарте LSB нужные версии не прописаны. Так бы в RPM/DEB просто прописали зависимости, и версии из стандарта загрузились из репозитория. А иначе - класть в архив с программой.

ZenitharChampion ★★★★★ ()
Последнее исправление: ZenitharChampion (всего исправлений: 1)
Ответ на: комментарий от ZenitharChampion

Буду в дистрибутиве всё мясо с собой таскать, чтобы не было неожиданностей с версиями.

kiverattes ★☆ ()

Как сделана поддержка FLAC в libsndfile? Линковкой libFLAC или реализацией с нуля?

$ pacman -Qi libsndfile | grep Depends
Depends On     : alsa-lib  flac  libvorbis

Думаю используются FLAC и libvorbis.

libmpg123 VS libmad? (mp3)

AFAIK у libmad не LGPL, а GPL.

m0rph ★★★★★ ()

осиль ffmpeg/libav. я тебе написал как исправить ошибку в другой теме.

waker ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.