自定义博客皮肤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 opengles 法线贴图(Normal Mapping)

在褶皱的画面上做画面替换,比如一件衣服替换衣服的花纹,再比如旗子上替换图案,由于不知道用的是什么计算就搜索相关的东西,原来这种技术叫凹凸映射,有两种实现方法高度纹理(height map)和法线纹理(normal map),原理方面我也不太懂,所以就不说了,有兴趣可以自己搜索相关内容,我在网上找到...

2020-05-19 10:28:40 43 0

原创 Exoplayer多视频切换和HLS多码率手动切换

多视频切换说白点就是上一集下一集功能,在网上找了一下发现几篇都是要改源代码的,这么强大的播放器怎么会没有这个功能呢,就换了关键字找,最后找到别人说可以用ConcatenatingMediaSource实现,然后又找具体代码,最后在GitHub里找到例子AesExoPlayer,后来翻了下Exopl...

2020-04-01 18:00:22 291 0

原创 Android artoolkitx渲染3D模型

artoolkitx的demo只是简单的渲染了一个方块,想要复制的3D模型要自己想办法,最初想用assimp的,可是太复杂了,我自己还搞不懂,就找其他的,发现了个纯java的3D引擎rajawali,嗯还是有点复杂要仔细研究,最后找到个简单的android-3D-model-viewer,然后下载...

2020-03-06 15:00:58 231 21

原创 使用Android Studio+CMakeLists编译artoolkitx

公司要预研AR方面的技术,就试试研究artoolkit,网上都是关于编译artoolkit5的例子,artoolkit5已经很久没更新了,而artoolkitx是最新版的,可是没找到关于编译artoolkitx的方法,就试着自己编译试试 先说环境:Windows10,Android Studio...

2020-03-04 16:05:17 167 0

原创 使用Android Studio+CMakeLists编译assimp

先说环境win10,android studio3.5.3,ndk-r18b,assimp-4.1.0 为啥是assimp-4.1.0,因为最开始去网上找例子的时候是4.1.0版本,就没改了,我想5.0.1也差不多,只是我只编译成功了arm64-v8a的,其他的编译失败了,也不知道是不是参数不对...

2020-02-24 17:00:41 166 0

原创 exoplayer播放rtmp流

exoplayer一直在更新,已经和以前的版本不太一样了,而且我这边需要播放rtmp流所以就又重新搞了下exoplayer 如果只是引用的话就直接 implementation 'com.google.android.exoplayer:exoplayer:2.X.X' ...

2019-12-26 16:44:31 401 0

原创 opengl 关于png带黑边的原因

