Enquanto não tenho tempo de escrever o que prometi no post passado (e é pq eu ia escrever tudo aquilo antes de terminar o ano.. triste engano
) vou colocando dicas para soluções de problemas que encontro no dia-a-dia.
O de hoje foi instalar o pymedia no Ubuntu. Só pra deixar claro, instalei isso em um Ubuntu 8.10, com Python 2.5.2 e PyMedia 1.3.7.3.
Primeiro instale os pacotes necessários (assumindo que você já tem gcc, g++, build-essential e etc):
sudo aptitude install python-dev libogg-dev libvorbis-dev libmp3lame-dev libfaad-dev libasound2-dev
Depois disso, o certo seria basicamente descompactar o pymedia, fazer o build e instalar;
python setup.py build
python setup.py install
Mas foi ai aonde enfrentei um problema:
building ‘pymedia.audio.acodec’ extension
creating build/temp.linux-i686-2.5/audio
creating build/temp.linux-i686-2.5/audio/acodec
creating build/temp.linux-i686-2.5/audio/libavcodec
creating build/temp.linux-i686-2.5/audio/libavcodec/liba52
gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -DBUILD_NUM=1862 -DPATH_DEV_DSP=”/dev/dsp” -DPATH_DEV_MIXER=”/dev/mixer” -D_FILE_OFFSET_BITS=64 -DACCEL_DETECT=1 -DHAVE_MMX=1 -DHAVE_LINUX_DVD_STRUCT=1 -DDVD_STRUCT_IN_LINUX_CDROM_H=1 -DCONFIG_VORBIS -DCONFIG_VORBIS -DCONFIG_FAAD -DCONFIG_MP3LAME -DCONFIG_VORBIS -DCONFIG_ALSA -DHAVE_AV_CONFIG_H -DUDF_CACHE=1 -INone -INone -INone -I/usr/include/lame -INone -INone -I/home/flavio/downloads/pymedia-1.3.7.3 -Iaudio/ -I/usr/include/python2.5 -c audio/acodec/acodec.c -o build/temp.linux-i686-2.5/audio/acodec/acodec.o
In file included from audio/acodec/acodec.c:31:
audio/libavcodec/dsputil.h:484: error: static declaration of ‘lrintf’ follows non-static declaration
audio/acodec/acodec.c:249: warning: initialization from incompatible pointer type
audio/acodec/acodec.c: In function ‘ACodec_Encode’:
audio/acodec/acodec.c:668: warning: pointer targets in passing argument 2 of ‘avcodec_encode_audio’ differ in signedness
error: command ‘gcc’ failed with exit status 1
Para “solucionar” esse problema, comentei essa parte de código em [Diretório do pymedia extraído]/audio/libavcodec/dsputil.h :
#ifndef HAVE_LRINTF
/* XXX: add ISOC specific test to avoid specific BSD testing. */
/* better than nothing implementation. */
/* btw, rintf() is existing on fbsd too — alex */
static inline long int lrintf(float x)
{
#ifdef CONFIG_WIN32
/* XXX: incorrect, but make it compile */
return (int)(x);
#else
return (int)(rint(x));
#endif
}
#endif
Estranhei o cast pra int no retorno de uma função declarada como long, mas enfim. Não sei que consequências isso vai causar, mas que o import rolou bonitinho, rolou.
Python 2.5.2 (r252:60911, Oct 5 2008, 19:24:49)
[GCC 4.3.2] on linux2
Type “help”, “copyright”, “credits” or “license” for more information.
>>> import pymedia
>>> dir(pymedia)
['Player', '__all__', '__builtins__', '__doc__', '__file__', '__name__', '__path__', '__version__', 'audio', 'getMetaData', 'meta', 'muxer', 'player', 'removable', 'video']
>>>
E pra mim, que não tenho muito tempo livre agora, isso bastou. ![]()

