FFmpeg編譯(沒寫完正在完善中)

首先下載yasm-1.3.0.tar.gz

tar -xvf yasm-1.3.0.tar.gz
cd yasm-1.3.0/
./configure 
make 
make install

linux

ffmpeg-3.2.14編譯腳本 

./configure \
	--prefix="/var/SDK/install/ffmpeg" \
	--enable-memalign-hack \
	--enable-postproc \
	--strip=strip \
	--pkg-config=pkg-config \
	--extra-cflags="-I/var/SDK/install/aac/include -I/var/SDK/install/lame/include" \
	--extra-ldflags="-L/var/SDK/install/aac/lib -L/var/SDK/install/lame/lib -lm -lpthread -lz" \
	--disable-shared \
    --enable-static \
    --disable-ffprobe \
    --enable-pic \
	--enable-nonfree \
	--enable-version3 \
    --enable-ffmpeg \
    --disable-ffplay \
	--disable-ffserver \
	--disable-encoders \
    --disable-decoders \
	--disable-decoder=vc1 \
	--disable-decoder=bmp \
	--disable-decoder=h263 \
	--disable-decoder=h264 \
	--disable-decoder=hevc \
	--disable-decoder=mpeg1video \
	--disable-decoder=mpeg2video \
	--disable-decoder=vp9 \
	--enable-libmp3lame \
	--enable-encoder=libmp3lame \
	--enable-decoder=mp3 \
	--enable-libfdk-aac \
	--enable-encoder=aac \
	--enable-decoder=aac \
	--enable-encoder=pcm_s16le \
    --enable-decoder=pcm_s16le \
    --enable-muxer=pcm_s16le \
    --enable-demuxer=pcm_s16le \
    --enable-protocol=file 

fdk-aac-2.0.0

./configure \
	--prefix="/var/SDK/install/lame" \
	--disable-shared \
    --enable-static

llame-3.100

./configure \
	--prefix="/var/SDK/install/lame" \
	--disable-shared \
    --enable-static

CMakeLists.txt

cmake_minimum_required(VERSION 3.4.1)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
include_directories(E:\\Msys2\\mingw64\\include)

