Android Studio + FFmpeg集成的问题总结

集成步骤参考:

ubuntu移植FFmpeg到Android平台

Android Studio + FFmpeg集成 

1、编写ffmpeg编译脚本时注意改为本机环境路径

下面的build.sh经本机运行编译通过。


#!/bin/bash

NDK=/home/duanguangyu/adt/sdk/ndk-bundle

SYSROOT=$NDK/platforms/android-21/arch-arm/

TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64

PREFIX=/home/duanguangyu/ff

function build_one{

./configure \

--prefix=$PREFIX \

--enable-shared \

--disable-static \

--disable-doc \

--disable-ffmpeg \

--disable-ffplay \

--disable-ffprobe \

--disable-ffserver \

--disable-avdevice \

--disable-doc \

--disable-symver \

--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \

--target-os=linux \

--arch=arm \

--enable-cross-compile \

--sysroot=$SYSROOT \

--extra-cflags="-Os -fpic $ADDI_CFLAGS" \

--extra-ldflags="$ADDI_LDFLAGS" \

$ADDITIONAL_CONFIGURE_FLAG

make clean

make

make install

}

CPU=arm

ADDI_CFLAGS="-marm"

build_one


2、修改工程默认生成的native-lib.cpp文件

引入libavcodec/avcodec.h;

为供Java调用的c++函数前加入extern "C" 修饰,否则可能出现java.lang.UnsatisfiedLinkError错误


extern"C"{

#include"libavcodec/avcodec.h"

JNIEXPORTjstringJNICALLJava_com_ffmpeg_duanguangyu_myapplication_MainActivity_stringFromJNI(JNIEnv* env,jobjectthiz );

}


3、build提示错误

Error:error: '../../../../src/main/jniLibs/mips64/libavcodec-57.so', needed by '../obj/mips64/libnative-lib.so', missing and no known rule to make it

指令集的问题,可以在build.gradle中加入指令集的限定

ndk {

abiFilters "armeabi"

}

你可能感兴趣的:(Android Studio + FFmpeg集成的问题总结)