自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(170)
  • 资源 (6)
  • 收藏
  • 关注

原创 Android KeyStore 秘钥导入

【代码】Android KeyStore 秘钥导入。

2023-10-09 15:32:31 405

原创 GCC编译流程

汇编就是把编译阶段生成的.s文件转变成二进制目标代码,也就是机器代码。链接就是将目标文件以及所需要的库文件链接生成可执行目标文件的过程。

2022-10-21 17:32:23 235

原创 flex布局

flex items 默认都是沿着main axis(主轴)从main start 到main end 方向排布flex-direction决定了main axis的方向,有4个取值row(默认值),row-reverse,column,column-reverse。

2022-09-21 12:24:29 388

原创 Ubuntu安装和卸载mysql

代码】Ubuntu安装和卸载mysql。

2022-08-13 17:13:42 450

原创 Java之int强转byte

计算机底层数值是以补码的形式存储的原码: 就是二进制码,最高位为符号位,0表示正数,1表示负数,剩余部分表示真值反码: 在原码的基础上,正数反码就是他本身,负数除符号位之外全部按位取反补码: 正数的补码就是自己本身, 负数的补码是在自身反码的基础上加1byte的取值范围 { -128,+127 },如果int的数值在这个取值范围,则数据不会丢失,但如果超过,则会如以下案例:...

2022-07-06 14:16:43 967

原创 SDL播放YUV

## 创建测试文件```// 将mp4转yuvffmpeg -i hello.mp4 hello.yuv// 输出内容如下:[mov,mp4,m4a,3gp,3g2,mj2 @ 000001a216228800] overread end of atom 'colr' by 1 bytesInput #0, mov,mp4,m4a,3gp,3g2,mj2, from 'hello.mp4': Metadata: major_brand : isom minor_ver

2022-06-14 14:50:48 345

原创 SDL显示BMP

SDL显示BMP

2022-06-06 11:52:22 159

原创 FFmpeg视频录制(WIN)

# FFmpeg视频录制(WIN)## 命令### 查看当前平台可用的设备```ffmpeg -devices// 结果如下:Devices: D. = Demuxing supported .E = Muxing supported -- D dshow DirectShow capture // DirectShow,是Windows平台的多媒体系统库 D gdigrab GDI API Windows frame grabber D

2022-06-05 22:57:50 1154

原创 FFmpeg之YUV

通常用A:B:C的形式来表示,比如4:4:4、4:2:2、4:2:0命令解释获取支持的采样格式

2022-06-05 21:09:34 1193

原创 AAC解码

AAC 解码

2022-06-04 16:51:28 688

原创 AAC编码

本篇使用的FFMPEG需要按照WIN下编译FFMPEGfdk-aac对PCM文件有参数要求必须是16位整数的PCM支持的采样率有(Hz):命令行基本使用常用参数设置输出比特率设置输出规格取值如下:一旦设置了输出规格,会自动设置一个合适的输出比特率...

2022-06-03 19:11:20 672

原创 WIN下编译FFMPEG

MSYS2 :https://www.msys2.org/下载FFMPEG 源码参数配置,编译,安装配置所需的库文件FFmpeg最终会被安装到目录中拷贝FFMPEG所需的dll文件将配置到环境变量中

2022-06-02 11:39:25 510

原创 QT下FFMPEG录音生成WAV文件

