ffmpeg编译脚本
#!/bin/bash
make clean
export NDK=/root/ndk/android-ndk-r10e
export SYSROOT=$NDK/platforms/android-9/arch-arm/
export TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64
export CPU=arm
export PREFIX=$(pwd)/android/$CPU
export ADDI_CFLAGS="-marm"
./configure --target-os=linux \
--prefix=$PREFIX --arch=arm \
--disable-doc \
--enable-shared \
--disable-static \
--disable-yasm \
--disable-symver \
--enable-gpl \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-doc \
--disable-symver \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--enable-cross-compile \
--sysroot=$SYSROOT \
--extra-cflags="-Os -fpic $ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG
make clean
make
make install
androidstudio中加载动态库
1、库之间有一定依赖关系,我的环境只能是这个加载顺序能运行
2、加载的字符串直接跟so库的名称相关
3、so库名为libswscale java中加载字符串为swscale;即不用加lib
static { System.loadLibrary("avutil"); System.loadLibrary("swresample"); System.loadLibrary("swscale"); System.loadLibrary("postproc"); System.loadLibrary("avcodec"); System.loadLibrary("avformat"); System.loadLibrary("avfilter"); System.loadLibrary("avdevice"); System.loadLibrary("native-lib"); }
配置CMakeLists.txt配置文件
cmake_minimum_required(VERSION 3.4.1) add_library( native-lib SHARED src/main/cpp/native-lib.cpp ) find_library( log-lib log ) #引入源文件目录 include_directories(libs/include) set(DIR ../../../../libs) #设置libavcodec.so add_library(libavcodec SHARED IMPORTED ) set_target_properties(libavcodec PROPERTIES IMPORTED_LOCATION ${DIR}/armeabi/libavcodec.so ) #设置libavdevice.so add_library(libavdevice SHARED IMPORTED ) set_target_properties(libavdevice PROPERTIES IMPORTED_LOCATION ${DIR}/armeabi/libavdevice.so ) #设置libavfilter.so add_library(libavfilter SHARED IMPORTED ) set_target_properties(libavfilter PROPERTIES IMPORTED_LOCATION ${DIR}/armeabi/libavfilter.so ) #设置libavformat.so add_library(libavformat SHARED IMPORTED ) set_target_properties(libavformat PROPERTIES IMPORTED_LOCATION ${DIR}/armeabi/libavformat.so ) #设置libavutil.so add_library(libavutil SHARED IMPORTED ) set_target_properties(libavutil PROPERTIES IMPORTED_LOCATION ${DIR}/armeabi/libavutil.so ) #设置libpostproc.so add_library(libpostproc SHARED IMPORTED ) set_target_properties(libpostproc PROPERTIES IMPORTED_LOCATION ${DIR}/armeabi/libpostproc.so ) #设置libswresample.so add_library(libswresample SHARED IMPORTED ) set_target_properties(libswresample PROPERTIES IMPORTED_LOCATION ${DIR}/armeabi/libswresample.so ) #设置libswscale.so add_library(libswscale SHARED IMPORTED ) set_target_properties(libswscale PROPERTIES IMPORTED_LOCATION ${DIR}/armeabi/libswscale.so ) target_link_libraries( native-lib libavcodec libavdevice libavfilter libavformat libavutil libpostproc libswresample libswscale ${log-lib} )