- 博客(171)
- 资源 (6)
- 收藏
- 关注
原创 GCC编译流程
汇编就是把编译阶段生成的.s文件转变成二进制目标代码,也就是机器代码。链接就是将目标文件以及所需要的库文件链接生成可执行目标文件的过程。
2022-10-21 17:32:23
286
原创 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
427
原创 Java之int强转byte
计算机底层数值是以补码的形式存储的原码: 就是二进制码,最高位为符号位,0表示正数,1表示负数,剩余部分表示真值反码: 在原码的基础上,正数反码就是他本身,负数除符号位之外全部按位取反补码: 正数的补码就是自己本身, 负数的补码是在自身反码的基础上加1byte的取值范围 { -128,+127 },如果int的数值在这个取值范围,则数据不会丢失,但如果超过,则会如以下案例:...
2022-07-06 14:16:43
1022
原创 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
415
原创 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
1263
原创 AAC编码
本篇使用的FFMPEG需要按照WIN下编译FFMPEGfdk-aac对PCM文件有参数要求必须是16位整数的PCM支持的采样率有(Hz):命令行基本使用常用参数设置输出比特率设置输出规格取值如下:一旦设置了输出规格,会自动设置一个合适的输出比特率...
2022-06-03 19:11:20
954
原创 WIN下编译FFMPEG
MSYS2 :https://www.msys2.org/下载FFMPEG 源码参数配置,编译,安装配置所需的库文件FFmpeg最终会被安装到目录中拷贝FFMPEG所需的dll文件将配置到环境变量中
2022-06-02 11:39:25
685
原创 QT下FFMPEG录音生成WAV文件
参考:[PCM转WAV](https://blog.youkuaiyun.com/shuzhuchengfu/article/details/125050299)[录音](https://blog.youkuaiyun.com/shuzhuchengfu/article/details/125029548)### 代码实现```cpp#include "record_thread.h"#include #include extern "C" { #include
2022-06-01 15:07:30
456
原创 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
323
原创 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
180
原创 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
534
原创 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
335
原创 QT实现FFMPEG录音功能(WIN)
配置在xx.pro文件中配置配置环境变量在系统的Path中配置XXX\ffmpeg-4.3.2-2021-02-27-full_build-shared\bin
2022-05-29 12:41:18
530
原创 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
121
原创 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 tommy@192.168.2.13:~/远程登录ssh 用户名@IP地址例如ssh tommy@192.
2022-05-12 12:15:32
692
原创 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
1376
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
4328
原创 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
4735
原创 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
2737
原创 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
1519
原创 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
186
原创 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
2643
原创 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
2527
原创 Java之非对称加密
非对称加密非对称加密需要两个秘钥,公钥和私钥公钥和私钥必须是一对秘钥如果由公钥加密,则必须由私钥解密;如果由私钥加密,则需要由公钥加密。常见的算法RSA和ECC生成秘钥对// 加密算法String algorithm = "RSA";// 创建密钥对生成器对象KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(algorithm);// 生成密钥对KeyPair keyPair = keyPairGen
2022-01-26 15:20:04
3563
原创 Java之消息摘要
消息摘要消息摘要(Message Digest)又称为数字摘要(Digital Digest)它是一个唯一对应一个消息或文本的固定长度的值,它由一个单向Hash加密函数对消息进行作用而产生。使用数字摘要生成的值是不可以篡改的,为了保证文件或者值的安全特点无论输入的消息有多长,计算出来的消息摘要的长度总是固定的。例如应用MD5算法摘要的消息有128个比特位,用SHA-1算法摘要的消息最终有160比特位的输出。只要输入的消息不同,对其进行摘要以后产生的摘要消息也必不相同;但相同的输入必会产生相同的输
2022-01-26 14:24:01
351
原创 Java之对称加密
对称加密采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。常见的对称加密方法DES : Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法,1977年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),并授权在非密级政府通信中使用,随后该算法在国际上广泛流传开来。AES : Advanced Encryption Standard, 高级加密标准 .在密码学中又称Rijndael加密法
2022-01-26 14:00:38
6951
原创 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
546
原创 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
2227
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
351
原创 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
1643
原创 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
6701
原创 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
84
原创 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
103
原创 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
110
编译后的FFmpeg资源.zip
2020-06-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人