
Android NDK
文章平均质量分 66
本栏目主要积累关于NDK相关的内容,让c和c++助力Android应用程序。
若之灵动
专注于移动应用研发
展开
-
Android NDK篇-C++之 强制转换与智能指针
强制转换与智能指针,以及自定义智能指针原创 2022-08-21 22:53:27 · 1489 阅读 · 0 评论 -
Android NDK篇-C++之 线程、锁、条件变量与生产消费模型
Android NDK篇-C++之 线程、锁、条件变量与生产消费模型原创 2022-08-20 22:01:28 · 1150 阅读 · 0 评论 -
Android NDK篇-C++之 SLT 中的容器与函数谓词
SLT 中的容器学习与函数谓词原创 2022-08-11 17:52:05 · 940 阅读 · 0 评论 -
Android NDK篇-C++虚函数、纯虚函数、完全纯虚函数与模板函数
C++虚函数、纯虚函数、完全纯虚函数与模板函数原创 2022-08-10 15:42:22 · 964 阅读 · 0 评论 -
Android NDK篇-C++语言之运算符重载 与多继承二义性
C++语言之运算符重载 与多继承二义性原创 2022-08-10 12:24:47 · 238 阅读 · 0 评论 -
Android NDK篇-C++语言之 this 原理和可变参数与友元函数友元类
this 原理和可变参数与友元函数友元类原创 2022-08-09 18:18:38 · 590 阅读 · 0 评论 -
Android NDK篇-C++ 函数执行流程分析以及浅拷贝和深拷贝
函数执行流程分析以及浅拷贝和深拷贝原创 2022-08-08 22:45:46 · 407 阅读 · 0 评论 -
Android NDK篇-C++ 自定义命名空间与拷贝构造函数
c++ 自定义命名空间与拷贝构造函数原创 2022-07-26 22:14:36 · 546 阅读 · 0 评论 -
Android NDK篇-C++之面向对象汇总
Android NDK篇-C++之面向对象汇总原创 2022-07-23 21:39:06 · 491 阅读 · 0 评论 -
Android OpenGL ES 着色器语言
着色器是OpenGL ES3.0 API的一个基础核心概念,每一个OpenGL ES 程序都需要一个顶点着色器和一个片段着色器,以渲染有意义的图片。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HJuSmGZF-1657469422055)(C:/Users/刘静盼/AppData/Roaming/Typora/typora-user-images/image-20220710234304651.png)]上图就是顶点着色器到片段着色器的一个示意图。在Android中不能直接原创 2022-07-11 00:10:53 · 634 阅读 · 0 评论 -
Android OpenCV 身份证识别实战
所以身份证别的关键:找到身份证号所在的区域、获取号码图片图片无损压缩图片灰度化,图片的降噪处理:去除噪色提高比对效率灰度图片二值化:过滤掉颜色浅的区域,留下关键信息图像膨胀:膨胀成一个块区域便于轮廓检测轮廓检测图片分割提取身份证核心区域3.Android openCV集成3.1.将OpenCV头文件放置在main/cpp路径下面3.2.配置CMakeLists.txt3.3.通过native方法获取图片核心区域拿到图片核心区域,返回bigtmap3.4原创 2022-06-26 08:53:22 · 1113 阅读 · 0 评论 -
Android FFmpeg视频播放器三 音频封装格式解码播放
Android FFmpeg视频播放器一解封装Android Android FFmpeg视频播放器二 视频封装格式解码播放视频解封装之后就会得到音频流和视频流,解封状得到的数据是AVPackage类型数据,需要进一步解码成AVFrame一帧一帧数据才能进行播放。pthread_create:AVPackage解码得到AVFrame耗时操作,创建线程getQueueAndDel:从AVPackage队列获取数据,阻塞队列,如果队列为空会进行wait阻塞avcodec_send_packet:将获取到原创 2022-06-20 15:02:28 · 1200 阅读 · 0 评论 -
Android FFmpeg视频播放器二 视频封装格式解码播放
Android FFmpeg视频播放器一解封装视频解封装之后就会得到音频流和视频流,解封状得到的数据是AVPackage类型数据,需要进一步解码成AVFrame一帧一帧数据才能进行播放。由于是耗时操作,所以先pthread_create创建线程开启循环从AVPackage队列获取AVPackage数据进行解码操作frames 是视频帧队列,队列的阈值是AV_MAX_SIZE,这个值可以自己设置,不要太大,否则在队列保存的数据太大packets.getQueueAndDel(pkt):从队列获取AV原创 2022-06-20 12:23:43 · 1011 阅读 · 0 评论 -
Android OpenCV 身份证训练
下载 jTessBoxEditor-2.2.0 直接解压就好,这个是训练工具下载地址:https://sourceforge.net/projects/vietocr/files/jTessBoxEditor/下载这个tesseract-ocr-setup-3.02.02.exe (不要使用太高的版本,可能会不稳定)下载地址:https://digi.bib.uni-mannheim.de/tesseract/进行安装,直接下一步就行,没有什么特殊的安装好之后,查看下 D:\Program Files (x原创 2022-06-18 20:50:55 · 724 阅读 · 0 评论 -
Android OpenCV环境配置
2.配置阶段#执行cmake gui配置cmake源码路径 D:/tools/opencv/sources配置编译目标生成的路径 D:/tools/opencv/minGW_Build[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X5GC3ZIq-1655531322765)(C:\Users\刘静盼\AppData\Roaming\Typora\typora-user-images\image-20220618111835764.png)]#配置编译环境选择Mi原创 2022-06-18 13:49:35 · 1132 阅读 · 0 评论 -
Android ubuntu20.04 android-ndk-r20b编译 ffmpeg4.2 四大平台
2.修改configure,去掉了打包生成的数字后缀修改configure文件,3718行:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P9upfxe4-1655449531923)(https://raw.githubusercontent.com/liupanfeng/images/master/img/image-20220617141804740.png)]4.进行编译操作5.编译结果编译成功后,在android文件下会产生编译产物ABI:ABI即Ap原创 2022-06-17 15:07:11 · 889 阅读 · 0 评论 -
Android FFmpeg视频播放器一解封装
笔者使用的是静态库,静态库存放路径是:src/main/cpp/ffmpeg/libs/armeabi-v7a导入的静态库:头文件路径:src/main/cpp/ffmpeg/include3.视频解封装解封状流程:上面就完成了FFmpeg对视频文件的解封装的操作...原创 2022-06-14 14:00:27 · 539 阅读 · 0 评论 -
Android OpenGL ES 实战实现拍摄预览黑白电视效果
OpenGL:全称(Oen Graphics Library)图形绘制语言也是GPU显卡语言,是图形领域的工业标准,是一套跨编程语言、跨平台的、专业的图形编程(软件)接口。它用于二维、三维图像,是一个功能强大,调用方便的底层图形库。与硬件无关,可以在不同的平台windows、Linux、Mac、Android、IOS之间进行移植。因此支持OpenGL的软件具有很好的移植性,可以得到广泛的应用。在移动端,使用的是OpenGLES,这个是一个专门针对客户端的精简版本。OpenGLES 1.0和1.1 --And原创 2022-06-14 01:06:24 · 815 阅读 · 0 评论 -
Android Nginx + RTMP流媒体服务器搭建
遇到的错误:对nginx.conf 进行修改原创 2022-06-10 15:58:26 · 1496 阅读 · 0 评论 -
Android RTMP 交叉编译
2.rtmp单独编译的脚本 build.sh3.RTMP与FFmpeg合并混编交叉编译脚本build.sh进行编译,使用root权限进行编译,否则会报权限问题:以上脚本编译成功,亲测可用原创 2022-06-10 15:01:33 · 198 阅读 · 0 评论 -
Android 定位c++异常
1.不要打任务断点,直接debug,如果崩溃出在c++层调试位置会直接在异常的位置。2.通过ndk-stack 定位异常配置环境变量 NDK_HOME=D:\tools\Android\Sdk\ndk-bundle命令行执行:adb logcat | ndk-stack -sym F:/workspace/MSPlayer/app/build/intermediates/cmake/debug/obj/armeabi-v7a复现崩溃路径就能打印出异常的崩溃c++层的堆栈信息。...原创 2022-06-08 21:09:48 · 496 阅读 · 0 评论 -
Android 音视频开发-FFmpeg 命令
安装成功之后就可以使用ffmpeg 、ffplay、ffprobe等命令原创 2022-06-08 20:47:26 · 684 阅读 · 0 评论 -
Ubuntu20.04 安装QT
Ubuntu20.04 安装QT原创 2022-06-08 14:47:21 · 2433 阅读 · 0 评论 -
Android 视音理论技术点
1.视音频完整解码播放流程1.1视频封装格式(mp4、flv、mkv)–>解封装/解复用,打开封装格式–>视频压缩数据(H264、H265)–>视频解码–>视频原始数据(YUV)–>YUV转RGBA–>音视频同步–>呈现在设备上画面1.2视频封装格式(mp4、flv、mkv)–>解封装/解复用,打开封装格式–>音频压缩数据(AAC、MP3)–>音频解码–>音频原始数据(PCM双声道)–>如果设备只支持单声道,需要重采样,双声道转单声原创 2022-05-29 13:45:09 · 149 阅读 · 0 评论 -
Android FFmpeg编译与Android集成
1.NDK与FFmpeg下载NDK下载:1.下载:在浏览器,下载中心,复制链接地址: https://dl.google.com/android/repository/android-ndk-r17c-linux-x86_64.zip?hl=zh_cn2.wget 去下载操作: wget https://dl.google.com/android/repository/android-ndk-r17c-linux-x86_64.zip?hl=zh_cn3.修改名称: mv and原创 2022-05-28 14:18:12 · 953 阅读 · 0 评论 -
Android CMakeLists.txt配置解析与Cmake语法必备
1.CMakeLists.txt配置解析# 最低支持的版本,注意:这里并不能代表最终的版本,最终版本在app.build.gradle中设置的cmake_minimum_required(VERSION 3.10.2)# 当前工程名,以前的旧版本是没有设置的,这个可以设置也可以不设置project("mscmake")#批量导入源文件 源文件跟CMakeLists 在同一个目录的情况file(GLOB SOURCE *.cpp *.c)# 批量导入 cpp c源文件file(GLOB原创 2022-05-27 02:54:40 · 1975 阅读 · 0 评论 -
Linux shell 脚本编程必备
1.常用参数介绍echo $? #检测上面执行是否执行成功 0:成功df -h #查看磁盘信息$0 #Shell脚本的名称是: $0$1 #参数一:$2 #参数二:$* #全部参数$# #参数数量expr #执行运算操作cal #查看日历date #查看时间2.if 语句 判断内容必须再增加括号 fi结尾if(($?));then echo "本次执行失败"else echo "本次执行原创 2022-05-21 19:07:58 · 211 阅读 · 0 评论 -
Android NDK 交叉编译
文章目录1.NDK下载2.GCC 编译可执行文件3.编译Android手机可以执行的可执行文件4.编译动态库或者静态库5.集成生成的动态库和静态库1.NDK下载NDK官网https://developer.android.google.cn/ndk/downloads/older_releasesNDK Linux 64 版本 r17chttps://dl.google.com/android/repository/android-ndk-r17c-linux-x86_64.zip?hl=zh-c原创 2022-05-21 15:10:52 · 1489 阅读 · 0 评论 -
Linux 常用命令总结
文章目录1.查看Linux系统类别2.安装命令3.光标移动快捷键3.1光标移动到最前3.2.光标移动到最后3.3.清空当前输入的内容4.Linux系统路径介绍4.1bin 目录一些执行文件4.2home 目录用户4.3lib 目录常用的 so4.4.opt 和 proc 是与进程相关的5.ls相关5.1. ls 当前文件夹下面的所有文件/文件夹5.2. ls -all 当前文件夹下面的所有文件/文件夹等 的详细显示5.3. ls -lh 当前文件夹下面的所有文件/文件夹等 的大小详细显示5.4 ls -R原创 2022-05-19 22:16:12 · 385 阅读 · 0 评论 -
Android-NDK 动态注册与JNI线程
文章目录1.动态注册相比于静态注册的优点2.JNI_OnLoad方法3.动态注册的流程3.1编写需要动态注册的方法3.2增加结构体数组3.3编写JNI_OnLoad方法4.JNI中子线程1.动态注册相比于静态注册的优点被反编译后 安全性高一点在native中的调用,函数名简洁编译后的函数标记 较短一些由于一批方法会统一注册,可以直接使用,所以性能略有提升。2.JNI_OnLoad方法这个方法是调用System.loadLibrary这个方法会触发的一个方法,类似于默认构造方法,可以通过重写原创 2022-05-10 12:55:41 · 323 阅读 · 0 评论 -
Android-NDK 接入Fmod库,变声操作
Android-NDK 接入Fmod库,变声操作fmod是音效引擎库,游戏引擎cocos2d、unity3d 等都是默认集成了 fmod 来做音效。fmod官网1.下载Fmod资源可以在官网下载,也可以直接访问百度云盘下载:链接:https://pan.baidu.com/s/1Ypqlgk8WWacstURNMw2ETw提取码:pkom2.接入Fmod在main路径下新建jniLibs文件夹,增加需要的架构库,根据项目来选择。并讲libfmod.so、libfmodL.so这两个so库原创 2022-05-06 18:07:22 · 1173 阅读 · 0 评论 -
NDK基础三 JNI 文件拆分
JNI中对文件的操作是很方便的,也是比较常用,主要使用到fopen以及fputc、fgetc等 //获取sdcard路径 private static final String SD_CARD_PATH= Environment.getExternalStorageDirectory().getAbsolutePath();本地函数声明:public class FileU...原创 2019-04-10 22:34:56 · 204 阅读 · 0 评论 -
Android NDK 实战
Android NDK 技术实践本篇主要讲解ndk相关的内容,主要对开发实际用到的例子分析和相关技术点的总结,NDK开发环境的配置忽略了定义:NDK是一套工具,通过这个技术可以将C/C++一些优秀的库或者函数在Android应用程序中使用。NDK主要组件:动态库:c/c++源文件构建或者第三方的.so文件。静态库:c/c++源文件可以构建成.a文件,可以将静态库关联到其他的库中使用。java原生接口:JNI是Java和C++组件用于相互通信的接口应用的而二进制接口(ABI):ABI 对应不同原创 2021-12-22 21:43:08 · 2018 阅读 · 0 评论 -
NDK基础二 JNI 动态注册
静态注册:在JNI中,一般的流程是先写一个native方法,然后通过javah命令生成头文件,然后拷贝头文件中对应的方法,写具体的逻辑。package com.soft.lpf;public class LiveUtils{public static native void live(String p, String patt_P, int num);stat...原创 2018-03-28 11:18:24 · 263 阅读 · 0 评论 -
NDK基础一 JNI中C调用Java方法
在JNI中,有的情况,C中需要调用java的方法来实现某些功能。下面就来简单的解析,如何使用JNI调用java中的方法:其中主要包括:调用java非静态方法,调用java的静态方法,调用java的构造方法这三大类调用java的非静态方法:首先,在java中定义非静态方法: public int showToast(){ Toast.makeText(getApp...原创 2016-04-19 14:10:46 · 595 阅读 · 0 评论