Android中c++使用FFmpeg的例子
时间: 2024-06-13 15:04:29 浏览: 241
安卓ffmpeg例程
在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();
}
```
阅读全文