ubuntu server10.04下安装opencv2.0+ffmpeg-0.7-rc1 .
系统为ubuntu sever10.04 32位。
(里面遇到的问题都是我个人在配置时遇到的问题,都一一搜资料解决了。哎,折腾)
一、安装ffmpeg:
本文提到的安装方式基本都是采用源代码编译的方式,非RPM包安装,请读者注意。
FFmpeg软件只是个解码编码软件,如果支持多种格式必须先安装好对应的库,下面就说下我装的库:
0. 安装yasm:
http://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gz
# ./configure
# make
# make install
1. 安装faad2
# wget http://downloads.sourceforge.net/faac/faad2-2.7.tar.gz
# tar xvfz faad2-2.7.tar.gz
# cd faad2
# ./configure
# make
# make install
2. 安装liba52
# wget http://liba52.sourceforge.net/files/a52dec-0.7.4.tar.gz
# tar xvfz a52dec-0.7.4.tar.gz
# cd a52dec-0.7.4
# ./configure
# make
# make install
3. 安装libdirac
# wget http://downloads.sourceforge.net/dirac/dirac-0.10.0.tar.gz
# tar xvfz dirac-0.10.0.tar.gz
# cd dirac-0.10.0
# ./configure
# make
# make install
4. 安装faac2
# wget http://downloads.sourceforge.net/faac/faac-1.28.tar.gz
# tar xvfz faac-1.28.tar.gz
# cd faac
# ./configure
# make
# make install
如果出错:
解压后,修改一个文件:
1. vi +123 ./common/mp4v2/mpeg4ip.h
从123行开始修改此文件mpeg4ip.h,到129行结束。
[html] view plaincopyprint?
1. 修改前:
2.
3. #ifdef __cplusplus
4.
5. extern ”C” {
6.
7. #endif
8.
9. char *strcasestr(const char *haystack, const char *needle);
10.
11. #ifdef __cplusplus
12.
13. }
14.
15. #endif
16.
17. 修改后:
18.
19. #ifdef __cplusplus
20.
21. extern ”C++” {
22.
23. #endif
24.
25. const char *strcasestr(const char *haystack, const char *needle);
26.
27. #ifdef __cplusplus
28.
29. }
30.
31. #endif
5. 安装libamrnb
# wget http://ftp.penguin.cz/pub/users/utx/amr/amrnb-7.0.0.2.tar.bz2
# tar xvfj amrnb-7.0.0.2.tar.bz2
# cd amrnb-7.0.0.2
# ./configure
# make
# make install
6. 安装libamrwb
# wget http://ftp.penguin.cz/pub/users/utx/amr/amrwb-7.0.0.3.tar.bz2
# tar xvfj amrwb-7.0.0.3.tar.bz2
# cd amrwb-7.0.0.3
# ./configure
# make
# make install
7. 安装libmp3lame
# wget http://downloads.sourceforge.net/lame/lame-3.97.tar.gz
# tar xzf lame-3.97.tar.gz
# cd lame-3.97
# ./configure
# make
# make install
8.安装libtool:
#apt-get install libtool
9. 安装libx264
在http://download.videolan.org/pub/videolan/x264/snapshots/下载:
x264-snapshot-20091225-2245.tar.bz2
解压之后,安装libx264
# cd x264
# ./configure –enable-pthread –enable-shared –disable-asm
# make
# make install
10. 安装libnut,该软件需要用svn获取源代码,svn可以直接用yum install svn来装。先下载:
http://www.findthatzip-file.com/search-42083779-hZIP/winrar-winzip-download-libnut-661.tar.bz2.htm
下载后代码保存在新建立的libnut目录下,对于64位Linux需要修改配置文件:
# cd libnut
# vi config.mak
在最后一个CFLAGS下一行增加:
CFLAGS += -fPIC
然后编译安装:
# make
# make install
11. 安装libogg
# wget http://downloads.xiph.org/releases/ogg/libogg-1.1.3.tar.gz
# tar xvf libogg-1.1.3.tar.gz
# cd libogg-1.1.3
# ./configure
# make
# make install
12. 安装libtheora (svn获取)
# svn co http://svn.xiph.org/trunk/theora theora
# cd theora
# ./autogen.sh
# ./configure
# make
# make install
13. 安装libvorbis
# wget http://downloads.xiph.org/releases/vorbis/libvorbis-1.2.0.tar.gz
# tar xvfz libvorbis-1.2.0.tar.gz
# cd libvorbis-1.2.0
# ./configure
# make
# make install
14.安装libv4l(video for linux)
下载地址:http://linuxtv.org/downloads/v4l-utils/v4l-utils-0.8.5.tar.bz2
sudo make sudo make install
15. 安装libxvid
下载地址http://downloads.xvid.org/downloads/xvidcore-1.3.2.tar.gz,然后:
# cd xvidcore-1.3.2/build/generic
# ./configure
# make
# make install
上面的媒体支持库安装完后,可以设置下环境准备编译FFmpeg了!
16. 修改环境变量
# vi /etc/ld.so.conf
在文件末增加一行:
/usr/local/lib
然后生效之:
# ldconfig
17. 安装FFmpeg-0.7版本:
(1)下载:
# http://ffmpeg.org/releases/ffmpeg-0.7-rc1.tar.gz
解压后进入ffmpeg的目录
(2)编译
./configure –enable-gpl –enable-version3 –enable-nonfree –enable-postproc –enable-libfaac –enable-libopencore-amrnb –enable-libopencore-amrwb –enable-libtheora –enable-libvorbis –enable-libxvid –enable-x11grab –enable-swscale –enable-shared
然后:
# make
(这一步可能出错:
libx264.c:190: error: ‘x264_param_t’ has no member named ‘b_bframe_pyramid’
make[2]: *** [libx264.o] Error 1
解决方法:Apparently lix264 renamed variable “b_bframe-pyramid” to “i_bframe_pyramid”.
所以把报错的地方b_bframe-pyramid改成i_bframe-pyramid
)
接着:
# make install
18. 其他可能出现的错误:
/usr/include/linux/videodev.h:56: error: syntax error before ”ulong”
/usr/include/linux/videodev.h:72: error: syntax error before ’}' token
libavdevice/v4l.c: In function `grab_read_header’:
libavdevice/v4l.c:75: error: storage size of ’tuner’ isn’t known
libavdevice/v4l.c:133: error: invalid application of `sizeof’ to incomplete type `video_tuner’
libavdevice/v4l.c:140: error: invalid application of `sizeof’ to incomplete type `video_tuner’
libavdevice/v4l.c:75: warning: unused variable `tuner’
这可能是源代码videodev.h不是针对次版本Linux写的,标准C没有ulong类型,所以要改成unsigned long
19. 运行ffmpeg -formats,可能出的错误:
ffmpeg: error while loading shared libraries: libavfilter.so.0: cannot open shared object file: No such file or directory
这事没有设置环境路径造成了,增加一个ffmpeg.conf配置文件:
# cd /etc/ld.so.conf.d
# vi ffmpeg.conf
在文件内写上:
/usr/local/lib
然后确认生效:
# ldconfig
20. 其他:
本文中没有提到libgsm的安装,请参考下面的资料。
一、安装opencv:
1. mkdir release //创建文件夹 release
2. cd release
3.
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_TBB=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON ..
4. make
(1)Make的时候报错:undefined reference to `cvCreateCameraCapture_V4L(int)’collect2: ld returned 1 exit status make[2]: ***
解决方法:
参考https://co
其中的highgui/src/cap.cpp 即src/highgui目录下的cvcap.cpp文件
而/highgui/src/cap_libv4l.cpp 即src/highgui目录下的cvcap_libv4l.cpp文件
(2)然后继续make,又报错:fatal error: linux/videodev.h: No such file or directory,
则解决方法如下:
sudo yum install libv4l-devel
sudo ln -s /usr/include/libv4l1-videodev.h /usr/include/linux/videodev.h
(3)然后继续make,有报错:
samples/c/image.cpp:16 error: ‘stderr’ was not declared in this scope
解决方法:在image.cpp文件签名添加#include <stdio.h>
重新编译,成功了。
PS:
输入locate c++命令,发现没有类似于/usr/include/c++这样的输出
测试:
cd ~/OpenCV-2.3.0/samples/c 进入OpenCV源代码目录中的sample
2. chmod +x build_all.sh
3. ./build_all.sh
4. ./facedetect –cascade=”/usr/local/share/opencv/haarcascades/haarcascade_frontalface_alt.xml” –scale=1.5 lena.jpg
第4步报错:./facedetect: error while loading shared libraries: libcxcore.so.2.0: cannot open shared object file: No such file or directory
这是因为环境没设置好,解决方法:
添加库的路径
1. sudo gedit /etc/ld.so.conf.d/opencv.conf //此时虚拟终端的路径为:用户主目录 加入:/usr/local/lib 然后保存
2. sudo ldconfig 更新系统库
3. sudo gedit /etc/environment (或sudo gedit/etc/bash.bashrc)设置环境变量 //此时虚拟终端的路径为:用户主目录 加入PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
OpenCV的设置都完成了。
然后重新输入./facedetect: error while loading shared libraries: libcxcore.so.2.0: cannot open shared object file: No such file or directory
可以看到有张美女图片显示出来!
成功了。
参考:
http://blog.sina.com.cn/s/blog_6fe1657d0100xlie.html
http://www.blogjava.net/javaren/articles/install_ffmpeg_on_linux_64bit.html