ubuntu下编译ffmpeg+SDL+ffplay提取motion vector

Posted 恩zzq我是

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ubuntu下编译ffmpeg+SDL+ffplay提取motion vector相关的知识,希望对你有一定的参考价值。

编译ffmpeg:

第一步:

从官网http://ffmpeg.org/下载最新版本.

解压tar -xjvf ffmpeg-3.3.1.tar.bz2
进入目录cd ffmpeg-3.3.1

第二步:

从http://yasm.tortall.net/Download.html下载yasm
tar -xvzf yasm-1.3.0.tar.gz
cd yasm-1.3.0/
./configure
make
make install

第三步:

回到ffmpeg目录中
./configure --enable-shared --prefix=/你想让他编译以后在哪里/ffmpeg
make
make install
编译为动态库时的问题:
/usr/bin/ld: /usr/local/lib/libavcodec.a(avpacket.o): relocation R_X86_64_32S against `av_destruct_packet‘ can not be used when making a shared object; recompile with -fPIC
修改方法:
./configure --enable-pic && make[默认编译安装在/usr/local/下

测试:

1.进入/usr/local/ffmpeg/bin下,输入./ffmpeg查看安装情况

2.使用ffmpeg编译c文件:

  gcc -o 可执行文件名 待编译文件名.c -L../lib/ -lavcodec -lavdevice -lavfilter -lavformat -lavutil

编译使用ffmpeg提取motion vector

1.编译安装ffmpeg;

2.使用pkg-config --cflags --libs opencv查找编译文件需要的opencv链接库,修改objects.mk和subdir.mk文件,然后make即可;

3.或者使用opencv的cmakefile进行编译:

具体内容:[注意每行之间不能有空格,直接回车]
PROJECT(mpegflow)
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
if(COMMAND cmake_policy)
cmake_policy(SET CMP0003 NEW)
endif(COMMAND cmake_policy)
FIND_PACKAGE( OpenCV REQUIRED )
# Declare the target (an executable)
ADD_EXECUTABLE(mpegflow  draw_flow.cpp)
TARGET_LINK_LIBRARIES(mpegflow ${OpenCV_LIBS}) 
 然后cmake.,再执行make即可。

4.使用ffmpeg库编译extract_mvs文件:

  gcc -o extract_mvs /ffmpeg-2.8/doc/samples/extract_mvs.c -L../lib/ -lavcodec -lavdevice -lavfilter -lavformat -lavutil

安装ffmpeg加载sdl,编译运行ffplay

1.安装ffmpeg

2.安装SDL:

sudo apt-get install libsdl1.2-dev libsdl-image1.2-dev libsdl-ttf2.0-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-sound1.2-dev

检测SDL装上了没有:sdl-config --exec-prefix --version --cflag]

ffplay进行motion vector可视化:

ffplay -debug vis_mb_type test.mp4 ffplay -vismv pf test.mp4

以上是关于ubuntu下编译ffmpeg+SDL+ffplay提取motion vector的主要内容,如果未能解决你的问题,请参考以下文章

关于在ubuntu14.04下编译安装ffmpeg

Ubuntu下编译Android版本的ffmepg so库及源码

FFmpeg在Linux下编译使用

opencv系列之ubuntu系统下编译python版本的opencv(指定特定的ffmpeg)

opencv系列之ubuntu系统下编译python版本的opencv(指定特定的ffmpeg)

FFMPEG之Linux下编译