Olá pessoal,
preciso programar um player em c/c++ para linux que leia pela menos os tipos de arquivos mais comuns.
pesquisando um pouco eu cheiguei ao ffmpeg (http://ffmpeg.org/download.html) + SDL (http://ffmpeg.org/download.html).
Estou com um certo problema na instalação do ffmpeg: gera os libs e as includes na pasta /usr/local, mas quando utilizo as funções diz que elas não foram declaradas, mesmo com as libs setadas certinho.
Para que eu fuja dessa dor de cabeça, alguem já trabalhou com isso antes e pode me recomendar uma biblioteca mais fácil para configuração e utilização ou quem sabe me dar uma mao no ffmpeg?
Se a idéia é tocar uma música através de código C/C++ SDL pode ser uma solução simples. Dê uma olhada no fragmento de código abaixo:
#include <stdlib.h>
#include <SDL/SDL.h>
#include <SDL/SDL_mixer.h>
#define SAMPLE_RATE 44100
#define CHANNELS 2
#define BUFFER_SIZE 4096
MiX_Music *pmm = NULL;
void UnloadAndStopMusic(void);
int LoadAndPlay(const char *musicfilename)
{
if (Mix_OpenAudio(SAMPLE_RATE, AUDIO_S16SYS, CHANNELS, BUFFER_SIZE))
{
return 0; /* 0 = erro */
}
if ((pmm = Mix_LoadMUS(musicfilename)) == NULL)
{
return 0; /* 0 = erro */
}
atexit(UnloadAndStopMusic);
/* -1 significa repetição infinita.
Qualquer valor acima de 0 é o nº de vezes que
a música será tocada. */
Mix_PlayMusic(pmm, -1);
return 1; /* 1 = ok */
}
void UnloadAndStopMusic(void);
{
if (pmm)
{
Mix_HaltMusic();
Mix_FreeMusic(pmm);
pmm = NULL;
}
}
É simples assim. Mas você deve instalar as libs correspondentes para suportar MP3 e OGG. Para fins de desenvolvimento instalar libsdl-mixer1.2-dev resolve, mas se for distribuir, é necessário instalar libogg, libvorbis (para OGG) e libsmpeg e libmikmod (para MP3).
Não esqueça de adicionar as libs no gcc: -lSDL -lSDL_mixer
Quanto à seleção do tipo de arquivo, SDL_mixer vai descobrir a partir da extensão do arquivo.
Dê uma olhada na documentação de SDL_mixer:
http://www.libsdl.org/projects/SDL_mixer/