error from ./configure of zoneminder regarding ffmpeg

Support and queries relating to all previous versions of ZoneMinder
Locked
sercik
Posts: 14
Joined: Tue Dec 23, 2008 5:13 pm

error from ./configure of zoneminder regarding ffmpeg

Post 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
sercik
Posts: 14
Joined: Tue Dec 23, 2008 5:13 pm

Post 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??
sercik
Posts: 14
Joined: Tue Dec 23, 2008 5:13 pm

Post 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!!!!
User avatar
cordel
Posts: 5210
Joined: Fri Mar 05, 2004 4:47 pm
Location: /USA/Washington/Seattle

Post 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.
sercik
Posts: 14
Joined: Tue Dec 23, 2008 5:13 pm

Thank you!

Post 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??
tdukes
Posts: 25
Joined: Thu May 29, 2008 11:58 pm

Post 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
Last edited by tdukes on Sat Mar 05, 2011 10:18 pm, edited 1 time in total.
sercik
Posts: 14
Joined: Tue Dec 23, 2008 5:13 pm

No, the problem is another

Post 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
tdukes
Posts: 25
Joined: Thu May 29, 2008 11:58 pm

Post 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
Locked