SET(CMAKE_C_FLAGS  "${CMAKE_C_FLAGS} -O3 -pipe -fPIC -w -fmessage-length=0 -std=c++11 -g -Wall")
SET(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -O3 -pipe -fPIC -w -fmessage-length=0 -std=c++11 -g -Wall")
set(CMAKE_SHARED_LINKER_FLAGS "-Wl,-Bsymbolic -L/usr/lib64/ -L/data/ahfuzhang/visp/build/lib64 -lstdc++ -lX11")

add_library(libavcodec STATIC IMPORTED)
set_target_properties(libavcodec PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/lib/libavcodec.a)

add_library(libavdevice STATIC IMPORTED)
set_target_properties(libavdevice PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/lib/libavdevice.a)

add_library(libavfilter STATIC IMPORTED)
set_target_properties(libavfilter PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/lib/libavfilter.a)

add_library(libavformat STATIC IMPORTED)
set_target_properties(libavformat PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/lib/libavformat.a)

add_library(libavutil STATIC IMPORTED)
set_target_properties(libavutil PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/lib/libavutil.a)

add_library(libpostproc STATIC IMPORTED)
set_target_properties(libpostproc PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/lib/libpostproc.a)

add_library(libswresample STATIC IMPORTED)
set_target_properties(libswresample PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/lib/libswresample.a)

add_library(libswscale STATIC IMPORTED)
set_target_properties(libswscale PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/lib/libswscale.a)

add_library(libmp3lame STATIC IMPORTED)
set_target_properties(libmp3lame PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/lib/libmp3lame.a)

add_library(libfdk-aac STATIC IMPORTED)
set_target_properties(libfdk-aac PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/lib/libfdk-aac.a)

#add_library(native-lib SHARED transcode_aac.c)
add_executable(native-lib transcode_aac.c)

target_link_libraries(native-lib 
libavfilter libavformat libavdevice libavcodec libswscale libavutil libswresample libfdk-aac libmp3lame 
-lpthread -lz -lbz2 -lm -lX11 -lva -lva-drm -lva-x11)

 

 window

msys2編譯微軟ffmpeg腳本

第一步安裝環境

pacman -S --needed filesystem msys2-runtime bash libreadline libiconv libarchive libgpgme libcurl pacman ncurses libintl
pacman -Su
pacman -S gcc
pacman -S make
pacman -S git
pacman —S mingw-w64-x86_64-gcc
pacman —S mingw-w64-i686-gcc
pacman -S mingw-w64-i686-toolchain
pacman -S mingw-w64-x86_64-toolchain
pacman -S base-devel
pacman -S vim

第二步環境配置 

#target-os=win32,win64
#arch=x86,x86_64

ffmpeg-3.2.14編譯腳本 

./configure \
	--prefix="./window_64" \
	--enable-memalign-hack \
	--nm=x86_64-w64-mingw32-gcc-nm \
	--ar=x86_64-w64-mingw32-gcc-ar \
	--strip=strip \
	--pkg-config=pkg-config \
	--target-os=win64 \
	--arch=x86_64 \
	--extra-cflags="-IE:/Msys2/mingw64/include -IF:/zbar/fdk-aac-2.0.0/window_64/include -IF:/zbar/lame-3.100/window_64/include" \
	--extra-ldflags="-LE:/Msys2/mingw64/lib -LF:/zbar/fdk-aac-2.0.0/window_64/lib -LF:/zbar/lame-3.100/window_64/lib -lm -lpthread -lz" \
	--cross-prefix=E:/Msys2/mingw64/bin/x86_64-w64-mingw32- \
	--enable-w32threads \
	--disable-shared \
    --enable-static \
    --disable-ffprobe \
    --enable-pic \
	--enable-nonfree \
	--enable-version3 \
    --enable-ffmpeg \
    --disable-ffplay \
	--disable-ffserver \
	--disable-encoders \
    --disable-decoders \
	--disable-decoder=vc1 \
	--disable-decoder=bmp \
	--disable-decoder=h263 \
	--disable-decoder=h264 \
	--disable-decoder=hevc \
	--disable-decoder=mpeg2video \
	--disable-decoder=vp9 \
	--enable-libmp3lame \
	--enable-encoder=libmp3lame \
	--enable-decoder=mp3 \
	--enable-libfdk-aac \
	--enable-encoder=aac \
	--enable-decoder=aac \
	--enable-encoder=pcm_s16le \
    --enable-decoder=pcm_s16le \
    --enable-muxer=pcm_s16le \
    --enable-demuxer=pcm_s16le \
    --enable-protocol=file #\

fdk-aac-2.0.0

#!/bin/bash
CC=x86_64-w64-mingw32-gcc
CXX=x86_64-w64-mingw32-g++
CFLAGS=-IE:/Msys2/mingw64/include
CXXFLAGS=-IE:/Msys2/mingw64/include
LDFLAGS="-LE:/Msys2/mingw64/lib -lm -lpthread -lz"
./configure \
	--prefix="F:/zbar/fdk-aac-2.0.0/window_64" \
	--disable-shared \
    --enable-static \
	--build=x86_64-w64-mingw32 \
	--host=x86_64-w64-mingw32

lame-3.100

#!/bin/bash
CC=x86_64-w64-mingw32-gcc
LDFLAGS=-L/usr/lib
./configure \
	--prefix="F:/zbar/lame-3.100/window_64" \
	--disable-shared \
    --enable-static \
	--build=x86_64-w64-mingw32 \
	--host=x86_64-w64-mingw32

CMakeLists.txt

cmake_minimum_required(VERSION 3.4.1)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
include_directories(E:\\Msys2\\mingw64\\include)

SET(CMAKE_C_FLAGS  "${CMAKE_C_FLAGS} -O3 -pipe -fPIC -w -fmessage-length=0 -std=c++11 -g -Wall")
SET(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -O3 -pipe -fPIC -w -fmessage-length=0 -std=c++11 -g -Wall")
set(CMAKE_SHARED_LINKER_FLAGS "-Wl,-Bsymbolic -LE:\\Msys2\\mingw64\\include\\include")

add_library(libavcodec STATIC IMPORTED)
set_target_properties(libavcodec PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/lib/libavcodec.a)

add_library(libavdevice STATIC IMPORTED)
set_target_properties(libavdevice PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/lib/libavdevice.a)

add_library(libavfilter STATIC IMPORTED)
set_target_properties(libavfilter PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/lib/libavfilter.a)

add_library(libavformat STATIC IMPORTED)
set_target_properties(libavformat PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/lib/libavformat.a)

add_library(libavutil STATIC IMPORTED)
set_target_properties(libavutil PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/lib/libavutil.a)

add_library(libpostproc STATIC IMPORTED)
set_target_properties(libpostproc PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/lib/libpostproc.a)

add_library(libswresample STATIC IMPORTED)
set_target_properties(libswresample PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/lib/libswresample.a)

add_library(libswscale STATIC IMPORTED)
set_target_properties(libswscale PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/lib/libswscale.a)

add_library(libmp3lame STATIC IMPORTED)
set_target_properties(libmp3lame PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/lib/libmp3lame.a)

add_library(libfdk-aac STATIC IMPORTED)
set_target_properties(libfdk-aac PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/lib/libfdk-aac.a)

#add_library(native-lib SHARED transcode_aac.c)
add_executable(native-lib transcode_aac.c)

target_link_libraries(native-lib libavfilter libavformat libavdevice libavcodec libswscale libavutil libswresample libpostproc libfdk-aac libmp3lame libiconv libbz2 libz ws2_32 mincore)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章