ffmpeg编译及androidstudio中引入

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"

扫描二维码关注公众号,回复: 1635948 查看本文章


./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} )


                      

猜你喜欢

转载自blog.csdn.net/u010945409/article/details/78919811