自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 Android MediaCodec踩坑笔记

关于编解码,FFMpeg不香吗,为什么要吊死在Android的MediaCodec上?对于这个问题,我也很无奈,FFMpeg很香,但是因为包体积、效率等问题引发的工作业务的需要,使我不得不在Android MediaCodec的摧残下苟且偷生。MediaCodec的api比较简单,用来写demo毫...

2020-05-10 17:14:29 2277 2

原创 STM32F103+RTT从零开始(三)—— S50门禁卡复制

近期因为各种原因,重新租了个房子住,小区外面有门禁系统,楼下也有个门禁系统。房东只给了一套门禁卡,而我家人也需要门禁卡,所以我就去小区物业那里补卡,结果小区物业那里只能补小区的门禁卡,楼下的门禁卡需要在另外个地方补。物业工作人员给说了下地方,我找了下没找到,又想起了我一年前买了个RFID模块和十几...

2019-10-06 15:00:41 3378 6

原创 Lua封装&C++实践(三)——Lua注册C++构造函数

一个std::tuple<int,float,std::string>这样的结构,如何传递给int call(int,float ,std::string)这样的函数作为参数?如何根据函数的指针,知道这个函数的参数列表? 在后面,Lua注册C++,如果希望调用尽可能简单,可能需要这样...

2019-07-14 22:28:26 365 0

原创 Lua封装&C++实践(二)—— C++调用Lua函数的封装

在上篇博客中,记录了Lua与C/C++的基本交互,但是如果按照那样来使用的话,实在太麻烦了,所以我们开始进行封装。本篇博客主要记录C++调用Lua函数的封装。 封装目标 C++调用Lua,复杂的地方主要在于需要去理解Lua的堆栈,函数、参数都需要依次加入堆栈,结果也需要从堆栈里面取,Lua支持...

2019-07-08 00:14:50 515 0

原创 Lua封装&C++实践(一)——Lua和C/C++的基本交互

Lua 是一个小巧的脚本语言,它本身就是作为嵌入脚本而设计的,在目前所有脚本引擎中,Lua的速度是最快的。而且它的解释器非常轻量,其解释器不过200k(不同版本可能略有差异)。 Lua项目包含许多技术点,花些时间研究可以有不少收获,学到很多东西。包括与宿主语言的交互、内存管理、虚拟机实现、协程、...

2019-07-07 20:05:07 837 2

原创 C++ 笔记 —— 实现一个环形阻塞队列

实现原理 环形阻塞队列,顾名思义,首先,它是一个队列,然后,它应当是一个环形,并且它是会进行阻塞的。但是根据我们的常识,内存地址是用一个long long int来存储的,我们存储的数据的地址无法绕成一个环,所以我们想要成环的话,需要我们自己去处理。 如上图,相比环状实现的来说,数据在内存中的存...

2019-03-31 12:18:35 461 0

原创 MVP变换矩阵推导及C++实现

在进行图像处理时,经常会用到矩阵,尤其在游戏中,基本都会存在一个Camera的概念,实际上,这个Camera一般就是矩阵或者是对矩阵的封装。一个4x4矩阵,可以将平移、旋转、缩放等变换操作包含在内。但是为了便于理解与控制,这个最终的矩阵,往往是由一系列便于理解的参数来运算得出的。而Model-Vi...

2019-01-13 01:53:24 3978 2

原创 C++ 笔记——字符串自定义加密处理

根据惯例,先放定义。加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容。 加密算法非常多,常见的加密算法有MD5、AES、Base64、DES等等。但是此篇博客记录的加密算法和上述加密算法无关,主要记录的是按照个人喜好对字...

2018-12-31 15:41:23 3099 0

原创 Ubuntu 18.04 + CUDA 9.2 + cuDNN 7.1.4 + Caffe2 安装

安装Ubuntu 18.04 Ubuntu 18.04的安装参考官网步骤,很容易安装。我在安装的时候比较坎坷,拿到了一个有问题的U盘,写入ISO后,启动一直启动不了。 主要步骤如下: 1. 下载系统。 2. 下载Rufus工具,也可以是其他的,只要能刻录光盘就行。然后把下载的Ubuntu ...

2018-06-30 23:38:15 9423 7

原创 面向对象的程序设计读书笔记

程序开发中面向对象的一些相关的读书笔记。面向对象概念相关 面向对象的三大特性:继承、封装和多态。继承,共性放到父类,特性放到子类。封装,对象有一个明确的边界,声明公开,实现隐藏,实现的更改,对对象的使用没有影响。多态,子类的对象可以放到父类的引用中,子类的方法可以覆盖父类的公有非final、或者p...

2017-10-17 23:33:02 1669 0

