ubuntu 16.04 下编译x264,ffmpeg和openCV

这几天在编译这三个东西的时候,遇到了很多问题,现把安装过程总结如下,希望帮到大家!

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 <cv.h> 

#include<highgui.h> 

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



猜你喜欢

转载自blog.csdn.net/toptp2017/article/details/80297871