Created attachment 408272 [details] zoneminder patch and spec Description of problem: I'm using AXIS M1011 IP cameras and want to move capture format from mjpeg to mpeg4, because of internet havn't sufficient bandwidth. Mjpeg working fine, but when I change format to mpeg4 via RTSP (zoneminder AXIS IP mpeg4 RTS/RTSP/HTTP preset) and path /mpeg4/media.amp I got: zmc_m3[8961]: FAT [You must have ffmpeg libraries installed to use remote camera protocol 'rtsp' for monitor 3], but ffmpeg and ffmpeg-libs was installed from rpmfusion repos and have all libraries need. mplayer or ffmpeg play video fine via rtsp://ip/mpeg4/media.amp. Version-Release number of selected component (if applicable): zoneminder-1.24.2-3.fc12.i386 ffmpeg-libs-0.5-5.20091026svn.fc12.i686 ffmpeg-devel-0.5-5.20091026svn.fc12.i686 ffmpeg-0.5-5.20091026svn.fc12.i686 Steps to Reproduce: 1. add rpmfusion repos, then yum install zoneminder ffmpeg ffmpeg-libs. 2. configure zoneminder as provided in INSTALL 3. add new camera and change setting via preset "Axis IP, mpeg4, RTP/RTSP/HTTP". 4. tail -f /var/log/messages, you can see zmc_m3[8961]: FAT [You must have ffmpeg libraries installed to use remote camera protocol 'rtsp' for monitor 3], I have fixed this bug: What are you need: Install rpm-build, then "yumdownload --source zoneminder && rpm -ivh zoneminder-1.24.2-3.fc12.src.rpm". After it enter rpmbuild and run rpmbuild SPECS/zoneminder.spec and install all deps to satisfy it. then run patch to SPEC file "patch -p0 < /root/zmspec.patch": --- SPECS/zoneminder.spec 2010-04-22 12:02:42.000000000 +0300 +++ SPECS/zoneminder.spec 2010-04-22 10:11:15.000000000 +0300 @@ -27,6 +27,7 @@ Patch4: zoneminder-1.24.1-perldep.patch Patch10: zoneminder-1.22.3-installfix.patch Patch11: zoneminder-1.24.2-gcc44.patch +Patch12: zoneminder-1.24.2-ffmpeglibs.patch Conflicts: zm <= 1.22.3 @@ -76,6 +77,7 @@ %patch4 -p0 -b .perldep %patch10 -p0 -b .installfix %patch11 -p0 -b .gcc44 +%patch12 -p0 -b .ffmpeglibs gunzip -c %{SOURCE1} | tar xf - cambozola-*/dist/cambozola.jar cp %{SOURCE4} README.Fedora after it copy below patch to "SOURCES/zoneminder-1.24.2-noffmpeg.patch" and run rpmbuild -bb SPECS/zoneminder.spec. After it ZM will correctly handle "rtsp" protocol. diff -up configure.ac configure.ac --- configure.ac 2010-04-22 10:09:29.000000000 +0300 +++ configure.ac 2010-04-22 10:10:24.000000000 +0300 @@ -74,8 +74,8 @@ AC_ARG_WITH(ffmpeg, e.g. --with-ffmpeg=/usr/local]) ) AC_SUBST(FFMPEG_PREFIX) -FFMPEG_LIBS="-L${FFMPEG_PREFIX}/${LIB_ARCH}" -FFMPEG_CFLAGS="-I${FFMPEG_PREFIX}/include" +FFMPEG_LIBS=`pkg-config --libs libavcodec libavdevice libavfilter libavformat libavutil libpostproc libswscale` +FFMPEG_CFLAGS=`pkg-config --cflags libavcodec libavdevice libavfilter libavformat libavutil libpostproc libswscale` AC_SUBST(FFMPEG_LIBS) AC_SUBST(FFMPEG_CFLAGS) @@ -244,10 +244,10 @@ else AC_CHECK_LIB(gnutls-openssl,MD5,,AC_MSG_WARN([gnutls-openssl.a is required for authenticated streaming - use ZM_SSL_LIB option to select openssl instead])) fi AC_CHECK_LIB(pcre,pcre_compile,,AC_MSG_WARN(libpcre.a may be required for remote/network camera support)) -dnl AC_CHECK_LIB(avutil,av_malloc,,AC_MSG_WARN(libavutil.a may be required for MPEG streaming)) -dnl AC_CHECK_LIB(avcodec,avcodec_init,,AC_MSG_WARN(libavcodec.a is required for MPEG streaming)) -dnl AC_CHECK_LIB(avformat,av_new_stream,,AC_MSG_WARN(libavformat.a is required for MPEG streaming),[-lavcodec -lavutil]) -dnl AC_CHECK_LIB(swscale,sws_scale,,,-lswscale) +AC_CHECK_LIB(avutil,av_malloc,,AC_MSG_WARN(libavutil.a may be required for MPEG streaming)) +AC_CHECK_LIB(avcodec,avcodec_init,,AC_MSG_WARN(libavcodec.a is required for MPEG streaming)) +AC_CHECK_LIB(avformat,av_new_stream,,AC_MSG_WARN(libavformat.a is required for MPEG streaming),[-lavcodec -lavutil]) +AC_CHECK_LIB(swscale,sws_scale,,,-lswscale) AC_CHECK_LIB(bz2,BZ2_bzCompress,,AC_MSG_WARN(zm requires libbz2.a for recent versions of ffmpeg)) AC_CHECK_LIB(z,compress,,) @@ -259,14 +259,13 @@ AC_CHECK_HEADERS(linux/videodev.h,,AC_MS AC_CHECK_HEADERS(linux/videodev2.h,AC_SUBST(ZM_V4L2,"1"),AC_MSG_WARN(zm requires Video4Linux2 to be installed for V4L2 support),) AC_CHECK_HEADERS(mysql/mysql.h,,AC_MSG_ERROR(zm requires MySQL headers - check that MySQL development packages are installed),) AC_CHECK_HEADERS(libavutil/avutil.h,,,) -AC_CHECK_HEADERS(ffmpeg/avutil.h,,,) +AC_CHECK_HEADERS(ffmpeg/libavutil/avutil.h,,,) AC_CHECK_HEADERS(libavcodec/avcodec.h,,,) -AC_CHECK_HEADERS(ffmpeg/avcodec.h,,,) +AC_CHECK_HEADERS(ffmpeg/libavcodec/avcodec.h,,,) AC_CHECK_HEADERS(libavformat/avformat.h,,,) -AC_CHECK_HEADERS(ffmpeg/avformat.h,,,) +AC_CHECK_HEADERS(ffmpeg/libavformat/avformat.h,,,) AC_CHECK_HEADERS(libswscale/swscale.h,,,) -AC_CHECK_HEADERS(ffmpeg/swscale.h,,,) -AC_CHECK_HEADERS(pcre/pcre.h,AC_SUBST(ZM_PCRE,"1"),,) +AC_CHECK_HEADERS(ffmpeg/libswscale/swscale.h,,,) AC_CHECK_HEADERS(pcre.h,AC_SUBST(ZM_PCRE,"1"),,) if test "$ENABLE_MMAP" = "yes"; then AC_CHECK_HEADERS(sys/mman.h,,,) I don't know how to contribute this patch, so if it possible to include it in official distribution.
I don't believe this is acceptable for Fedora. We can't build Fedora packages with packages from rpmfusion installed, so what is required is an alteration of the source to check for the ffmpeg libraries at runtime instead of at build time, or to use some other media framework like gstreamer that has such a capability. If you can fix the software to check for ffmpeg at runtime, we'll investigate the patch, but something that requires it at build time is not useful for Fedora. Another possibility would be to move zoneminder out of Fedora and into rpmfusion. I am not interested in doing that; perhaps someone else is.