原创 音视频及FFMpeg概念篇

音视频编解码概念音视频格式有很多种,我们所熟知的音频文件有wav、mp3等 ,视频格式有mp4、3gp、rmvb、avi、mov等等。这些格式并不是只是文件的后缀不同,而是文件中的内容有很大的不同,哪怕这个媒体文件播放起来我们看起来觉得它们是一模一样的。 另外,我们看到的电影或者视频片段,它往往...

2017-10-06 22:53:36 2175 0

原创 Android Camera增加自定义图像处理并录制MP4

在我的一篇博客Android Camera API/Camera2 API 相机预览及滤镜、贴纸等处理中,介绍了如何给相机增加滤镜贴纸的方法,也就是自定义图像处理。而另外一篇博客Android硬编码——音频编码、视频编码及音视频混合介绍了一种编码录制MP4的方法,虽然两者结合就能实现Camera增...

2017-10-03 14:19:28 3356 5

原创 Android利用硬解硬编和OpenGLES来高效的处理MP4视频

最近工作中遇到一个问题,就是要对视频增加视频特效,实现类似于抖音的效果,抖音的效果由其他同事实现,我的工作重心在视频的处理,特效的集成。按照之前的思路很快就实现了这个功能,但是实际应用到项目中时却遇到各种问题。于是就有了这篇博客。 遇到的问题 说是各种问题,特效方便的不管,我所遇到的视频处...

2017-09-10 20:16:12 10861 12

原创 STM32F103+RTT从零开始(二)——RTT系统中点亮LED

上一篇博客简单说了下如何使用Keil创建STM32F103的工程,并且完成了LED点亮,及让LED等闪烁的功能,那是诸多同学学习单片机的起手式。本篇博客继续上一篇博客的内容,依旧是点亮LED,不同的是,这次点亮LED等,是在RT-Thread操作系统中进行的。创建工程创建一个Keil工程,芯片依旧...

2017-08-27 01:53:32 10787 8

原创 STM32F103+RTT从零开始(一)——点亮LED

最近心血来潮,打算重新捡起老本行,结果发现很多都忘记了。干脆重新开始学习,并做个从零开始的笔记了。STM32系列MCUSTM32系列芯片包括F0/F1/F2/F3/F4/F7/L0/L1/L4/H7等系列芯片芯片。不同系列的芯片适用于不同的应用场景。 F0/L0基于ARM Cortex®-M0,...

2017-08-22 23:42:35 11653 7

原创 用树莓派改装电风扇及实现Android遥控

最近天气很热,我租的房子又没有空调,基本上风扇一开就是一晚上,结果经常起床后发现口干舌燥的。我觉得这肯定是因为整晚吹风扇搞的,不管是不是,反正我觉得就是了。不开风扇吧,热!开风扇吧,早上起来不舒服,怎么办呢?能不能让风扇吹一会停一会这样的吹呢?让手机来当遥控器来控制风扇?加上语音控制?我看了下我那...

2017-08-06 22:57:29 9896 58

原创 Android OpenGLES2.0(十八)——轻松搞定Blend颜色混合

Blend是OpenGL中的一个非常重要的部分,它可以让每个输出的源和目的颜色以多种方式组合在一起,以呈现出不同的效果,满足不同的需求。

2017-08-03 10:37:43 10531 6

原创 RGBA、YUV色彩格式及libyuv的使用

最近一段时间因为工作的需要,要使用到libyuv。因为之前写录制视频的时候,也要用到rgb转yuv,自己结合网上的资料做了个实现,记录了点笔记,现在索性一起整理下。常用的色彩格式常见的色彩格式主要分为两类,一类是RGBA系列,一类是YUV系列。RGBA系列首先就是rgba系列的格式,RGBA色彩主...

2017-07-29 20:53:47 20373 13

原创 AI:一个全新的时代

时间进入1956年,达特茅斯夏季会议召开,人工智能的概念正式被确定下来。至今,它已经有六十多岁了,几经起伏,却依然非常年轻,正在不断的蓬勃发展着。  以前以为人工智能就是《宝莱坞机器人之恋》的七弟、就是《机器人总动员》的瓦力和伊娃,就像小时候,总以为程序员就是在命令行模式下霹雳啪啦敲一敲,三分钟就...

2017-07-27 22:51:01 2893 1

原创 让IjkPlayer支持插入自定义的GPU滤镜

最近因为工作的原因,需要提供一个将我们的AiyaEffectsSDK插入到IjkPlayer中的示例,就不得不好好看了下IjkPlayer的代码。在IjkPlayer中并没有提供设置自定义GPU滤镜的接口,所以最后只能自己动手,以求丰衣足食了。不得不说,Bilibili开源的这个IjkPlayer...

