1. 程式人生 > >ubuntu下編譯ffmpeg+SDL+ffplay提取motion vector

ubuntu下編譯ffmpeg+SDL+ffplay提取motion vector

ubunt cut object device .org 最新 編譯運行 sam draw

編譯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