
音视频
文章平均质量分 84
JabamiLight
这个作者很懒,什么都没留下…
展开
-
Android简单实现嘴唇贴纸功能
大家新年快乐!!过年总是这么短暂,新年新气象,这篇文章本年年前准备发的,过年嘛,总会懒一些,哈哈哈哈。今天我们来简单实现一个嘴唇的贴纸功能,先看看效果。其实大部分APP的完整功能包含脸部,鼻子,眼镜等的完整渲染,不过原理都类似,我就只用一个嘴唇来抛砖引玉了。看这篇文章之前,需要了解NDK、OpenGL ES的基本知识。关于OpenGL ES 3.0的相机渲染相机采集并渲染画面有很多种方式,...原创 2019-02-12 11:06:23 · 2759 阅读 · 7 评论 -
简单移植dlib和opencv到Androd平台进行人脸检测
最近实在是忙于项目,太久都没有写博客了,结果一不小心竟然过了几个月了。既然有空就多写点东西,交流交流经验,总归是没有坏处的。之前一直想做一下人脸检测,网上一大堆SDK全是收费的,而且基本上都不是本地检测。后来总算找到了dlib来进行人脸识别,踩了不少坑之后,总算是集成了上去。但是官方的demo速度实在太慢,后面有空会去学习一些优化经验,这篇文章直接从编译开始讲起集成,并且使用官方demo以及机器...原创 2018-12-05 09:48:30 · 2389 阅读 · 3 评论 -
Android关于H.264的软编和硬编
第六章的最后一篇分析了,之前分析摄像头预览画面的流程https://blog.youkuaiyun.com/a568478312/article/details/80725180。这里主要就是分析编码方面的核心代码。软编创建编码器,并开启编码和下载线程。我们在得到相机纹理,并且经过一系列的处理之后,绘制到屏幕上。并且将最终处理后的纹理id以及EGLContext传入编码器,这样通过共享EGLC...原创 2018-07-12 21:18:20 · 3203 阅读 · 1 评论 -
ARM NEON指令集总结
ARM的NEON是类似于X86的SSE2的一种优化的指令集,主要就是为了实现SIMD全称Single Instruction Multiple Data,单指令多数据流,能够复制多个操作数,并把它们打包在大型寄存器的一组指令集。简单来说就是处理一些算法的时候,可以并行处理,大大提高了效率。在Android手机上大部分都是ARM架构的,我们开启NEON后就可以使用这些指令集了,当然可以使用汇编,...原创 2018-07-11 14:29:28 · 19727 阅读 · 0 评论 -
Android OpenGL ES 3.0 Pixel Buffer Object使用
关于PBO,找了很多资料,然而google了很久,大部分的PBO资料都和这个类似https://blog.youkuaiyun.com/panda1234lee/article/details/51546502 。在上传texture的过程中,我分别试了1、2、3个PBO来进行上传,然而效率并没有增加,反而下低了,有点无法理解。然而在读取数据时候,使用两个PBO是可以提高效率,所以总的来说还是有一定研究价值...原创 2018-07-04 00:49:58 · 2494 阅读 · 2 评论 -
Android端PCM编码AAC的软编和硬编
第六章的内容有点多,现在学习一下音视频的软编和硬编。使用libfdk_aac进行编码书上的源码是采用ffmpeg的api进行编码的,当然你也可单独编译libfdk_aac来进行编码。首先我们还是需要配置采样率,声道,码率等参数进行初始化。 接着我们探测输出文件,让ffmpeg自动根据文件名探测格式。 int ret; av_register_all(); avFor...原创 2018-06-24 00:59:37 · 3374 阅读 · 0 评论 -
Android采集并使用OpenGL ES预览摄像头画面
Android的Camera现在有新的api,但是要5.0之后才能用,书上的源码也是用老版本api,简单分析一下预览流程。为了篇幅部分中间的调用流程将会省略,只贴出核心代码。EGL环境初始化首先我们肯定是要初始化egl,Native层使用hanlder的形式来循环处理消息。void MVRecordingPreviewController::prepareEGLContext(ANat...原创 2018-06-18 22:03:57 · 2689 阅读 · 0 评论 -
Android使用AudioRecord录制pcm裸数据
第六章讲音视频的采集,首先是音频采集。Android录音可以采用MediaRecorder,这个API是比较上层的,直接可以输出通常的音频格式文件,但是相对的就失去了一些灵活性。AudioRecord可以直接录制PCM裸数据,当然也可以用OpenSL ES来进行录制,然而API过于繁琐,对于音频来说,audioRecord其实已经满足大部分需求了。话不多说,直接分析代码,书上的源码我用kotlin...原创 2018-06-17 22:54:40 · 3750 阅读 · 3 评论 -
Android使用ffmpeg+opengl+opensles实现播放器
终于到了第5章,前面已经学了音频和视频的渲染知识,这一章讲的是视频播放器的实现,记录一下看源码的一些要点。初始化1、同步模块整体初始化初始化一些参数,minBufferedDuration为0.5f,maxBufferedDuration为1.0f。在调用initMeta()之后变成0.5和0.8,最大的音视频偏差设置为了0.05。bool AVSynchronizer::in...原创 2018-06-10 17:18:27 · 2795 阅读 · 2 评论 -
Android OpenGL ES 帧缓冲FBO
平时我们都是渲染到的默认的屏幕缓冲,通过swapbuffer来渲染到屏幕上,相对的我们可以同样创建一个离屏的帧缓冲来渲染到纹理。创建一个fbo glGenFramebuffers(1,&frame); glBindFramebuffer(GL_FRAMEBUFFER,frame);fbo需要我们为他准备一个至少一个缓冲(颜色、深度或模板缓冲),我们通常使用的是...原创 2018-06-04 14:11:11 · 2532 阅读 · 0 评论 -
Android使用OpenGL ES 3.0实现随手指旋转3D立方体
OpenGL ES在做普通应用方面3D使用的不多,但有时候实现一些有趣的功能也是蛮不错的。画立方体的的demo网上已经很多了,这次我们就实现一个随手指旋转的立方体,这个demo基本可以了解各个坐标系转换矩阵的使用了。 先看一下最终效果:...原创 2018-06-02 17:47:49 · 6827 阅读 · 15 评论 -
对于OpenGL投影以及相机变换的一些理解
查了很多资料都有点想不明白投影到底干什么的,其实有时候不用想太多,以实际效果来做测试一下就明白了。正交投影首先我们图上先有一个立方体 float vertices[] = { //第一面 -0.5f, -0.5f, -0.5f, 0.0f, 0.0f, 0.5f, -0.5f, -0.5f, 1.0f, 0.0f, ...原创 2018-05-29 14:27:33 · 2732 阅读 · 0 评论 -
Android基于OpenGL ES 3.0的VBO,VAO,EBO的使用(NDK开发)
有过一点OpenGL开发经验的人就知道每次绘图之前都会绑定顶点数组,每次将一个顶点传到GPU进行绘制。但是从CPU传数据到GPU的效率并不高,所以我们就需要使用VBO顶点缓存对象来一次性传递多个顶点到GPU,而VAO是3.0以后的版本才有的功能,它允许我们保存对于顶点的配置信息,我们配置好之后就只需要绑定对应的VAO,然后直接绘制即可。索引缓冲对象EBO和VBO类似也就是保存下标的缓冲。 - ...原创 2018-05-27 16:16:21 · 1673 阅读 · 0 评论 -
Android使用OpenGL ES显示纹理(使用NDK开发)
第四章最后开始介绍使用OpenGL来显示一个2D纹理,其实做音视频2D基本满足绝大多数要求了,下面简单分析一下源码中的流程。EGL环境初始化首先我们需要在Java环境中初始化一个SurfaceView,然后在回调中我们传入surface。这里我将AssetsManager也传入Native,因为着色器的文件我是写在Assets中的,我们再Native层进行读取。Android Studio...原创 2018-05-23 22:02:53 · 3795 阅读 · 1 评论 -
Android端在native层初始化OpenGL ES环境流程
之前学习OpenGL的时候,基本上都是使用GLSurfaceView来初始化,然后调用OpenGL的API来进行绘制。然而找OpenGL的教程时,发现基本上的教程都是C,这就很尴尬了呀,Android平台虽然也封装了名字类似的Java 的API,但是总感觉怪怪的。大概看了一下GLSurfaceView的源码,其实就是继承SurfaceView,然后开启一个线程来初始化EGL环境,接着也是使用Ope...原创 2018-05-18 17:40:41 · 3831 阅读 · 0 评论 -
Andoird使用AudioTrack以及OpenSLES渲染音频
最近学习到了第四章,对于AudioTrack以及OpenSLES相当于又复习了一遍。这一章结合之前的ffmpeg解码来进行mp3文件的播放。主要的难点有linux多线程的同步,生产者消费者模型等等。如果对ffmpeg解码不熟悉的可以看https://blog.youkuaiyun.com/a568478312/article/details/80268498,这篇文章的重点在于api的使用以及多线程的控制。...原创 2018-05-17 17:35:09 · 3796 阅读 · 0 评论 -
Android使用ffmpeg导出pcm裸数据
其实之前很长一段时间都在研究音视频的知识,只是没有总结知识。后来太忙导致以前学的都忘了好多,最近买了音视频开发的书来系统学习,但是里头的部分代码是eclipse的,现在基本上不用eclipse开发了,所以我还是选择在Android Studio中进行实践,在此记录一下学习中的要点。代码均是参考https://github.com/zhanxiaokai,也就是该书的源码仓库。本文所用环境为Andr...原创 2018-05-10 17:37:25 · 1223 阅读 · 3 评论