美文网首页
FFmpeg音频播放器(3)-将FFmpeg加入到Android

FFmpeg音频播放器(3)-将FFmpeg加入到Android

作者: 星星y | 来源:发表于2019-01-22 10:14 被阅读0次

    FFmpeg音频播放器(1)-简介
    FFmpeg音频播放器(2)-编译动态库
    FFmpeg音频播放器(3)-将FFmpeg加入到Android中
    FFmpeg音频播放器(4)-将mp3解码成pcm
    FFmpeg音频播放器(5)-单输入filter(volume,atempo)
    FFmpeg音频播放器(6)-多输入filter(amix)
    FFmpeg音频播放器(7)-使用OpenSLES播放音频
    FFmpeg音频播放器(8)-创建FFmpeg播放器
    FFmpeg音频播放器(9)-播放控制

    新建Android项目

    打开Android Studio,新建项目FFmpegAudioPlayer,添加C++支持


    NDK支持

    拷贝FFmpeg库文件

    在src下的main文件中创建jniLibs文件夹,在jniLibs创建armeabi文件夹,将ffmpeg下android/arm/lib/目录下的so文件(libavcodec-57.so/libavfilter-6.so/libavformat-57.so/libavutil-55.so/libswresample-2.so/libswscale-4.so)拷贝至此目录。将android/arm/include 整个目录拷贝至jniLibs下,最终目录如下


    工程目录

    修改app/build.gradle文件

    因为我们只创建了armeabi文件夹,所以加入abiFilters

    android {
        ...
        defaultConfig {
            ...
            externalNativeBuild {
                cmake {
                    cppFlags "-frtti -fexceptions"
                }
                ndk{
                    abiFilters "armeabi"
                }
            }
        }
    ...
    }
    

    配置cmake文件

    打开app目录下的CMakeLists.txt文件,修改成如下配置

    cmake_minimum_required(VERSION 3.4.1)
    add_library( native-lib
                 SHARED
                 src/main/cpp/native-lib.cpp)
    find_library( log-lib
                  log )
    find_library( android-lib
                  android )
    set(distribution_DIR ${CMAKE_SOURCE_DIR}/src/main/jniLibs/${ANDROID_ABI})
    add_library( avutil-55
                 SHARED
                 IMPORTED )
    set_target_properties( avutil-55
                           PROPERTIES IMPORTED_LOCATION
                           ${distribution_DIR}/libavutil-55.so)
    add_library( swresample-2
                 SHARED
                 IMPORTED )
    set_target_properties( swresample-2
                           PROPERTIES IMPORTED_LOCATION
                           ${distribution_DIR}/libswresample-2.so)
    add_library( avcodec-57
                 SHARED
                 IMPORTED )
    set_target_properties( avcodec-57
                           PROPERTIES IMPORTED_LOCATION
                           ${distribution_DIR}/libavcodec-57.so)
    add_library( avfilter-6
                 SHARED
                 IMPORTED )
    set_target_properties( avfilter-6
                           PROPERTIES IMPORTED_LOCATION
                           ${distribution_DIR}/libavfilter-6.so)
    add_library( swscale-4
                 SHARED
                 IMPORTED )
    set_target_properties( swscale-4
                           PROPERTIES IMPORTED_LOCATION
                           ${distribution_DIR}/libswscale-4.so)
    add_library( avformat-57
                 SHARED
                 IMPORTED )
    set_target_properties( avformat-57
                           PROPERTIES IMPORTED_LOCATION
                           ${distribution_DIR}/libavformat-57.so)
    set(CMAKE_VERBOSE_MAKEFILE on)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")
    include_directories(src/main/cpp)
    include_directories(src/main/jniLibs/include)
    
    target_link_libraries(native-lib
                          avutil-55       #工具库
                          swresample-2    #音频采样数据格式转换
                          avcodec-57      #编解码
                          avfilter-6      #滤镜特效处理
                          swscale-4       #视频像素数据格式转换
                          avformat-57     #封装格式处理
                          OpenSLES
                          ${log-lib}
                          ${android-lib})
    

    先啥也不做,run一遍,编译是否通过,能否安装到手机上。如能安装上,正常运行,则说明配置正确,前期准备工作就完成啦,接下来就可以用FFmpeg库编程咯。

    相关文章

      网友评论

          本文标题:FFmpeg音频播放器(3)-将FFmpeg加入到Android

          本文链接:https://www.haomeiwen.com/subject/jnvpdqtx.html