Autor Tópico: para se programar um player  (Lida 2085 vezes)

Offline wendellxp

  • Usuário Ubuntu
  • *
  • Mensagens: 3
    • Ver perfil
para se programar um player
« Online: 05 de Maio de 2011, 01:27 »
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?


Offline wendellxp

  • Usuário Ubuntu
  • *
  • Mensagens: 3
    • Ver perfil
Re: para se programar um player
« Resposta #1 Online: 05 de Maio de 2011, 08:57 »
Só pra salientar:

entre outros tutoriais eu utilizei esse também: http://ubuntuforums.org/showpost.php?p=9868359&postcount=1289.

Offline fpissarra

  • Usuário Ubuntu
  • *
  • Mensagens: 246
    • Ver perfil
    • Lost in the e-Jungle
Re: para se programar um player
« Resposta #2 Online: 07 de Maio de 2011, 13:58 »
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:

Código: [Selecionar]
#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/
« Última modificação: 07 de Maio de 2011, 14:04 por fpissarra »

Offline fpissarra

  • Usuário Ubuntu
  • *
  • Mensagens: 246
    • Ver perfil
    • Lost in the e-Jungle
Re: para se programar um player
« Resposta #3 Online: 07 de Maio de 2011, 14:16 »
Se quiser, eis um pequeno teste que fiz (já tem algum tempo) com OpenGL, SDL e SDL_mixer.

http://www.4shared.com/file/OfIahvmj/teste_gltar.html

Leia o readme.txt e compile com o Makefile.x11 (Linux) ou Makefile.mingw (Windows). As DLLs que precisam ser distribuídas, para Windows, estão no pacote. As libs (para Windows) não estão lá pq uso o mingw32 do próprio Linux para gerar o executável para Windows (raramente faço isso!).
« Última modificação: 07 de Maio de 2011, 14:19 por fpissarra »