2017-07-15 15:58:33 5371 6

原创 打油诗——和代码的青春七年

车马停啸禁鸣笛,惊觉高考正当期。遥记七载前尘里,朝朝起舞在闻鸡。 寒窗苦读五千日,无谓旰食又宵衣。常叹双亲辛劳苦,学富五车累何惜。 命途波澜起二度,百万同台争高低。汗流浃背心忐忑,唯恐临考遇宕机。 有幸求学进江理,辞别湖广入江西。军训完毕见教授,始信至此上大一。 初识编程坠云雾,雾里看花亦...

2017-06-25 15:09:27 5939 51

原创 GLSurfaceView的简单分析及巧妙借用

学习在Android中使用OpenGLES,就不得不提到一个控件:GLSurfaceView。本篇博客将介绍GLSurfaceView的基本使用、GLSurfaceView的源码的简单分析,以及使用GLSurfaceView渲染图像到SurfaceView/TextureView或者PBuffer...

2017-06-25 14:59:39 18893 5

原创 CMake入门笔记

什么是CMakeCMake CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。只是 CMake 的组态档取名为 CMakeLi...

2017-06-12 15:39:02 2031 2

原创 和代码的青春七年

前两天,看到CSDN官方博客上的征文《从高考到程序员》。一瞬间,从高考到现在,七年的光景涌现在心头。从离家进入江西理工,到现在流落深圳。从对编程一无所知,到现在成为一个“资深”老码农。也从一个学生,成为一个社会工作者。无论身份还是心态,都发生巨大的变化。七年后的今天,没变的,可能就是一如既往的贫穷...

2017-06-11 19:06:12 3323 22

原创 Android OpenGLES2.0(十七)——球形天空盒VR效果实现

在3D游戏中通常都会用到天空盒,在3D引擎中也一般会存在天空盒组件,让开发者可以直接使用。那么天空盒是什么?天空盒又是如何实现的呢?本篇博客主要介绍如何在Android中利用OpenGLES绘制一个天空盒,并实现VR效果。天空盒、天空穹、天空球和VR虽然大多数人知道这些东西是啥,但是我觉得我还是有...

2017-05-29 17:44:23 14198 24

原创 Android FFMpeg(三)——使用FFMpeg解码h264、aac

前面博客记录了FFMpeg的编译,编译后我们可以拿到FFMpeg的动态库和静态库,拿到这些库文件后,通常我们需要做个简单的封装才能在Android上层愉快的使用。本篇博客的是从拿到FFMpeg静态库到使用FFMpeg解码视频的过程,记录尽可能的详尽,可能会让博客的篇幅略长。准备工作库文件本篇博客的...

2017-04-13 21:02:51 7186 4

原创 Win10&Linux下Apache2+PHP7+Mysql安装以及创建Laravel项目

Win10开启开发者选项,可以安装Linux子系统,系统为:Ubuntu 14.04.5 LTS。进入cmd命令行,输入bash命令,可进入Linux bash(第一次需要安装)。进入bash后,和在真正的Ubuntu 14.04.5系统的bash中就基本没什么区别了。安装步骤更新源sudo ap...

2017-03-30 02:28:00 2646 0

原创 Android Camera API/Camera2 API 相机预览及滤镜、贴纸等处理

Android Lollipop 增加了Camera2 API,并将原来的Camera API标记为废弃了。相对原来的Camera API来说,Camera2是重新定义的相机 API,也重构了相机 API 的架构。初看之下,可能会感觉Camera2使用起来比Camera要复杂,然而使用过后,你也许...

2017-03-14 23:22:20 20785 29

原创 Android OpenGLES2.0(十六)——3D模型贴图及光照处理(obj+mtl)

在Android OpenGLES2.0(十四)——Obj格式3D模型加载中实现了Obj格式的3D模型的加载,加载的是一个没有贴图,没有光照处理的帽子,为了呈现出立体效果,“手动”加了光照,拥有贴图的纹理及光照又该怎么加载呢?模型文件本篇博客例子中加载的是一个卡通形象皮卡丘,资源是在网上随便找的一...

2017-02-27 22:53:41 10620 10

原创 Android OpenGLES2.0(十五)——利用EGL后台处理图像

在Android OpenGLES2.0(十二)——FBO离屏渲染中,记录了采用FBO进行离屏渲染的方式来进行后台处理图像,但是在使用时,示例中还是用到了GLSurfaceView控件来提供GL环境。怎样完全抛开GLSurfaceView来进行图像处理呢?OpenGLES和EGL OpenGL...

2017-02-20 10:36:27 11444 10

原创 Android FFMPeg(二)——FFMpeg+libx264编译

