Page 1 of 1

error from ./configure of zoneminder regarding ffmpeg

Posted: Tue Dec 23, 2008 6:12 pm
by sercik
i have compiled and installed ffmpeg from svn then i have tried to ./configure zoneminder and it can't use libavcodec.a and libavformat.a i have opened config.log file and i heve found this:

### libavcodec error #####

configure:5207: checking for avcodec_init in -lavcodec
configure:5242: g++ -o conftest -g -O2 -L/usr/lib -L/usr/lib/mysql conftest.cpp -lavcodec -lavutil -lpcre -lcrypto -lmysqlclient -lpthread -ldl -lz -ljpeg >&5
/usr/lib/libavcodec.a(libxvid_rc.o)(.text+0x1fb): In function `ff_xvid_rate_control_init':
libavcodec/libxvid_rc.c:80: undefined reference to `xvid_plugin_2pass2'
/usr/lib/libavcodec.a(libxvid_rc.o)(.text+0x350): In function `ff_xvid_rate_estimate_qscale':
libavcodec/libxvid_rc.c:119: undefined reference to `xvid_plugin_2pass2'
/usr/lib/libavcodec.a(libxvid_rc.o)(.text+0x386):libavcodec/libxvid_rc.c:127: undefined reference to `xvid_plugin_2pass2'
/usr/lib/libavcodec.a(libxvid_rc.o)(.text+0x47b): In function `ff_xvid_rate_control_uninit':
libavcodec/libxvid_rc.c:146: undefined reference to `xvid_plugin_2pass2'
collect2: ld returned 1 exit status
configure:5248: $? = 1
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME "zm"
| #define PACKAGE_TARNAME "ZoneMinder"
| #define PACKAGE_VERSION "1.24.0"
| #define PACKAGE_STRING "zm 1.24.0"
| #define PACKAGE_BUGREPORT "support@zoneminder.com"
| #define PACKAGE "ZoneMinder"
| #define VERSION "1.24.0"
| #define ZM_MEM_MAPPED 0
| #define HAVE_LIBJPEG 1
| #define HAVE_LIBZ 1
| #define HAVE_LIBDL 1
| #define HAVE_LIBPTHREAD 1
| #define HAVE_LIBMYSQLCLIENT 1
| #define HAVE_LIBCRYPTO 1
| #define HAVE_LIBPCRE 1
| #define HAVE_LIBAVUTIL 1
| /* end confdefs.h. */
|
| /* Override any GCC internal prototype to avoid an error.
| Use char because int might match the return type of a GCC
| builtin and then its argument prototype would still apply. */
| #ifdef __cplusplus
| extern "C"
| #endif
| char avcodec_init ();
| int
| main ()
| {
| return avcodec_init ();
| ;
| return 0;
| }
configure:5266: result: no
configure:5276: WARNING: libavcodec.a is required for MPEG streaming

#### libavformat error #########
configure:5281: checking for av_new_stream in -lavformat
configure:5316: g++ -o conftest -g -O2 -L/usr/lib -L/usr/lib/mysql conftest.cpp -lavformat -lavcodec -lavutil -lpcre -lcrypto -lmysqlclient -lpthread -ldl -lz -ljpeg >&5
/usr/lib/libavcodec.a(libxvid_rc.o)(.text+0x1fb): In function `ff_xvid_rate_control_init':
libavcodec/libxvid_rc.c:80: undefined reference to `xvid_plugin_2pass2'
/usr/lib/libavcodec.a(libxvid_rc.o)(.text+0x350): In function `ff_xvid_rate_estimate_qscale':
libavcodec/libxvid_rc.c:119: undefined reference to `xvid_plugin_2pass2'
/usr/lib/libavcodec.a(libxvid_rc.o)(.text+0x386):libavcodec/libxvid_rc.c:127: undefined reference to `xvid_plugin_2pass2'
/usr/lib/libavcodec.a(libxvid_rc.o)(.text+0x47b): In function `ff_xvid_rate_control_uninit':
libavcodec/libxvid_rc.c:146: undefined reference to `xvid_plugin_2pass2'
collect2: ld returned 1 exit status
configure:5322: $? = 1
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME "zm"
| #define PACKAGE_TARNAME "ZoneMinder"
| #define PACKAGE_VERSION "1.24.0"
| #define PACKAGE_STRING "zm 1.24.0"
| #define PACKAGE_BUGREPORT "support@zoneminder.com"
| #define PACKAGE "ZoneMinder"
| #define VERSION "1.24.0"
| #define ZM_MEM_MAPPED 0
| #define HAVE_LIBJPEG 1
| #define HAVE_LIBZ 1
| #define HAVE_LIBDL 1
| #define HAVE_LIBPTHREAD 1
| #define HAVE_LIBMYSQLCLIENT 1
| #define HAVE_LIBCRYPTO 1
| #define HAVE_LIBPCRE 1
| #define HAVE_LIBAVUTIL 1
| /* end confdefs.h. */
|
| /* Override any GCC internal prototype to avoid an error.
| Use char because int might match the return type of a GCC
| builtin and then its argument prototype would still apply. */
| #ifdef __cplusplus
| extern "C"
| #endif
| char av_new_stream ();
| int
| main ()
| {
| return av_new_stream ();
| ;
| return 0;
| }
configure:5340: result: no
configure:5350: WARNING: libavformat.a is required for MPEG streaming