参考:[PCM转WAV](https://blog.csdn.net/shuzhuchengfu/article/details/125050299)[录音](https://blog.csdn.net/shuzhuchengfu/article/details/125029548)### 代码实现```cpp#include "record_thread.h"#include #include extern "C" { #include

2022-06-01 15:07:30 376

原创 QT下SDL播放WAV文件

## 创建测试资源```// 获取资源文件ffmpeg -i demo.mp4 in.wav```## 播放### 命令行```ffplay in.wav```### 代码#### 初始化子系统```cpp// 1.初始化子系统if(SDL_Init(SDL_INIT_AUDIO)){ qDebug()

2022-06-01 11:35:09 262

原创 QT下FFMPEG重采样

QT下FFMPEG重采样命令行方式// 转换ffmpeg -ar 44100 -ac 2 -f s16le -i 44100_s16le_2.pcm -ar 48000 -ac 1 -f f32le 48000_f32le_1.pcm// 播放测试ffplay -ar 48000 -ac 1 -f f32le 48000_f32le_1.pcm代码实现 qDebug() << "开始重采样线程"; // 输出参数 // 立体音 int inChLay

2022-05-31 19:23:04 143

原创 PCM转WAV

PCM转WAVWAV文件标准QT下实现Wav文件头#ifndef FFMPEGS_H#define FFMPEGS_H#include <QObject>#define AUDIO_FORMAT_PCM 1#define AUDIO_FORMAT_FLOAT 3// WAV文件头(44字节)typedef struct { // RIFF chunk的id uint8_t riffChunkId[4] = {'R', 'I', 'F', 'F'};

2022-05-30 17:28:02 457

原创 QT实现SDL播放PCM文件(WIN)

QT实现SDL播放PCM文件(WIN)QT配置SDL环境(WIN)下载SDL文件http://www.libsdl.org/download-2.0.php选择对应的版本SDL2-2.0.22-win32-x64.zip (64-bit Windows)配置环境// xxx.pro文件win32{ SDL_HOME = XXX/SDL2-devel-2.0.22-mingw/SDL2-2.0.22/x86_64-w64-mingw32}# 添加头文件INCLUDEPATH +

2022-05-30 11:47:08 275

原创 QT实现FFMPEG录音功能(WIN)

配置在xx.pro文件中配置配置环境变量在系统的Path中配置XXX\ffmpeg-4.3.2-2021-02-27-full_build-shared\bin

2022-05-29 12:41:18 422

原创 QT信号与槽

QT信号与槽使用系统的信号与槽// 设置按钮的点击事件// 创建按钮QPushButton * btn = new QPushButton;btn->setParent(this);btn->setText("关闭");btn->setFixedSize(100,30);setWindowTitle("信号与槽");setFixedSize(600,600);btn->move(100,100);// 设置按钮的点击事件 ->关闭窗口connect(bt

2022-05-27 15:32:02 79

原创 Ubuntu下安装JDK

下载JDK// 通过下面镜像下载相应的jdk版本https://mirrors.huaweicloud.com/java/jdk/// 我当前下载的是 jdk-8u202-linux-x64.tar.gz上传到ubuntu环境中scp -r 本地文件目录 用户名@ip:远程文件目录例如 scp -r ~/Downloads/jdk-8u202-linux-x64.tar.gz [email protected]:~/远程登录ssh 用户名@IP地址例如ssh tommy@192.

2022-05-12 12:15:32 605

原创 RSA秘钥生成,数据签名,签名验证

RSA秘钥生成,数据签名,签名验证秘钥生成并保存到本地public static Map<String, String> createKeys(int keySize) { // 为RSA算法创建一个KeyPairGenerator对象 KeyPairGenerator kpg; try { kpg = KeyPairGenerator.getInstance(RSA_ALGORITHM); } catch (NoSuchAlgorithmException e) { th

2022-03-17 18:37:11 1229 4

原创 OpenCV 图像形态学 - android

OpenCV 图像形态学 - android腐蚀Mat src;bitmap2mat(env,src,bitmap);Mat dest;Mat kernel = getStructuringElement(MORPH_RECT,Size(5,5));erode(src,dest,kernel);mat2bitmap(env,dest,bitmap);膨胀Mat src;bitmap2mat(env,src,bitmap);Mat dest;Mat kernel = getStru

2022-03-04 12:12:50 4282

原创 JNI之OpenCV卷积操作

JNI之OpenCV卷积操作 // [ // 0,-1,0, // -1,5,-1, // 0,-1,0 // ] // 卷积操作 Mat source; bitmap2mat(env, source, bitmap); // 生成一个全零矩阵 Mat dest = Mat::zeros(source.size(), source.type()); // 获取列数 int cols = (source.c

2022-03-03 09:46:44 4698

原创 JNI之Bitmap灰度图(RGBA_8888和RGB_565)

JNI之Bitmap灰度图RGBA_8888共32位RGB_565共16位实现代码如下: AndroidBitmapInfo info; AndroidBitmap_getInfo(env, bitmap, &info); void *pixels; AndroidBitmap_lockPixels(env, bitmap, &pixels); if (info.format == ANDROID_BITMAP_FORMAT_RGBA_8888) {

2022-02-25 16:55:24 2536

原创 Windows下利用NDK编辑可执行文件

Windows下利用NDK编辑可执行文件配置相应的环境 JDK ANDROID NDK环境配置就不概述了,可以自行百度准备文档hello.c#include <stdio.h>int main(){ printf("hello world\n"); return 0;}Android.mkLOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_ARM_MODE := armLOCAL_MODULE := hell

2022-02-11 11:06:59 1404

原创 Base64原理

Base64原理1.ASCII对照表2.Base 64对照表3.案例原文是a对照ASCII对照表为97转成二进制0110 0001因为只有8位,不能被6整除,所以要进行补位,6和8的最近的公倍数为24,所以要补充16个0,即为0110 0001 0000 0000 0000 0000将转换后的每6位进行切割 并在前面补上两个0 即使为00011000 00010000 00000000 0000000000011000 8+16 = 24 对应的Base64码 Y00010000

2022-02-10 11:46:03 147

原创 smalidea的使用

smalidea的使用smalidea是一个IntelliJ IDEA/Android Studio smali语言插件,可实现动态调试smali代码。下载插件github地址:https://github.com/JesusFreke/smalidea -> DOWNLOAD安装插件File->Settings->Plugins->install plugin from disk->选择下载的zip包准备1.测试应用的release包,反编译,并修改清单文件中的

2022-02-10 10:02:45 2225

原创 Android之反编译

反编译创建安卓项目,并编写示例代码,编译打包布局代码<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tool

2022-01-29 11:57:20 2451

原创 Java之非对称加密

非对称加密非对称加密需要两个秘钥,公钥和私钥公钥和私钥必须是一对秘钥如果由公钥加密,则必须由私钥解密;如果由私钥加密,则需要由公钥加密。常见的算法RSA和ECC生成秘钥对// 加密算法String algorithm = "RSA";// 创建密钥对生成器对象KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(algorithm);// 生成密钥对KeyPair keyPair = keyPairGen

2022-01-26 15:20:04 3459

原创 Java之消息摘要

消息摘要消息摘要(Message Digest)又称为数字摘要(Digital Digest)它是一个唯一对应一个消息或文本的固定长度的值,它由一个单向Hash加密函数对消息进行作用而产生。使用数字摘要生成的值是不可以篡改的,为了保证文件或者值的安全特点无论输入的消息有多长,计算出来的消息摘要的长度总是固定的。例如应用MD5算法摘要的消息有128个比特位,用SHA-1算法摘要的消息最终有160比特位的输出。只要输入的消息不同,对其进行摘要以后产生的摘要消息也必不相同;但相同的输入必会产生相同的输

2022-01-26 14:24:01 307

原创 Java之对称加密

对称加密采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。常见的对称加密方法DES : Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法,1977年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),并授权在非密级政府通信中使用,随后该算法在国际上广泛流传开来。AES : Advanced Encryption Standard, 高级加密标准 .在密码学中又称Rijndael加密法

2022-01-26 14:00:38 6819

原创 C语言之面向接口编程

C语言之面向接口编程创建接口头文件// hello_socket.h#include "string.h"#include "stdio.h"#include "stdlib.h"typedef void (* initHandle)(void ** handle);typedef void (* sendMessage)(void * handle,char * message,int length);typedef void (* receiveMessage)(void *

2021-12-10 11:10:52 475

原创 Android之音频和视频的提取

Android之音频和视频的提取权限<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />private boolean checkPermission() { return ActivityCompat.checkSelfPe

2021-09-30 16:03:02 1835 3

原创 JNI异常处理

JNI异常处理C++的异常处理1.自定义struct覆写exception里面的方法2.throw 抛出自定义类型异常,catch后处理try { // c++的异常处理, // 1.覆写继承exception的方法,抛出自定的异常类 // 2.throw 自定义异常(string,int等),catch后处理 int a = 10; int b = 0; if (b == 0) {// throw "b is zero"; throw NoZeroExc

2021-09-28 17:38:21 295

原创 Android之OpenCv简单人脸识别功能(Bitmap)

Android之OpenCv简单人脸识别功能OpenCv的下载下载地址 - https://opencv.org/releases/doc 文档目录samples 示例代码sdk 编译后的动态库以及头文件案例代码人脸识别1.人脸信息录入2.获取相机的Bitmap,检测人脸信息(保证人脸特征信息比较精准),正常,眨眼睛,张嘴巴3.提取特征值Mat转Bitmap// 将Mat转bitmapvoid mat2Bitmap(JNIEnv *env,jobject bitmap,Mat

2021-09-28 09:37:28 1510

原创 JNI之C调用Java方法

JNI之C调用Java方法自定义Java方法1.自定义Java方法// java方法public class MyJavaClass { public String getName(String content) { return "hello world -> " + content; }}2.编译该类获取.class 文件javac MyJavaClass.java3.获取该类的签名javap -p -s 包名.MyJavaClass//

2021-09-27 19:18:33 6631

原创 Java之网络编程

Java之网络编程网络模型OSI参考模型将网络分成七层:应用层、表示层、会话层、传输层、网络层、数据链路层,物理层TCP/IP参考模型将网络分成:应用层、传输层、网际层、主机至网络层网络通讯要素IP地址 InetAddress1.网络中设备的标识2.不易记忆,可用主机名3.本地回环地址:127.0.0.1 主机名:localhost端口号1.用于标识进程的逻辑地址,不同进程的标识2.有效端口:065535,其中01024系统使用或保留端口传输协议1.通讯的规则2.常见的

2021-09-26 10:08:26 55

原创 Java之IO流

IO流1.IO流用来处理设备之间的数据传输2.Java对数据的操作是通过流的方式3.Java用于操作流的对象都在IO包中4.流按操作数据分为两种:字节流和字符流5.流按流向分为:输入流和输出流IO流常用基类字节流的抽象基类InputStream,OutputStream字符流的抽象基类Reader,Writer由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀,例如InputStream子类FileInputStream,Reader的子类FileReader字符流代码

2021-09-24 17:51:50 71

原创 Java之集合

集合数组和集合数组,长度是固定的,而且存储的对象类型是相同的集合,长度是不固定的,存储的对象类型可以不相同Collection**常见方法**void add(E e) 添加数据void clear() 清除数据boolean contains(Object o) 是否有元素boolean isEmpty() 集合中是否有数据void remove(Object o) 删除元素void retainAll(Collection<?> c) 获取两个集合的交集迭代器pu

2021-09-23 15:28:22 72

原创 Java之String

Java之String1.String 是一个类类型变量2.字符串一旦被初始化了,就不能被改变 String s1 = "abc"; String s2 = new String("abc"); String s3 = "abc"; System.out.println(s1 == s2); // false 对象的地址是不一样的 System.out.println(s1.equals(s2)); //true String 覆写了equals的源码 /

2021-09-23 07:41:46 81

AS+Smalidea 动态调试 工具包

AS+Smalidea 动态调试 工具包

2022-02-10

Android之反编译工具包

Android之反编译工具包

2022-01-29

OpenCvDemo_20210926.zip

Android之OpenCv简单人脸识别功能(Bitmap)源码

2021-09-26

train_and_test_digits.zip

sklearn简单使用训练和测试数据

2021-03-24

OpenCVDemo_Android.zip

Android开发之OpenCv的接入,使用官方模型实现Opencv的人脸识别功能,并使用SuraceView预览展示。

2020-07-03

编译后的FFmpeg资源.zip

ffmpeg编译后文件(包括头文件,so文件) 用来提供给学习ffmpeg的开发者使用,当前编译使用的JDK为1.8,安卓版本为19,TOOLCHAIN_VERSION=4.9,ndk版本14b

2020-06-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除