前面博客Android FFMpeg(一)——编译FFmpeg中记录了在windows中利用MinGW和Msys编译FFMpeg的步骤。FFMpeg中带有264的解码,没有264的编码,需要编码功能的话,可以使用x264这个库。准备编译环境win10 中内置了Linux子系统,使用win10的话,...

2017-02-18 18:02:13 3729 2

原创 Android视频编码——RGBA、RGB、BGRA、BGR转YUV420P、YUV420SP

做视频处理一般都会涉及到RGBA与YUV颜色格式的相互转换,理论知识就不多说了,直接贴出转换公式来: Y’= 0.299*R’ + 0.587*G’ + 0.114*B’ U’= -0.147*R’ - 0.289*G’ + 0.436*B’ = 0.492*(B’- Y’) V’...

2017-01-24 13:47:04 7600 14

原创 Android OpenGLES2.0(十四)——Obj格式3D模型加载

在博主《OpenGLES系列》文章中,最开始的几篇讲的就是OpenGL世界中各种形体的构建,但是那些形体都是规则的简单形体,遇到复杂的形体,比如说一个人、一朵花,怎么办呢?自然是通过其他工具类似于Maya、3DMax等3D建模工具,做好模型导出来,然后用OpenGLES加载导出的模型文件。模型的加...

2017-01-10 02:11:19 14934 19

原创 Android硬编码——音频编码、视频编码及音视频混合

视频编解码对许多Android程序员来说都是Android中比较难的一个知识点。在Android 4.1以前,Android并没有提供硬编硬解的API,所以之前基本上都是采用FFMpeg来做视频软件编解码的,现在FFMpeg在Android的编解码上依旧广泛应用。本篇博客主要讲到的是利用Andro...

2017-01-04 15:22:54 15809 21

原创 Android OpenGLES2.0(十三)——流畅的播放逐帧动画

在当前很多直播应用中,拥有给主播送礼物的功能,当用户点击赠送礼物后,视频界面上会出现比较炫酷的礼物特效。这些特效,有的是用粒子效果做成的,但是更多的时用播放逐帧动画实现的。在本篇博客中的动画素材,就是从花椒直播中“借”出来的,只做学习交流用,应该不构成侵权吧?那么如何实现这种动画效果呢? 逐帧动...

2016-12-25 22:35:23 10461 20

原创 Android OpenGLES2.0(十二)——FBO离屏渲染

之前的博客我们所做的示例都是直接渲染到屏幕上的,如果我们并不需要渲染到屏幕上,也就是离屏渲染,该怎么做呢?FBO离屏渲染是一个很好的选择。在这篇博客中,我们将以渲染摄像头数据为例,使用FBO进行离屏渲染。 关于FBO离屏渲染 所谓的FBO就是Frame Buffer Object。之前我们...

2016-12-24 18:36:06 23978 19

原创 用RecyclerView实现移动应用中常见的列表菜单

在很多地方我们都会用到纵向列表样式的菜单,比如微信首页的我、发现页面,微博的首页的我页面,QQ的动态页面等等等等,大多数的应用中都会存在这样的页面。我们怎样实现这种页面比较好呢? 布局方案 完成这样的页面,常见的布局方案有: 1. 用ScrollView+LinearLayout很容易...

2016-12-19 00:38:25 2206 5

原创 Android FFMpeg(一)——编译FFmpeg

学习FFMpeg,推荐雷神的博客。天妒英才,为雷神叹息。第一步 下载FFmpeg(F F m peg)。 第二步 解压FFmpeg。 第三步 windows安装MinGW和Msys。也许还要yasm,名字改为yasm.exe放到C:\WINDOWS\system32中。Linux下就不用这...

2016-12-05 23:04:24 3090 1

原创 Android OpenGLES2.0(十一)——利用OpenGLES做Camera预览

学习FFMpeg,推荐雷神的博客。天妒英才,为雷神叹息。第一步 下载FFmpeg(F F m peg)。 第二步 解压FFmpeg。 第三步 windows安装MinGW和Msys。也许还要yasm,名字改为yasm.exe放到C:\WINDOWS\system32中。Linux下就不用这...

2016-11-26 20:09:19 15860 11

原创 Android OpenGLES2.0(十)——OpenGL中的平移、旋转、缩放

在前面的博客中,所有的例子都是一个对象,类似绘制圆锥绘制圆柱,我们都是传入一个参数,然后去控制那个圆面的位置,如果我们要绘制几个个正方形,它的位置、大小、方向都是不相同的,按照那种方式该多麻烦啊。所以我们需要更好的办法——矩阵变换。什么是矩阵其实在之前的博客中,我们也基本都用到了矩阵,投影的设置,...

2016-11-14 01:27:09 13694 8

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