网上有很多关于png带黑边的解决方法就是混合模式改成glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);可是没有人说为啥会出现这个问题,然后我就被坑死了。 公司里有专门做图片的部门,然后他们用的软件是不一样的,一些人做出来的png用glBlendFunc(GL...

2019-11-11 10:58:34 287 1

原创 android.support项目升迁到androidx一些控件不知道怎么引用如TabLayout

升级了一下android studio,发现新建项目引用的是androidx,就试着把旧项目也升迁到androidx,升迁遇到的坑网上有很多跟着改就好了,主要是一些好用的控件不知道怎么引用,比如TabLayout,原来是android.support.design.widget.TabLayout...

2019-09-12 10:37:56 509 1

原创 android 用opengles实现几个简单的ps叠加方法和简单的滤镜再转成bitmap

最近修改滤镜,发现这篇文章终于把photoshop图层叠加模式讲清楚了 ,就想着实现这篇文章的效果,就做了个小demo 2019/09/04更新 增加了把各种滤镜转bitmap的方法 至于效果对不对我也不知道,因为我没装ps就算装了我也不会用 那篇文章的最后两个没有实现,收缩和补偿值不...

2019-08-28 15:58:15 218 0

原创 android 读取局域网共享文件和播放局域网共享视频

这个功能也没啥用,只是稍微研究了一下,最初研究的原因是想播放局域网内共享的视频,虽然成功了,但是现在只能播放几M的小视频 主要参考这篇文章Android 冷知识】利用SMB协议远程查看电脑文件或者其他存储设备,这篇文章有些地方写的不清不楚,经过摸索才简单的实现了 首先引入jcifs.jar,j...

2019-08-14 17:21:15 1018 0

原创 android opengl 纹理压缩 使用带透明通道的etc1

etc1网上资料很多,而带透明通道,也就是alpha通道的方法其实就是mask抠图,先看未处理时的纹理样子 再来看处理完的样子 带透明通道的etc1其实就是高度加了一倍,在下面加上一个mask来进行抠图,根据这个原理jpg我们也可以自己加上透明通道 说完原理来说代码 关于etc1的...

2019-07-16 11:05:20 383 0

原创 Android opengles 动态调节高斯模糊

高斯模糊网上例子很多,可是找了一下发现都是没有动态计算权重矩阵数组的,基本是把权重矩阵写死了 公式我就不说了,网上很多,只是没有发现权重矩阵的计算代码,根据网上的公式的推导代码 float a = (float) ((1.0f / 2.0f * Math.PI * Math.pow(sigm...

2019-06-13 17:55:07 238 0

原创 Android opengles 传数组给shader着色器

最近在研究高斯模糊,有用到传数组给着色器这个功能就记录一下 先贴fragment_shader.glsl代码 uniform highp float vt[4]; void main() { gl_FragColor = vec4(vt[0],vt[1],vt[2],vt[3]); ...

2019-06-12 10:57:37 371 0

原创 android glide4.+ 线程内同步下载图片

今天碰到一个功能需要用glide在线程内进行同步下载图片再进行操作,记录一下 Thread thread = new Thread(){ @Override public void run() { super.ru...

2019-06-04 14:32:40 1285 0

原创 android TabLayout自动轮播

TabLayout和单选框一样只能选中一个,有时候有需求就是自动轮播,自动切换,代码很简单 tabLayout.getTabAt(index).select(); 写个定时自动调用这行代码,index代表第几个 这样就不用那么麻烦的去写ViewPager了,跟点击效果一样的 ...

2019-05-21 18:07:14 171 0

原创 图片转svg

一个工具网站都屏蔽,啥毛病? 最近试了挺多工具和网站把图片转svg,有些android studio用不了,有些太麻烦了,还是www.vectorizer.io好用,方便简单,转换的效果也好,简单记录一些 ...

2019-05-20 17:53:08 1983 0

原创 android TabLayout 的item设置间隔,设置下标线的圆角和长度

最近把appcompat-v7升级到28.0.0,发现TabLayout多了几个属性,就试了试,随便做下记录 TabLayout的item都是有默认间隔的就算修改tabPaddingStart和tabPaddingEnd也没有效果,要先设置tabMaxWidth和tabMinWidth才可以设置t...

2019-05-17 14:22:18 1044 0

原创 Android使用MediaCodec和OpenGL对多段视频画面进行裁剪和拼接

太久没写博客了,由于工作,过年还有孩子出生搞得自己焦头烂额,现在有些时间了就搞点东西。发现浏览量突破10万了,也是挺高兴的,虽然很多东西写的不好,可也看到了自己的进步,也是前年到现在的累积。刚开始我只是学习视频解码,渲染和视频编码,慢慢的也开始搞音频了,本来没想过搞视频编辑这一块的,慢慢的做着做着...

2019-03-22 14:19:19 1390 0

原创 android 通过egl实现Service运行Camera

所谓的后台可以是在Activity里打开Camera而不显示画面,也可以在Service内开启Camera,我主要写后者 Camera的开启必须要调用setPreviewTexture或setPreviewDisplay,二选一,所以想要在后台打开Camera就需要一个没有画面的SurfaceTe...

2018-12-27 15:15:57 283 2

原创 android opengl es 实现色调H,饱和度S,亮度L滤镜

在opengl es的glsl中把rgb转hsl或转hsv方法在网上很多,一搜一大把,找过来试了试,刚开始很头疼,色调H,饱和度S,亮度L最大值多少?叠加方法是加减还是乘除一头雾水。 通过这篇文章RGB颜色空间、色调、饱和度、亮度、HSV颜色空间详解,我有了大概的了解,然后就是在代码里一个一个的...

2018-11-27 16:03:23 749 0

原创 android 使用ImageReader+共享EGLContext把opengles渲染的图像转bitmap

使用ImageReader把opengles渲染的图像转bitmap以前也实现了,最近学了glRenderbufferStorageMultisample抗锯齿,就想结合起来看看,这是效果 感觉glRenderbufferStorageMultisample的抗锯齿效果也不咋样,是不是这样用...

2018-11-09 16:24:35 1104 0

原创 android opengles 抗锯齿

抗锯齿,对opengles来说很简单,只要在配置egl环境的时候添加两行代码就搞定了 int confAttr[] = { EGL14.EGL_RED_SIZE, 8, EGL14.EGL_GREEN_SIZE, 8, EGL14.EGL_BLU...

2018-11-08 15:02:53 1007 0

原创 android 硬解码用opengles3.0渲染视频

想着以后可能会遇到用opengles3.0来处理视频就想了解一下,结果发现网上没有多少这方面的东西,然后就自己摸索了 先来说说java端的写法,我这篇就是用java端opengles2.0写的android 简单的exoplayer全景播放器,然后我想改成3.0的,很简单,直接把GLES20改成...

2018-11-06 10:00:50 754 1

原创 android opengles2.0 硬解码时出现bindTextureImage: clearing GL error: 0x502

做硬解码用opengles2.0显示的时候总是出现这个提示,为什么出现完全没有头绪,直到我写新项目发现没有这个提示,然后对比代码发现错误原因 硬解码要先生成一个GLES11Ext.GL_TEXTURE_EXTERNAL_OES的纹理,再由这个纹理生成SurfaceTexture,通过Surfac...

2018-11-05 17:35:26 3107 2

原创 android 使用selector+自定义view实现图片按钮点击放大缩小功能

先看效果,点击放大的 点击缩小 我看了下网上都是用onTouchEvent来实现的,我尽量不想写onTouchEvent内的代码,因为如果遇到手势冲突很折磨人,所以我就用selector里的state_pressed配合view的onDraw来实现这个功能 看过onDraw源码都知道,...

2018-11-05 13:23:14 956 0

原创 android opengles 实现翻牌效果

前一阵子通过android.graphics.Camera实现翻牌效果,看源码知道是3x3的矩阵,我就想opengles也可以实现,然后就开始动手了 首先设置初始矩阵 Matrix.perspectiveM(projectionMatrix, 0, 90f, 1, 1, 50); Matri...

2018-11-02 16:50:22 756 0

原创 android 简单的exoplayer全景播放器

全景播放器网上一搜也是一堆一堆的,还有google推出的vrsdk,所以也没啥好说的,就简单记录一下 实现全景主要用到的还是opengles,只要用的开源播放器有setSurface(Surface surface)这个函数,就可以不改播放器源码实现 原理很简单只要通过opengles生成个纹...

2018-11-02 14:54:56 631 5

原创 android 将opengles渲染线程嵌入到exoplayer解码线程内

根据项目需要实现这个功能,所以又开始改exoplayer源码了。我以前也改过修改ExoPlayer源码,获取帧时间,现在我要在这个的基础上进行修改 修改VideoTimeListener.java,添加新的回调函数 public interface VideoTimeListener { ...

2018-11-01 17:59:10 306 0

原创 android 翻牌效果

翻牌效果网上很多,一搜一大把,有各种实现方法,我就记录下我觉得简单效果好的方法,一个是属性动画ObjectAnimator实现,还有一个是android.graphics.Camera(不是拍照录像的Camera),我比较在意的是用Camera这个类实现的3d效果 网上的Camera例子基本都是用...

2018-10-25 14:44:51 1016 0

原创 android 简单的圆弧

最近项目完成就开始搞一些有用没用的东西,以前面试的时候有人问我那种圆弧效果怎么做,还问我翻牌效果,我只看过,没有做过,现在有空了,而且想到可能会用到就做个简单的 圆弧很简单,自定义个View,创建个Paint,设置 arcPaint.setStyle(Paint.Style.STROKE)再设置圆...

2018-10-24 15:00:46 503 0

原创 android 使用MediaCodec和lamemp3对2段音频混音

看网上混音的例子挺多的,我也不啰嗦了,就简单说一下,混音同样要统一采样率,比特率和声道,还多一个统一时长 网上的例子都是用录音加背景音乐进行混音,这样很简单只要用背景音乐的采样率,比特率,声道和时长来进行录音就ok了,所以我也就不搞了 我这个功能其实挺鸡肋的,我也就是瞎搞搞,举一反三嘛 看网上混音...

2018-10-23 15:06:00 347 0

原创 android 使用MediaCodec和lamemp3对多段音频进行截取和拼接

截取很简单,只要用MediaCodec进行解码解出pcm格式的数据,再把pcm数据用MediaCodec进行编码或者用其他第三方的进行编码 拼接就比较麻烦,音频的音质会受到采样率,比特率和声道的影响,所以理想的状态是这三个属性要一样进行拼接才能保证音质 举个栗子,a和b是两首采样率,比特率和声道都...

2018-10-18 10:41:28 679 0

原创 android ByteBuffer.allocateDirect()造成OutOfMemoryError

最近用一个开源的控件,碰到ByteBuffer.allocateDirect()的时候OutOfMemoryError的问题,偶尔调用没问题,如果频繁的调用这个控件就会发生OutOfMemoryError,造成OutOfMemoryError的原因很简单ByteBuffer.allocateDir...

2018-10-11 13:18:33 490 0

原创 android studio AAPT2 error: check logs for details 错误

一直有这个错误,最简单的方法是在gradle.properties内加 android.enableAapt2=false 可是这个治标不治本,最近在打包中就出现这个错误,原因是图片是jpg的但是文件名是png的,可是却只有这个提示,根本找不到打包错误的原因,去网上找了,说gradle改成没...

2018-09-29 14:40:19 210 0

原创 android 通过MediaCodec将视频转gif

将视频转gif,可又不想用ffmpeg,就开始研究了,起先通过MediaMetadataRetriever将指定时间的帧转成bitmap然后通过LZW算法转成gif,也不知道这个算法是谁的,就拿来用了,缺点和明显,费时间 MediaMetadataRetriever media = new M...

2018-09-13 16:04:57 1449 5

原创 android studio git简单的版本控制还原

这几天简单的测试了android studio git的还原,还原分单文件还原和整个项目还原,单文件还原挺简单的,只要选择要还原的文件,右键->git->Show History 选择要还原的版本Get 还原整个项目只要点击上图的Log,在要还原的版本上右键...

2018-09-10 11:08:32 920 0

原创 android studio 上传项目到github

一直没用git进行版本管理,因为公司用的是svn,今天试了试git,发现android studio有集成了git,我的android studio版本是3.0.1的,也不知道哪个版本开始集成的,好了废话不说了 先在android studio上File->Settings-&am...

2018-09-05 17:31:01 968 1

原创 android 简单的矩形裁剪框

前阵子做视频编辑功能,视频裁剪功能不太好用,就简单的修改了一下 正常模式是这样的 简单的添加了等比例裁剪 贴代码 public class CutView extends View { float downX; float downY; boolean i...

2018-09-05 10:01:09 893 1

原创 android jni 字符串与int,long,double互转

网上搜到的都是jint转int啊,jstring转string啊,因为自己有用到就记录一下 互转还是很简单的只要用到stdlib.h的atoi函数和stdio.h的sprintf函数 先字符串转int,long,double int number1 = atoi("123456&...

2018-08-28 10:32:44 1818 0

原创 opengl shader实现透视变换效果

想在手机上实现透视变换的效果,可是不想加opencv,所以只能找opengl的方法,经过不停的寻找终于让我找到了外国一个大神写的算法,写入代码,一运行 效果非常好,除了有锯齿,然后发现网页不知道什么时候被我关闭了,找了半天找不到了,算了如果有人发现请告诉我,谢谢 接下来贴代码 publ...

2018-08-27 18:00:57 1367 0

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