这几天在编译这三个东西的时候,遇到了很多问题,现把安装过程总结如下,希望帮到大家!
1.安装x264和ffmpeg的依赖
sudo apt-get update
sudo apt-get install build-essential checkinstall gitcmake libfaac-dev libjack-jackd2-dev libmp3lame-dev libopencore-amrnb-devlibopencore-amrwb-dev libsdl1.2-dev libtheora-dev libva-dev libvdpau-devlibvorbis-dev libx11-dev libxfixes-dev libxvidcore-dev texi2html yasmzlib1g-dev
2.安装gtk
sudo apt-get install libgtk2.0-0libgtk2.0-dev
3.安装libjpeg
sudo apt-get install libjpeg8 libjpeg8-dev
4.新建一个目录/workSpace/openCv,存放源码
5.安装yasm
sudo apt-get install yasm
6.安装x264
6.1 下载解压源码
wget ftp://ftp.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-20120528-2245-stable.tar.bz2
tar xvf x264-snapshot-20120528-2245-stable.tar.bz2
cd x264-snapshot-20120528-2245-stable
6.2配置,编译,安装
./configure --enable-static --enable-shared --enable-pic
make
sudo make install
此时libx264.a默认安装在/usr/local/lib/下
7.下载和安装ffmpeg
7.1 下载和解压源码
到https://www.ffmpeg.org/download.html 下载对应版本,这里我用的1.2版本
解压 tar xvf
进入目录 cd
7.2 配置和安装
./configure --enable-gpl --enable-libfaac--enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb--enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid--enable-nonfree --enable-postproc --enable-version3 --enable-x11grab --enable-pic --enable-static
注意这里只安装静态库,要disable-shared
make
sudo make install
8 下载和安装V4L
8.1 下载和解压源码
wget http://www.linuxtv.org/downloads/v4l-utils/v4l-utils-0.8.8.tar.bz2
tar xvf v4l-utils-0.8.8.tar.bz2
cd v4l-utils-0.8.8
8.2 安装
make
sudo make install
9 下载和安装openCV 2.4.9
9.1 下载 和 解压
从http://sourceforge.net/projects/opencvlibrary/files/下载2.4.9版本
unzip opencv-2.4.9.zip 解压
9.2 配置 安装
mkdir build
cd build
用cmake-gui配置或
cmake -D BUILD_SHARED_LIBS=NO -D BUILD_PNG=ON -DBUILD_JASPER=ON -D BUILD_JPEG=ON -D BUILD_TIFF=ON -D BUILD_ZLIB=ON -DWITH_JPEG=ON -D WITH_PNG=ON -D WITH_JASPER=ON -D WITH_TIFF=ON -D CMAKE_BUILD_TYPE=RELEASE ..
这里配置也可以使用cmake-gui 配置,更加方便!
注意要出现这个才能用:
Make
编译出错:
解决: 重新配置,去掉v4l
sudo make install
9.3 配置环境
在/etc/bash.bashrc文件里面加入
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
10 测试openCV
10.1 新建源文件test.cpp
#include
#include
using namespace cv;
int main(int argc, char*argv[])
{
Mat image;
image = imread(“1.jpg”);
namedWindow("Display Image",CV_WINDOW_AUTOSIZE);
imshow("DisplayImage", image);
waitKey(0);
return 0;
}
10.2 写CMakeLists.txt
project(test)
find_package(OpenCVREQUIRED)
add_executable(test test)
target_link_libraries(test${OpenCV_LIBS})
cmake_minimum_required(VERSION2.8)
10.3 编译 运行
cmake
make
linux下静态编译openCV:
在cmake的时候加入这些选项:
cmake -DBUILD_SHARED_LIBS=NO -DBUILD_PNG=ON-DBUILD_JASPER=ON -DBUILD_JPEG=ON
-DBUILD_TIFF=ON-DBUILD_ZLIB=ON -DWITH_JPEG=ON -DWITH_PNG=ON -DWITH_JASPER=ON
-DWITH_TIFF=ON
下面是编译自己程序时碰到的ffmpeg库使用的问题:
一:编译自己程序时遇到ffmpeg的静态库报错,一堆undefine
解决:查了一些资料,主要由下面几个方面问题引起:
链接时候,需要指定目录,目录下不要存在动态库,在linux系统中,程序会优先链接动态库。
多个库的链接顺序的问题,这点很重要,动态库不会存在这个问题
版本问题,ffmpeg的版本兼容是一个很大的问题
头文件要include准确
我是由于第一个问题导致,配置的时候 --shared-disable --static-enable 就好了。Enable share后会生成动态库,跟静态库存在于同一个目录下面,程序优先链接动态库,导致错误。
参考这篇文章-->ffmpeg库使用及其错误解决:https://blog.csdn.net/openswc/article/details/52575742
错误:
解决:1 头文件路径没有包含正确
2 确保包含路径里面有相关文件,若没有,则重新配置openCV编译
错误:
解决:
暂时用不到vaapi,在ffmpeg配置时disable vaapi
参考文章:https://www.jianshu.com/p/2f8011f08dcd