Android中使用FFmpeg(一)

这里写图片描述

因项目需将视频裁剪(包括视频宽高,视频时间,视频封面),所以就研究了下FFmpeg,现已在项目中使用,先来了解下吧。

1、编译环境

  • MacOS Sierra
  • NDK-15.2 64bit
  • FFmpeg 3.3.4

2、准备工作

3、编译FFmpeg

修改configure文件

下载FFmpeg源代码之后,解压压缩包,首先需要对源代码中的configure文件进行修改。
找到 ffmpeg-3.3.4/configure 文件,找到以下几行:

SLIBNAME_WITH_MAJOR='
Android使用C++调用FFmpeg库的例子可以分为以下几个步骤: 1. 在Android Studio创建一个新的NDK项目。 2. 将FFmpeg库导入到项目,并在CMakeLists.txt文件添加FFmpeg库的路径和链接库。 3. 在JNI接口调用FFmpeg库的函数,例如av_version_info()。 4. 在Java代码调用JNI接口。 下面是一个简单的例子,演示如何在Android使用C++调用FFmpeg库: 1. 在Android Studio创建一个新的NDK项目。 2. 将FFmpeg库导入到项目,并在CMakeLists.txt文件添加FFmpeg库的路径和链接库。 ``` // CMakeLists.txt cmake_minimum_required(VERSION 3.4.1) add_library(ffmpeg SHARED IMPORTED) set_target_properties(ffmpeg PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/src/main/jniLibs/${ANDROID_ABI}/libffmpeg.so) add_library(native-lib SHARED native-lib.cpp) find_library(log-lib log) target_link_libraries(native-lib ffmpeg ${log-lib}) ``` 3. 在JNI接口调用FFmpeg库的函数,例如av_version_info()。 ``` // native-lib.cpp #include <jni.h> #include <string> #include <android/log.h> #include "libavutil/avutil.h" extern "C" JNIEXPORT jstring JNICALL Java_com_example_ffmpegdemo_MainActivity_stringFromJNI( JNIEnv* env, jobject /* this */) { std::string hello = "FFmpeg version: "; hello += av_version_info(); return env->NewStringUTF(hello.c_str()); } ``` 4. 在Java代码调用JNI接口。 ``` // MainActivity.java public class MainActivity extends AppCompatActivity { static { System.loadLibrary("native-lib"); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView tv = findViewById(R.id.sample_text); tv.setText(stringFromJNI()); } public native String stringFromJNI(); } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值