您的位置:首页 > 汽车 > 新车 > FFmpeg For Android入门NDK打印版本号

FFmpeg For Android入门NDK打印版本号

2024/11/18 14:27:28 来源:https://blog.csdn.net/zouxin_88/article/details/141054695  浏览:    关键词:FFmpeg For Android入门NDK打印版本号

本文用到的FFmpeg for Android 的开发库,需要先在Ubuntu上完成编译,关于编译的过程参见我的上一篇文章。

Android Studio版本为Android Studio Dolphin | 2021.3.1 Patch 1

1.打开Android Studio,新建工程,选择Native C++

 最小API版本须与FFmpeg库一致

2.在app\src\main目录下创建ffmpeg文件夹,将ffmpeg开发库解压到ffmpeg下

4.在app/build.gradle中添加如下语句

externalNativeBuild {ndk{abiFilters "armeabi-v7a"}}

5.将app\src\main\ffmpeg下的armv7-a文件夹改为armeabi-v7a。这一步很重要,否则后面找不到头文件和库。

 6.编辑app\src\main\cpp\CMakeLists.txt

(1).设置库路径,添加链接库
(2).设置头文件目录
(3).设置具体的链接库文件

# For more information about using CMake with Android Studio, read the
# documentation: https://d.android.com/studio/projects/add-native-code.html# Sets the minimum version of CMake required to build the native library.cmake_minimum_required(VERSION 3.18.1)# Declares and names the project.project("ffmpegandroid2")# Creates and names a library, sets it as either STATIC
# or SHARED, and provides the relative paths to its source code.
# You can define multiple libraries, and CMake builds them for you.
# Gradle automatically packages shared libraries with your APK.add_library( # Sets the name of the library.ffmpegandroid2# Sets the library as a shared library.SHARED# Provides a relative path to your source file(s).native-lib.cpp)#1.设置库路径,添加链接库
set(JNI_LIBS_DIR ${CMAKE_SOURCE_DIR}/../ffmpeg)
add_library(avutilSHAREDIMPORTED)
set_target_properties(avutilPROPERTIES IMPORTED_LOCATION${JNI_LIBS_DIR}/${ANDROID_ABI}/lib/libavutil.so )add_library(avresampleSHAREDIMPORTED )set_target_properties(avresamplePROPERTIES IMPORTED_LOCATION${JNI_LIBS_DIR}/${ANDROID_ABI}/lib/libavresample.so )add_library(swresampleSHAREDIMPORTED )set_target_properties(swresamplePROPERTIES IMPORTED_LOCATION${JNI_LIBS_DIR}/${ANDROID_ABI}/lib/libswresample.so )add_library(swscaleSHAREDIMPORTED )set_target_properties(swscalePROPERTIES IMPORTED_LOCATION${JNI_LIBS_DIR}/${ANDROID_ABI}/lib/libswscale.so )add_library(avcodecSHAREDIMPORTED )set_target_properties(avcodecPROPERTIES IMPORTED_LOCATION${JNI_LIBS_DIR}/${ANDROID_ABI}/lib/libavcodec.so )add_library(avformatSHAREDIMPORTED )set_target_properties(avformatPROPERTIES IMPORTED_LOCATION${JNI_LIBS_DIR}/${ANDROID_ABI}/lib/libavformat.so )add_library(avfilterSHAREDIMPORTED )set_target_properties(avfilterPROPERTIES IMPORTED_LOCATION${JNI_LIBS_DIR}/${ANDROID_ABI}/lib/libavfilter.so )add_library(avdeviceSHAREDIMPORTED )set_target_properties(avdevicePROPERTIES IMPORTED_LOCATION${JNI_LIBS_DIR}/${ANDROID_ABI}/lib/libavdevice.so )#2.设置头文件目录
include_directories(${JNI_LIBS_DIR}/${ANDROID_ABI}/include)find_library( # Sets the name of the path variable.log-lib# Specifies the name of the NDK library that# you want CMake to locate.log)# Specifies libraries CMake should link to your target library. You
# can link multiple libraries, such as libraries you define in this
# build script, prebuilt third-party libraries, or system libraries.
#3.设置具体的链接库文件
target_link_libraries( # Specifies the target library.ffmpegandroid2avutilswresampleswscaleavcodecavformatavfilter# Links the target library to the log library# included in the NDK.${log-lib})

7.打开app\src\main\cpp\native-lib.cpp,添加代码

extern "C"{
#include "libavcodec/avcodec.h"
}...
return env->NewStringUTF(av_version_info());

8.点击右上角【同步】(大像)按钮,连接安卓手机点击【运行】按钮开始运行程序

手机上看ffmpeg版本号,说明ffmpeg运行成功。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com