##########################
P.S. i have compiled ffmpeg with :
##########################

./configure --prefix=/usr --enable-libmp3lame --enable-libfaad --enable-libfaac --enable-libvorbis --enable-libx264 --enable-libxvid --enable-x11grab --enable-postproc --enable-gpl --enable-nonfree --enable-swscale --enable-avfilter --enable-xvmc --enable-zlib --enable-bzlib

Posted: Tue Dec 23, 2008 8:09 pm
by sercik
I have understood that the problem was in libxvid so i have tried to download source rpms for xvidcore compile and install and then try to reconfigure zoneminer but the error persists.
So i have recompiled ffmpeg without libxvid support and now zonominder configure gives no more the error..

Maybe i have found a ffmpeg bug?? or maybe is a zoneminder bug??

The functionality of zoneminder is limited because the lack of xvid support in ffmpeg??

Posted: Tue Dec 23, 2008 8:13 pm
by sercik
Argh!!!! :evil: :evil:
now i have tons of errors in making zoneminder erros like:

usr/lib/libavcodec.a(libfaac.o)(.text+0x2e): In function `Faac_encode_init':
libavcodec/libfaac.c:46: undefined reference to `faacEncOpen'
/usr/lib/libavcodec.a(libfaac.o)(.text+0x38):libavcodec/libfaac.c:51: undefined reference to `faacEncGetCurrentConfiguration'

/usr/lib/libavcodec.a(libfaad.o)(.text+0x19f):libavcodec/libfaad.c:250: undefined reference to `NeAACDecClose'
/usr/lib/libavcodec.a(libfaad.o)(.text+0x1a6):libavcodec/libfaad.c:251: undefined reference to `NeAACDecGetCurrentConfiguration'
/usr/lib/libavcodec.a(libfaad.o)(.text+0x1ad):libavcodec/libfaad.c:252: undefined reference to `NeAACDecSetConfiguration'

/usr/lib/libavcodec.a(libmp3lame.o)(.text+0xcc):libavcodec/libmp3lame.c:67: undefined reference to `lame_set_disable_reservoir'
/usr/lib/libavcodec.a(libmp3lame.o)(.text+0xd4):libavcodec/libmp3lame.c:68: undefined reference to `lame_init_params'
/usr/lib/libavcodec.a(libmp3lame.o)(.text+0xe9):libavcodec/libmp3lame.c:71: undefined reference to `lame_get_framesize'


so i need to compile ffmpeg without any encoder support??

but to this point i think that i heve found a zoneminder bug!!!!

Posted: Wed Dec 24, 2008 3:33 am
by cordel
No actually what you have found is that ffmpeg changes their API like we change our shorts. ffmpeg is a very heavily/actively developed project, its API changes almost every other week. So you must change the API in ZM to match the ffmpeg version you are using or get the version in SVN at the time of ZM release.

Thank you!

Posted: Thu Dec 25, 2008 4:17 pm
by sercik
Oh! i'm not so good in programming :)
API!! what is that? :)

Ok, could you explain me how to get the correct version of ffmpeg that
makes zoneminder compile correctly??

Posted: Fri Dec 26, 2008 4:32 pm
by tdukes
You may also need to tell it where ffmpeg is installed in your configure script:

./configure --with-webdir=/var/www/html/zm --with-cgidir=/var/www/cgi-bin ZM_SSL_LIB=openssl --with-ffmpeg=/usr/local
________
List of volkswagen group petrol engines

No, the problem is another

Posted: Sat Dec 27, 2008 8:50 am
by sercik
ffmpeg is found by zoneminder, but zoneminder is not able to use correctly the development file of ffmpeg. zoneminder gives errors whrn try to use libavcodec.a and libavformat.a

Posted: Sat Dec 27, 2008 12:36 pm
by tdukes
Another thing I ran into was I had another ffmpeg installed besides the SVN copy. When I removed it and added the ffmpeg path to the config script it compiled.

If you are on an rpm based linux, try rpm -q ffmpeg, if not you could try, 'locate ffmpeg' or 'which ffmpeg'.
________
Sativa Strains