Android studio 搭建音视频开发环境(FFmpeg)

 2020-07-01 

第一步创建c++项目
在这里插入图片描述

第二步
把FFmpeg的静态库导入jniLibs目录arm目录里
在这里插入图片描述

第三步
把头文件include文件夹,复制到cpp文件夹下
在这里插入图片描述

第四步
在build.gradle里添加支持的cpu
在这里插入图片描述

第五步
CMakeLists.txt

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 指定cmake最小支持版本
cmake_minimum_required(VERSION 3.4.1)


# 添加一个库,根据native-lib.cpp源文件编译一个native-lib的动态库
add_library(
        native-lib
        SHARED
        native-lib.cpp)

#导入静态库头文件夹
include_directories(src/main/cpp/include)

# 设置库路径(android6.0以后需要这样设置)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -L${CMAKE_SOURCE_DIR}/../jniLibs/${CMAKE_ANDROID_ARCH_ABI}")


# 查找系统库,这里查找的是系统日志库,并赋值给变量log-lib
find_library(
        log-lib
        log)

# 设置以来的库(第一个参数必须为目标模块,顺序不能换)
target_link_libraries(
        native-lib
        avfilter avformat avcodec avutil swresample swscale
        ${log-lib})

第六步
native_lib.cpp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <jni.h>
#include <string>
#include <android/log.h>

extern "C" {
#include "include/libavcodec/avcodec.h"
}


extern "C" JNIEXPORT jstring JNICALL
Java_com_example_cmake_MainActivity_stringFromJNI(
        JNIEnv *env,
        jobject /* this */) {
    std::string hello = "Hello from C++";
    return env->NewStringUTF(av_version_info()); //打印ffmpeg版本
}

在这里插入图片描述