【音视频安卓开发 (一)】AndroidStudio项目配置权限、jni库路径、ABI、Cmake
cmake项目配置
# 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)#设置头文件路径,头文件路径相对Cmake文件来确定
include_directories(src/main/cpp/include)set(FF ${CMAKE_CURRENT_SOURCE_DIR}/libs/${ANDROID_ABI})add_library(avcodec SHARED IMPORTED)
set_target_properties(avcodec PROPERTIES IMPORTED_LOCATION ${FF}/libavcodec.so)add_library(avformat SHARED IMPORTED)
set_target_properties(avcodec PROPERTIES IMPORTED_LOCATION ${FF}/libavformat.so)add_library(avutil SHARED IMPORTED)
set_target_properties(avcodec PROPERTIES IMPORTED_LOCATION ${FF}/libavutil.so)add_library(swscale SHARED IMPORTED)
set_target_properties(swscale PROPERTIES IMPORTED_LOCATION ${FF}/libswscale.so)add_library(swresample SHARED IMPORTED)
set_target_properties(swresample PROPERTIES IMPORTED_LOCATION ${FF}/libswresample.so)add_library(avfilter SHARED IMPORTED)
set_target_properties(avfilter PROPERTIES IMPORTED_LOCATION ${FF}/libavfilter.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)find_library( # Sets the name of the path variable.log-liblog )target_link_libraries( # Specifies the target library.native-libandroid${CMAKE_CURRENT_SOURCE_DIR}/libs/${ANDROID_ABI}/libavcodec.so${CMAKE_CURRENT_SOURCE_DIR}/libs/${ANDROID_ABI}/libavfilter.so${CMAKE_CURRENT_SOURCE_DIR}/libs/${ANDROID_ABI}/libavformat.so${CMAKE_CURRENT_SOURCE_DIR}/libs/${ANDROID_ABI}/libavutil.so${CMAKE_CURRENT_SOURCE_DIR}/libs/${ANDROID_ABI}/libswresample.so${CMAKE_CURRENT_SOURCE_DIR}/libs/${ANDROID_ABI}/libswscale.so# Links the target library to the log library# included in the NDK.${log-lib} )
build.gradle
添加jni用到库所在的路径
plugins {id 'com.android.application'
}android {compileSdkVersion 30buildToolsVersion "30.0.2"defaultConfig {applicationId "com.example.ffmpegplayer"minSdkVersion 19targetSdkVersion 30versionCode 1versionName "1.0"testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"externalNativeBuild {cmake {cppFlags "-std=c++11"}ndk{abiFilters"armeabi-v7a"}}sourceSets{main{jniLibs.srcDirs=['libs']}}}buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'}}externalNativeBuild {cmake {path "src/main/cpp/CMakeLists.txt"version "3.10.2"}}compileOptions {sourceCompatibility JavaVersion.VERSION_1_8targetCompatibility JavaVersion.VERSION_1_8}
}dependencies {implementation 'androidx.appcompat:appcompat:1.2.0'implementation 'com.google.android.material:material:1.2.1'implementation 'androidx.constraintlayout:constraintlayout:2.0.4'testImplementation 'junit:junit:4.+'androidTestImplementation 'androidx.test.ext:junit:1.1.2'androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
}
读写权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
权限(版本)
【音视频安卓开发 (一)】AndroidStudio项目配置权限、jni库路径、ABI、Cmake相关推荐
- 【音视频安卓开发 (四)】AndroidStudio项目配置权限、jni库路径、ABI
读写权限 权限(版本) 添加jni用到库所在的路径 设置cmake和NDK参数 cmake项目配置
- AndroidStudio项目配置第三方libray库
这几天在做项目的时候,团队同事为了方便开发新功能,给我们的AndroidStudio项目添加了一个依赖库(library),同事在提交代码到SVN的时候,因为设置了提交代码屏蔽管理,没有把.Gradl ...
- 【安卓开发】AndroidStudio项目提交到github最详细步骤
在使用studio开发的项目过程中有时候我们想将项目发布到github上,以前都是用一种比较麻烦的方式(cmd)进行提交,最近发现studio其实是自带这种功能的,终于可以摆脱命令行了. 因为自己也没 ...
- 【音视频安卓开发 (八)】OpenSLES播放音频步骤和接口讲解
OpenSLES是安卓内部的音频播放和录音 初始化引擎 创建输出设备 配置PCM格式信息 初始化播放器 播放和缓冲队列 本文开源项目下载
- 【音视频安卓开发 (零)】用 Android NDK 编译 FFmpeg 与 X264
下载相关构建和工具链 1.先下载NDK Google Android 2.在Windows端下载使用msys2,msys2支持Linux msys2 安装相关源,等待更新要很久.....慢慢等 pac ...
- 【音视频安卓开发 (三)】OpenGL ES 直接绘制YUV
EGL OpenGL与窗口对应的的适配层,针对安卓平台的适配器. surface 交互到窗口显示
- 【音视频安卓开发 (七)】安卓视频播放窗口去掉标题栏、全屏、横屏
java中的MainActivity初始化部分设置这些操作 //去掉标题栏supportRequestWindowFeature( Window.FEATURE_NO_TITLE);//全屏,隐藏状态 ...
- 【音视频安卓开发 (六)】Android GLSurfaceView播放视频
GLSurfaceView渲染RGB的数据,利用双缓冲空间机制.取出缓冲地址,将要渲染的数据copy到缓冲地址. 获取Surface Java部分: SurfaceView控件设置到界面中显示 Sur ...
- 【音视频安卓开发 (五)】Android中获取音视频原始数据的方法
一般取得原始数据的方法使用的camera setPreviewCallback
最新文章
- 探索--是测试的必须品
- thrust 学习笔记
- python中uniform randint_python生成随机数:uniform(), randint(), gauss(), expovariate()
- HTML5 标签、事件句柄属性以及浏览器兼容情况速查手册
- PHP 计算两个两个文件的相对路径
- jzoj3338-[NOI2013模拟]法法塔的奖励【权值线段树,线段树合并】
- c语言编程一个象棋游戏,急求:C语言编写的中国象棋游戏一个
- 深入了解VB中的变量和指针
- 调查显示:数据中心行业女性获得报酬比男性多
- Illustrator中文版教程,如何在 Illustrator 中添加文字?
- 【韩顺平 零基础30天学会Java】(第一阶段)(自用)
- 2019Java视频教程-玩转oracle
- 【控制理论】矩阵求逆引理推导及理解
- 清华2019最新AI发展报告出炉!400页干货,13大领域一文看懂
- 04 CoCos Creator-Please make sure java is installed and JAVA_HOME
- JQuery实现复选框CheckBox的全选、反选、提交操作
- java实现抛物线轨迹计算_JavaFX中抛物线轨迹的时间线
- java win10窗口启动假死_win10电脑任务栏和窗口假死怎么办_win10任务栏和窗口假死的解决方法...
- 六大设计原则之开闭原则
- anki计算机知识,「背书 刷题神器」 Anki 是应对考试的强力效率 buff
热门文章
- ejb构建_如何使用单例EJB和MBean构建和清除参考数据缓存
- Mockito“ thenReturn” vs Mockito“ thenAnswer”
- 有关有效企业测试的视频课程
- JDK 14中的常规,安全和确定性外部内存访问
- input发送a.jax_JAX-RS 2.0的新功能– @BeanParam批注
- 将旧对象装箱可自动关闭
- java8 默认方法_如何不使用Java 8默认方法
- 垃圾收集算法,垃圾收集器_您正在使用什么垃圾收集器?
- executor线程池框架_如何使用Java 5 Executor框架创建线程池
- java集合提取最小的日期_提取Java集合的元素-Java 8方法