<작업환경> -윈도우10 -안드로이드 스튜디오 2.3.3 -필요 라이브러리 빌드된 ffmpeg 라이브러리 (ffmpeg 빌드하기 : http://gamdekong.tistory.com/103?category=776642 ) |
1.안드로이드 프로젝트 생성
include C++ support를 채크해서 프로젝트를 생성한다.
안드로이드에서 프로젝트로 변경
2. 이미 빌드된 라이브러리 복사
앞서 만든 라이브러리를
main/cpp폴더에 include폴더를 복사
main/에 jniLibs 폴더를 생성후 라이브러리 so파일을 그림과 같은 폴더형태로 복사한다.
3. CMakeLists.txt 파일 내용 설정
app/CMakeLists.txt 파일수정
# 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.4.1) # 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. ##################################################################### #FFmpeg_DIR 변수 설정(위치를 위한) ## 위치설정은 중요하다. set(FFmpeg_DIR ${CMAKE_SOURCE_DIR}/src/main/jniLibs) ##################################################################### #라이브러리의 헤더파일 위치 설정 include_directories(${CMAKE_SOURCE_DIR}/src/main/cpp/include) #ffmpeg 라이브러리 추가 add_library(lib_avcodec SHARED IMPORTED) set_target_properties(lib_avcodec PROPERTIES IMPORTED_LOCATION ${FFmpeg_DIR}/${ANDROID_ABI}/libavcodec-57.so) add_library(lib_avfilter SHARED IMPORTED) set_target_properties(lib_avfilter PROPERTIES IMPORTED_LOCATION ${FFmpeg_DIR}/${ANDROID_ABI}/libavfilter-6.so) add_library(lib_avformat SHARED IMPORTED) set_target_properties(lib_avformat PROPERTIES IMPORTED_LOCATION ${FFmpeg_DIR}/${ANDROID_ABI}/libavformat-57.so) add_library(lib_avutil SHARED IMPORTED) set_target_properties(lib_avutil PROPERTIES IMPORTED_LOCATION ${FFmpeg_DIR}/${ANDROID_ABI}/libavutil-55.so) add_library(lib_postproc SHARED IMPORTED) set_target_properties(lib_postproc PROPERTIES IMPORTED_LOCATION ${FFmpeg_DIR}/${ANDROID_ABI}/libpostproc-54.so) add_library(lib_swresample SHARED IMPORTED) set_target_properties(lib_swresample PROPERTIES IMPORTED_LOCATION ${FFmpeg_DIR}/${ANDROID_ABI}/libswresample-2.so) add_library(lib_swscale SHARED IMPORTED) set_target_properties(lib_swscale PROPERTIES IMPORTED_LOCATION ${FFmpeg_DIR}/${ANDROID_ABI}/libswscale-4.so) ##################################################################### add_library( # Sets the name of the library. native-lib # Sets the library as a shared library. SHARED # Provides a relative path to your source file(s). src/main/cpp/native-lib.cpp ) # Searches for a specified prebuilt library and stores the path as a # variable. Because CMake includes system libraries in the search path by # default, you only need to specify the name of the public NDK library # you want to add. CMake verifies that the library exists before # completing its build. 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. target_link_libraries( # Specifies the target library. native-lib #native-lib에서 사용할 라이브러리 링크하기 lib_avcodec lib_avfilter lib_avformat lib_avutil lib_swresample lib_swscale # Links the target library to the log library # included in the NDK. ${log-lib} ) | cs |
주위점은 위치설정이다 위치설정은 꼭해주는것이 좋다.
1. 위치설정
2. 라이브러리 추가
3. 사용할 라이브러리에 라이브러리 링크해주기.
4. build.gradle 설정
app/build.gradle 파일 수정
녹색박스 추가.
5. jni파일 수정
자동으로 생성된 native-lib.cpp 파일
cpp파일로 생성되었기 때문에
extern "C"{ } 안에 헤더를 포함한다.(중요)
av_register_all() 는 avformat.h 에 선언되어있는 함수.
MainActivity
자동으로 생성되어 있는것을 확인할 수 있다.
'안드로이드 > ffmpeg' 카테고리의 다른 글
ffmpeg for android 빌드 (2) | 2017.11.09 |
---|---|
안드로이드에서 ffmpeg 라이브러리 사용하기(NDK) (10) | 2017.11.09 |