Android整合FFmpeg,androidffmpeg

來源:互聯網
上載者:User

Android整合FFmpeg,androidffmpeg

一、編譯產生FFmpeg的標頭檔和so庫

        如果不知道怎麼做可以看這裡:http://blog.csdn.net/qsw15923/article/details/77943515

二、建立項目

        在建立時勾選下方的include C++support,然後一路下一步即可

建立完項目後如果之前沒有配置NDK環境和CMAKE環境則會報錯,則按下述方法配置:

NDK配置:

在項目右鍵-->Open Module Settings-->SDK Location

該介面最下方就是NDK路徑的配置,修改為你自己的NDK路徑即可

CMAKE配置:

File --> Settings --> Appearance & Behavior --> System Settings --> Android SDK --> SDK Tools

選中圖中紅框標記的選項,下載即可

三、項目配置1、檔案複製

1.將第一步中得到的include檔案夾複製到app/src/main/cpp/中

2.在app/src/main/中建立檔案夾jniLibs/armeabi/並將第一步得到的so庫複製到該檔案夾下

複製完的結構

2、CMakeLists.txt檔案修改

將CMakeLists.txt 修改為如下內容:

cmake_minimum_required(VERSION 3.4.1)set(lib_src_DIR ${CMAKE_SOURCE_DIR}/src/main/jniLibs/${ANDROID_ABI})include_directories(    ${CMAKE_SOURCE_DIR}/src/main/cpp/include)add_library(avcodec-57_lib SHARED IMPORTED)set_target_properties(avcodec-57_lib PROPERTIES IMPORTED_LOCATION    ${lib_src_DIR}/libavcodec-57.so)add_library(avformat-57_lib SHARED IMPORTED)set_target_properties(avformat-57_lib PROPERTIES IMPORTED_LOCATION    ${lib_src_DIR}/libavformat-57.so)add_library(avutil-55_lib SHARED IMPORTED)set_target_properties(avutil-55_lib PROPERTIES IMPORTED_LOCATION    ${lib_src_DIR}/libavutil-55.so)add_library(swresample-2_lib SHARED IMPORTED)set_target_properties(swresample-2_lib PROPERTIES IMPORTED_LOCATION    ${lib_src_DIR}/libswresample-2.so) add_library(swscale-4_lib SHARED IMPORTED) set_target_properties(swscale-4_lib PROPERTIES IMPORTED_LOCATION    ${lib_src_DIR}/libswscale-4.so)# build application's shared libadd_library(native-lib SHARED ${CMAKE_SOURCE_DIR}/src/main/cpp/native-lib.cpp)target_link_libraries(native-liblogandroidavcodec-57_libavformat-57_libavutil-55_libswresample-2_libswscale-4_lib)

 

3、native-lib.cpp修改

將預設產生的native-lib.cpp修改為以下內容:

註:函數名要按照jni中的命名規則修改為你自己的包名

#include <jni.h>#include <string>extern "C" {#include "libavcodec/avcodec.h"}extern "C"JNIEXPORT jstring JNICALLJava_com_example_y_demoffmpeg_MainActivity_stringFromJNI(JNIEnv *env, jobject /* this */){    char info[10000] = { 0 };    sprintf(info, "%s\n", avcodec_configuration());    return env->NewStringUTF(info);}

 

4、build.gradle修改

在app的build.gradle中添加以下內容:

android {    defaultConfig {        ndk {            abiFilters  'armeabi'        }    }}

 


然後運行,只要不報錯,說明環境配置已經完成

樓主也是第一次用這個,參考了網上很多大神的方法,最後總結出來這個,如果有什麼問題可以評論大家一起交流!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.