Linux, Eclipse C++, how to connect ffmpeg libs to

2019-07-18 04:47发布

问题:

So I downloaded FFmpeg from svn. Compiled and installed into system. in /usr/local it created ./lib and ./include. one with includes and one with libs in form of *.a files.

I downloaded eclipse Helios for C++ and created new simple project. I included ffmpeg headers into my C++ file. in project properties in C/C++Build in settings I declared ffmpeg libs (Library search path was declared)

I wrote some simple code that calls functions from headers.

But for all ffmpeg functions I used it gave me errors of eclipse not seeing ffmpeg.

So I wonder - how to connect ffmpeg libs to my project (or may be there is any way to compile ffmpeg not into .a and it would work with .so)?

回答1:

I had the same problem on my ubuntu 12.04 and I fixed it by compiling ffmpeg and x264 in this way: I removed the folders of ffmpeg and x264 and then typed this in the terminal:

sudo apt-get remove ffmpeg x264
sudo apt-get autoremove

and then

sudo apt-get update
sudo apt-get upgrade

then

sudo apt-get install make automake g++ bzip2 python unzip patch subversion ruby build-essential git-core checkinstall yasm texi2html libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libsdl1.2-dev libtheora-dev libvdpau-dev libvorbis-dev libvpx-dev libx11-dev libxfixes-dev libxvidcore-dev zlib1g-dev

installing x264

sudo git clone git://git.videolan.org/x264.git
cd x264
sudo ./configure --enable-shared --prefix=/usr/local
sudo make
sudo make install
cd ..

installing libvpx

sudo wget http://webm.googlecode.com/files/libvpx-v0.9.7-p1.tar.bz2
sudo tar xvjf libvpx-v0.9.7-p1.tar.bz2
cd libvpx-v0.9.7-p1
sudo ./configure --enable-shared --prefix=/usr/local
sudo make
sudo make install
cd ..

check if /etc/ld.so.conf contains the lines /usr/lib and /usr/local/lib. if not then add them and save it

then run

sudo ldconfig

installing ffmpeg

sudo wget http://ffmpeg.org/releases/ffmpeg-0.8.10.tar.bz2
sudo tar xvjf ffmpeg-0.8.10.tar.bz2
cd ffmpeg-0.8.10
./configure --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --enable-libfaac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --enable-shared --prefix=/usr/local
sudo make
sudo make install
cd ..
sudo ldconfig

in your project you should include the headers in this way:

#include<libavformat/avformat.h>
#include<libavcodec/avcodec.h>

In eclipse you should add the ffmpeg libraries to your project: avutil, avformat, avcodec, m, z ... by going to project->properties->C/C++->Build->Settings->GCC C++-> Linker->Libraries

I hope this works for you



回答2:

You need to link them with your code. Use -l and -L gcc command line parameters in your make file, or edit the properties for your Eclipse project (go to the project properties->C/C++->Build->Settings->GCC C++-> Linker->Libraries.



回答3:

if the includes and libraries that you want are in /usr/local/include and /usr/local/lib respectively, seems that you are covered with include and library paths (these directories are in the default search path usually).

Verify that you didn't use lib... when specifying the library that you want to link to, this is prepended by default, e.g. to use libabc.a just specify abc in the library list of the project settings.



回答4:

If you are getting compile errors (not linker errors), make sure libav* folders reside in /usr/local/include and you include ffmpeg headers with their folder names.

#include libavformat/avformat.h 
#include libavcodec/avcodec.h
// ...

You have to define /usr/local/include as an include directory and not libav* folders inside. This is needed because ffmpeg headers themselves reference other headers this way.



回答5:

  1. This is dependent on platform.
  2. You have to properly configure the ffmpeg libraries with all the right flags mingw/or cygwin. you would get .a files recognizable by eclipse.
  3. as littleadv says you must configure the path to the ffmeg libraries. in the project ->build properties- include(ffmpeg folderand your mingw/cygwin local include ) and linker settings avformat avcodec avfilter avdevice swscale postproc .
  4. Do not forget to set the path variable in your os. Eclipse takes this. Path should point to lib and include /local mingw/cygwin.