Infos I didn't found that easily with Google and had to find out myself. Hereby given back to the net...
1000 Problems When Compiling ffmpeg and mplayer
This is a short compilation of ffmpeg/mplayer compilation pitfalls:
libx264:
If compilation fails with an error about the numbers of parameters in common/cpu.c
you need to check which glibc version is used. Remove the second parameter to
sched_getaffinity() if necessary and recompile.
ffmpeg+x264
ffmpeg configure fails with:
ERROR: libx264 not found
If you think configure made a mistake, make sure you are using the latest
version from SVN. If the latest version fails, report the problem to the
ffmpeg-user@mplayerhq.hu mailing list or IRC #ffmpeg on irc.freenode.net.
Include the log file "config.err" produced by configure as this will help
solving the problem.
This can be caused by two effects:
- Unintended library is used for linking. Check wether you have different ones installed. Avoid this and uninstall them if possible. If necessary use LD_LIBRARY_PATH or --extra-ldflags to change the search order.
- Incompatible combination of ffmpeg and libx264. Older libx264 provide a method x264_encoder_open which older ffmpeg versions do check for. More recent libx264 add a version number to the method name. Now when you compile a new libx264 against an older ffmpeg the libx264 detection that relies on the symbol name fails. As a workaround you could hack the configure script to check for "x264_encoder_open_78" instead of "x264_encoder_open" (given that 78 is the libx264 version you use).
ffmpeg+x264
ffmpeg compilation fails on AMD64 with:
libavcodec/svq3.c: In function 'svq3_decode_slice_header':
libavcodec/svq3.c:721: warning: cast discards qualifiers from pointer target type
libavcodec/svq3.c:724: warning: cast discards qualifiers from pointer target type
libavcodec/svq3.c: In function 'svq3_decode_init':
libavcodec/svq3.c:870: warning: dereferencing type-punned pointer will break strict-aliasing rules
/tmp/ccSySbTo.s: Assembler messages:
/tmp/ccSySbTo.s:10644: Error: suffix or operands invalid for `add'
/tmp/ccSySbTo.s:10656: Error: suffix or operands invalid for `add'
/tmp/ccSySbTo.s:12294: Error: suffix or operands invalid for `add'
/tmp/ccSySbTo.s:12306: Error: suffix or operands invalid for `add'
make: *** [libavcodec/h264.o] Error 1
This post explains that this is related to a glibc issue and how to patch it.
ffmpeg+x264
ffmpeg compilation fails with:
libavcodec/libx264.c: In function 'encode_nals':
libavcodec/libx264.c:60: warning: implicit declaration of function 'x264_nal_encode'
libavcodec/libx264.c: In function 'X264_init':
libavcodec/libx264.c:169: error: 'x264_param_t' has no member named 'b_bframe_pyramid'
make: *** [libavcodec/libx264.o] Error 1
This means you are using incompatible ffmpeg and libx264 versions. Try to upgrade ffmpeg or to downgrade libx264.
ffmpeg+video4linux
/usr/include/linux/videodev.h:55: error: syntax error before "ulong"
/usr/include/linux/videodev.h:71: error: syntax error before '}' token
Workaround:
--- configure.ac.080605 2005-06-08 21:56:04.000000000 +1200
+++ configure.ac 2005-06-08 21:56:42.000000000 +1200
@@ -1226,6 +1226,7 @@
AC_CHECK_HEADERS(linux/videodev.h,,,
[#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
+#include <sys/types.h>
#endif
#ifdef HAVE_ASM_TYPES_H
#include <asm/types.h>
http://www.winehq.org/pipermail/wine-devel/2005-June/037400.html
oder Workaround:
--disable-demuxer=v4l --disable-muxer=v4l --disable-demuxer=v4l2 --disable-muxer=v4l2
ffmpeg+old make
make: *** No rule to make target `libavdevice/libavdevice.so', needed by `all'. Stop.
Problem: GNU make is too old, you need at least v3.81
http://www.mail-archive.com/ffmpeg-issues@live.polito.it/msg01284.html
make: *** No rule to make target `install-libs', needed by `install'. Stop.
Problem: GNU make is too old, you need at least v3.81
http://ffmpeg.arrozcru.org/forum/viewtopic.php?f=1&t=833
Mplayer+old make
make: expand.c:489: allocated_variable_append: Assertion `current_variable_set_list->next != 0' failed.
Problem: GNU make is too old, you need at least v3.81
MPlayer
i386/dsputil_mmx.o i386/dsputil_mmx.c
i386/dsputil_mmx.c: In function `transpose4x4':
i386/dsputil_mmx.c:621: error: can't find a register in class `GENERAL_REGS' while reloading `asm'
Workaround: Add the following to your configure call
--extra-cflags="-O3 -fomit-frame-pointer"
Note: if this somehow helped you and you know something to be added feel free to post a comment!
Yes, compiling the open
Yes, compiling the open source video tool chains is a real pain. But at the end it is really complex SW with dozens of parts more or less independant and continuous interface changes to support ever more complex new video standards.
why is FFmpeg such a pain?
Thanks for this post. It was very helpful.
Why is FFmpeg such a source of pain when I install a new version of my chosen distribution (Fedora 64-bit)? This question is more rhetorical..
:)
'sodo
Post new comment