linux下x264 ffmpeg opencv的联合编译

点击打开链接

opencv中做h264编码向下调用ffmpeg,而ffmpeg中又调用libx264,于是这也就涉及到了libx264,ffmpeg和opencv三者之间的联合编译

如果没有rtsp流的抓取,直接安装opencv即可,注意make是增加-pthread 和-lc(libpthread libc)如果需要抓取rtsp

1、安装x.264 否则抓取失败,不支持x.264

1).安装依赖的包:

sudo apt-get update

sudo apt-get installbuild-essential Git-core checkinstall texi2html libfaac-dev  libopencore-amrnb-dev libopencore-amrwb-dev libsdl1.2-dev libtheora-dev libvorbis-dev libx11-devlibxfixes-dev zlib1g-dev

 

2).安装Yasm:x264需要使用yasm来针对CPU架构进行优化,提高性能。(不需要,我们是为了嵌入式,yasm仅针对x86 x64)

3).安装x264:下载源代码、编译、安装

x264下载:http://download.videolan.org/x264/snapshots/

cd x264

./configure --enable-static   //静态库

make

make install

4).此时 libx264.a默认安装在/usr/local/lib,直接编译会出现

2、安装ffmpeg 否则没有实现,抓取失败

https://www.ffmpeg.org/download.html

注意下载对应的版本,否则和opencv会不一致,用的是 1.2版本(原来下载最新版,头文件定义不一致)

./configure --disable-asm --disable-shared--enable-static

3、用cmake-gui编译opencv2.4.9

注意要 with ffmpeg  without 1394

4.编译程序,修改makefile,主要是makefile里面库的路径,以及顺序。

CC=g++

 MAKE=make

CFLAGS= -Wall -D_REENTRANT-g -Wl,--no-export-dynamic

INCDIR=-I./include-I./include/lib -I/home/fyp/opencv-2.4.9/include

LIBDIR=-L/usr/local/lib-L/usr/local/share/OpenCV/3rdparty/lib -L/usr/lib/x86_64-linux-gnu-L/usr/lib/gcc/x86_64-linux-gnu/5 -L/usr/lib/x86_64-linux-gnu/oxide-qt

LIBFLAG=-Wl,-Bstatic-lopencv_highgui -lopencv_imgproc -lopencv_core -lopencv_world-Wl,--start-group -lzlib -llibjpeg -llibtiff -llibjasper -llibpng -lavformat -lavcodec -lavdevice -lavfilter -lavutil-lswscale -Wl,--end-group

LIBFLAG+=-Wl,-Bdynamic-Wl,--start-group -pthread -lrt -lc -Wl,--end-group

OBJECTS=TestDetectWaterDepthDLL.o

COMMHEAD=./include/DWDDefine.h./include/GetConfig.h ./include/WinToLinux.h

TARGET=DetectWaterDepth

ARR=/home/fyp/opencv-2.4.9/release/lib/libopencv_highgui.a /home/fyp/opencv2.4.9/release/lib/libopencv_imgproc.a  /home/fyp/opencv2.4.9/release/lib/libopencv_core.a /usr/local/share/OpenCV/3rdparty/lib/liblibjpeg.a /usr/local/share/OpenCV/3rdparty/lib/liblibtiff.a /home/fyp/opencv-2.4.9/release/3rdparty/lib/liblibjasper.a /usr/local/share/OpenCV/3rdparty/lib/liblibpng.a /usr/local/ffmpeg/lib/libswscale.a /usr/local/ffmpeg/lib/libavformat.a/usr/local/ffmpeg/lib/libavfilter.a /usr/local/ffmpeg/lib/libavdevice.a/usr/local/ffmpeg/lib/libavcodec.a /usr/local/ffmpeg/lib/libavutil.a/home/fyp/x264/libx264.a /usr/local/share/OpenCV/3rdparty/lib/libzlib.a

all :$(TARGET) $(OBJECTS)

 DetectWaterDepth : $(OBJECTS) $(COMMHEAD) $(CC) $(CFLAGS)$(INCDIR) $(LIBDIR) $(LIBFLAG) -o $@ $(OBJECTS) $(ARR)

 TestDetectWaterDepthDLL.o : TestDetectWaterDepthDLL.cpp$(COMMHEAD)$(CC) $(CFLAGS) -c$(INCDIR) $(LIBDIR) $<

.PHONY: clean

clean:

      -rm -f *.o $(TARGET)

 

发布了22 篇原创文章 · 获赞 94 · 访问量 6万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章