First time here? Check out the FAQ!

Ask Your Question
1

OpenCV 3.0 won't compile with FFMPEG support?

asked Jun 5 '15

rexroni gravatar image

I would like to use the ffmpeg library so I have video support with my OpenCV 3.0 build. I'm using the excellent step-by-step instructions from the book Practical OpenCV by Samarth Brahmbhatt (http://www.it-ebooks.info/book/3145/) But every time I run make, the build quits while trying to link libopencv_videoio.so, and throws this error:

Linking CXX shared library ../../lib/libopencv_videoio.so

/usr/bin/ld: /usr/local/lib/libavcodec.a(vc1dsp_mmx.o): relocation R_X86_64_PC32 against symbol `ff_pw_9' can not be used when making a shared object; recompile with -fPIC

First, there was actually some similar error, and I fixed it by recompiling x264 with the additional option --enable-pic. That was easy.

But I've recompiled ffmpeg a bunch of times, with the options --extra-cflags=-fPIC, --extra-cxxflags=-fPIC, --enable-pic, and nearly every combination of those options. Nothing will make this work.

I don't have any problem following the same steps with OpenCV 2.4.9.

Help!

Preview: (hide)

Comments

Any reason why you want ffmpeg explicitly? It has been replaced by libav on newer linux systems :)

StevenPuttemans gravatar imageStevenPuttemans (Jun 7 '15)edit
1

Really? I suppose I'm not too concerned where my video support comes from... I just wanted video support and I had instructions for how to make ffmpeg work. I actually solved the question before I asked it, only I wasn't able to answer immediately due to new-user restrictions.

Do you have instructions for setting up opencv with libav, or is it just an option in ccmake and it "just works"?

rexroni gravatar imagerexroni (Jun 9 '15)edit
1

Just a compile option yes :) libav is pretty much preinstalled on linux systems

StevenPuttemans gravatar imageStevenPuttemans (Jun 9 '15)edit
1

Thanks for the tip!

rexroni gravatar imagerexroni (Jun 9 '15)edit

Ok, so I again have a need to compile opencv with video support, but I do not see a WITH_AV option or anything that looks like that when I run ccmake .., am I missing something?

rexroni gravatar imagerexroni (Sep 1 '15)edit

It is still the flag WITH_FFMPEG but under the hood this has been changed by libav in Linux distributions.

StevenPuttemans gravatar imageStevenPuttemans (Sep 2 '15)edit

2 answers

Sort by » oldest newest most voted
3

answered Dec 22 '15

weston.pace gravatar image

Another option is to simply build ffmpeg as a shared library (pass --enable-shared --disable-static to configure) which removes the need for fPIC.

Preview: (hide)

Comments

I like this, it is simpler.

rexroni gravatar imagerexroni (Apr 22 '16)edit
2

answered Jun 9 '15

rexroni gravatar image

updated Sep 1 '15

Ah, great question Rex. I had the same exact problem, myself!

I tried all the same things you did actually. I finally found the answer by googling "ffmpeg --enable-pic", which led me to the ffmpeg website on advanced linking configuration (http://www.ffmpeg.org/platform.html#A...). It turns out my problem was two-fold: I needed to change how I was compiling ffmpeg, and how I was linking OpenCV

The short answer is, I recompiled ffmpeg with additional flags --enable-pic and --extra-ldexeflags=-pie, and then had to edit a particular option in my OpenCV build. I used ccmake to set CMAKE_SHARED_LINKER_FLAGS to a value of -Wl,-Bsymbolic, as described by the ffmpeg website.

Hopefully this helps you out, Rex. Best of luck!

Ok but seriously, this took me a while to find the answer, so hopefully this will help save somebody a couple hours of pain.

Preview: (hide)

Comments

Can you elaborate this part a little ".. and then had to edit a particular option in my OpenCV build. I used ccmake to set CMAKE_SHARED_LINKER_FLAGS to a value of -Wl,-Bsymbolic, as described by the ffmpeg website." Which option did you edit particularly ? In my case OpenCV is picking up an older version of FFMPEG (libavcodec -54.35 instead of 56.1...) is there some setting to force OpenCV to force using another version ?

abhiguru gravatar imageabhiguru (Jun 11 '15)edit

Question Tools

2 followers

Stats

Asked: Jun 5 '15

Seen: 9,723 times

Last updated: Sep 01 '15