Я новичок в программировании и пытаюсь сделать простой консольный MP3-плеер в качестве проекта. Для этого мне нужен способ воспроизведения .mp3
файлов. SDL Mixer предоставляет эту возможность, но требует, чтобы libmpg123
было установлено в своей системе.
Вызов «Mix_Init ()» всегда завершается неудачей, даже если у меня установлена необходимая зависимость «libmpg123». У меня нет зависимостей для других форматов, например, FLAC, OGG, MOD и MIDI, если это имеет значение.
Я использую Ubuntu 18.04 на своем ноутбуке, и у меня SDL2 версии 2.0.9, SDL_Mixer 2.0.4, обе собраны из исходного кода (хотя я пробовал версии, доступные через менеджер пакетов apt
). У меня также установлена libmpg123
, которую я также собрал из исходного кода (опять же, я также попробовал версию, доступную через менеджер пакетов).
Я скомпилировал код двумя способами:
g++ Mix_Init.cpp -lSDL2 -lSDL2_mixer
и
g++ Mix_Init.cpp -lSDL2 -lSDL2_mixer -lmpg123
Я не знаю, какой из них прав, но ни один не решает проблему.
#include<SDL2/SDL.h>
#include<SDL2/SDL_mixer.h>
#include<iostream>
int main(int argc, char** argv)
{
if(SDL_Init(SDL_INIT_AUDIO))
std::cerr << "SDL_Init() Error: " << SDL_GetError() << std::endl;
else {
int result {0};
if(!((result = Mix_Init(MIX_INIT_MP3)) && MIX_INIT_MP3)){
std::cerr << Mix_GetError() << std::endl;
std::cerr << "Mix_Init() returns " << result << std::endl;
}
else {
std::cout << "Success!" << std::endl;
}
}
return 0;
}
Вот содержимое моего /usr/local/lib
каталога:
cmake libmpg123.so.0.44.8 libSDL2-2.0.so.0 libSDL2main.la libSDL2_mixer.so pkgconfig
libglfw3.a libout123.la libSDL2-2.0.so.0.9.0 libSDL2_mixer-2.0.so.0 libSDL2.so python2.7
libmpg123.la libout123.so libSDL2.a libSDL2_mixer-2.0.so.0.2.2 libSDL2_test.a python3.6
libmpg123.so libout123.so.0 libSDL2.la libSDL2_mixer.a libSDL2_test.la python3.7
libmpg123.so.0 libout123.so.0.2.2 libSDL2main.a libSDL2_mixer.la mpg123
Ожидаю вывод:
Success!
Вместо этого я получаю:
MP3 support not available
Mix_Init() returns 0
UPDATE:
Очевидно, у меня установлены и другие зависимости ...
Но я понятия не имею, как их использовать.