zoukankan      html  css  js  c++  java
  • Android搭建ffmpeg环境

    创建一个Android项目,添加c++支持

     静态库复制到制定目录

    支持的平台

     

    加载文件的目录

        externalNativeBuild {
            cmake {
                path "src/main/cpp/CMakeLists.txt"
                version "3.10.2"
            }
        }

    配置文件

    cmake_minimum_required(VERSION 3.10.2)
    
    project("ffmpeddemo")
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")
    set(libs ${CMAKE_SOURCE_DIR}/../libs)
    set(libname play)  #编译之后的名字  不一样要和文件名相同
    
    #编译的文件 在include文件夹下、、、
    
    include_directories(
            include
            play
            utils
            play/decor
            play/decor/base
    #        ${CMAKE_SOURCE_DIR}/util
    )
    
    link_directories(
            ${libs}/${ANDROID_ABI})
    
    #编译那些文件
    file(GLOB src-files
            ${CMAKE_SOURCE_DIR}/*.cpp
            ${CMAKE_SOURCE_DIR}/play/*.cpp
            ${CMAKE_SOURCE_DIR}/play/*.h
            ${CMAKE_SOURCE_DIR}/utils/*.cpp
            ${CMAKE_SOURCE_DIR}/utils/*.h
            ${CMAKE_SOURCE_DIR}/play/decor/*.cpp
            ${CMAKE_SOURCE_DIR}/play/decor/*.h
            ${CMAKE_SOURCE_DIR}/play/decor/base/*.cpp
            ${CMAKE_SOURCE_DIR}/play/decor/base/*.h
            )
    
    add_library( # Sets the name of the library.
            ${libname}
            # Sets the library as a shared library.
            SHARED
            # Provides a relative path to your source file(s).
            ${src-files}  #加入的就是上面指定文件下的所有
            )
    
    set(third-party-libs
            avformat
            avcodec
            avfilter
            swresample
            swscale
            avutil
            fdk-aac
            x264
            )
    
    set(native-libs
            android
            log
            OpenSLES
            )
    
    target_link_libraries( # Specifies the target library.
            ${libname}
            ${log-lib}
            ${third-party-libs}
            ${native-libs}
            android
            z
            )
    

      编写测试代码

    extern "C"
    JNIEXPORT jstring JNICALL
    Java_com_kangwang_ffmpeddemo_FFmpegdiaPlayer_native_1version(JNIEnv *env, jobject thiz) {
        string hello = av_version_info();
        string avutil = to_string(avutil_version());
        hello.append(avutil);
        LOGCATI("avutil");
        return env->NewStringUTF(hello.c_str());
    }
    

      java层测试代码

        public String versionInfo() {
            return native_version();
        }
    
        private native String native_version();
    

      

    https://github.com/wangwangla/learnffmpeg

  • 相关阅读:
    JAVA中HashMap相关知识的总结(一)
    linux进阶之路(三):vi/vim编辑器
    linux进阶之路(二):linux文件目录
    linux进阶之路(一):linux入门
    linux:lrzsz安装
    一:阿里云服务器使用及后台环境搭建
    第二篇:线程七种状态
    Git log
    redis3.0 集群实战3
    详解Linux chgrp和chown命令的用法
  • 原文地址:https://www.cnblogs.com/kw28188151/p/14696344.html
Copyright © 2011-2022 走看看