5 苏1994

尚未进行身份认证

暂无相关简介

等级
TA的排名 9w+

MediaCodec解码aac

上一篇博文介绍了如何用MediaCodec进行aac编码,这篇介绍如何解码,在解码上要注意的点是解码时要一帧一帧的喂给解码器而且得带adts头,另外要将头一帧的两个特殊字节用来对解码器进行配置,解码出来就是pcm编码的音频数据了,可以直接将pcm数据写进AudioTrack进行播放。/** * @author zhangsutao * @file AudioDecoder * @brie

2016-08-25 21:41:18

MediaCodec编码aac

我们可以用AudioRecoder对音频进行采集,采集的音频是pcm编码的原始数据,通过MediaCodec编码成aac音频,这里要注意的是编码出来是aac裸流,是无法播放的,要播放的话必须在每一帧音频前加adts头,adts头包含音频数据的采样率,升到,帧长度等信息,必须有adts头才可以正确解码。还有就是编码时出来的第一帧是一个两个字节的数据,这个数据也是比较特殊的需要用来在解码时配置解码器,

2016-08-25 21:32:48

MediaCodec解码h264流

上一篇博文介绍了如何用MediaCodec进行h264编码,这篇介绍如何用MediaCodec进行h264解码,解码时要注意的点就是要一帧一帧的喂给解码器,编码器是一帧一帧出数据的,网上有些demo居然拿一个定长的数组取数据喂给编码器(奇怪的是他居然说可以),还有就是要将sps和pps配置给解码器。另外MediaCodec可以将解码后的数据直接输出到一个Surface显示出来,我就是用一个Surf

2016-08-25 21:24:21

MediaCodec硬编码成H264视频流

android提供了一个强大的编解码类MediaCodec,可以实现对视频数据的编解码,下面讲一下如何对原始视频数据硬编码成h264格式的流MediaCodec提供两种方式的输入,一种是将数据写入它的输入缓冲队列里,一种是让MediaCodec建立一个输入Surface,MediaCodec会自动从这个输入Surface中读取数据,因为我做的是录制屏幕的需求,所以我是使用一个Surfa

2016-08-25 21:10:30

OpenGL texture黑边问题

用OpenGL的粒子系统制作一个动态滤镜时发现纹理被绘制成下面这样的效果: 而我的原图是可以看到花瓣的周围都黑了一圈最后发现是混合模式的问题,之前采用的混合模式是GLES20.glEnable(GLES20.GL_BLEND);GLES20.glBlendFunc(GLES20.GL_SRC_ALPHA, GLES20.GL_ONE_MINUS_SRC_ALPHA);

2016-06-21 13:37:06

皮肤亮白白——美颜算法

找到第一份实习,老大给我的第一个任务是实现美颜功能,网上找了一大堆资料,总的来说美颜的实现的步骤是:1.用具有保边效果的滤波算法对图像进行模糊处理2.用肤色检测算法保护非皮肤区域3.将模糊后的图像和原图进行图像融合4.对融合后的图像进行锐化处理对于步骤一,该滤波算法可以选择双边滤波,导向滤波,表面模糊等,只要能保边缘就行,高斯模糊是不行的,色斑逗逗就是在这一步磨掉的哈哈

2016-04-07 19:42:32

Java中的枚举类

Java枚举类1 在java中枚举用enum关键字来声明,定义格式为enum size{Small,MIDDLE,LARGE,EXTRA

2016-03-26 19:12:18

Java对象初始化

最近刷面试题发现关于java 中new对象时构造函数,构造代码块等的调用顺序是常考点,下面的一些总结:请看下面的demo程序:public class Father { public static Variable a=new Variable(); public Variable b=new Variable(1); static{ System.out.p

2016-03-26 19:11:09

单例模式写法

1.懒汉,线程不安全public class Singleton { private static Singleton instance=null; private Singleton(){ } public static Singleton getInstance(){ if(instance==null) instance=new Singleton(); r

2016-03-05 17:45:48

Android内存优化—SparseArray和ArrayMap

在开发过程中,如果要使用键值对的方式来存储数据时,我们首先会想到的是HashMap,但了解HashMap的内部结构的话就知道,HashMap是比较消耗内存的,所以Android推出了SparseArray和ArrayMap来优化存储。让我们首先来看一下HashMap的存储结构,其实HashMap内部是一个哈希表,而且采用分离链表法来解决哈希冲突的问题,如下图另外HashMa

2016-03-05 15:46:20

Application类使用笔记

Application是android app中的一个组件,当android程序启动时系统会创建一个Application对象。android系统会为每一个app默认创建一个applicaiton而且只有一个applicaiton,所以applicaiton是单例的。通常我们不需要自己定义application,若你要Applicaiton中部署一些全局的东西或者为了方便的获得Context,那么

2016-03-05 14:38:16

Http协议学习笔记

Http(超文本传输协议)是Web服务器和客户端之间传输信息所用的协议,它运行在Tcp上。  在早期的Http1.0中,Tcp连接建立之后浏览器只发送一个请求,之后一个响应消息被发回来,在然后TCP连接就被释放了。但那是Web页面只包含Html文本,因此这样设计也够用,但后来Web页面发展成有大量图片以及其他精美的东西,这样的设计就导致了效率低下。为解决Http1.0效率低的问题,Http

2016-03-01 22:50:54

自定义布局之宽高比布局的实现

最近在项目中遇到一个屏幕适配的问题,在显示图片时我在布局中宽度和高度都设置了固定的dp值,但当app运行在一些屏幕比较宽的手机上时,会出现图片宽高比不对情况,因为宽屏的手机横向的像素密度比较大,为此在网上找到一个解决方案是,定义一个可以根据图片本身宽高比来设置控件宽高的布局。实现如下首先声明两个属性,一个是picRatio表示图片的宽高比,一个是relative表示要根据宽度按比例确定高度,还

2016-02-29 09:07:08

json解析之gson解析

我们知道在json中的两个基本结构是数组和对象,数组以[]括起来,数组里的值可以是数字、字符串、数组、对象几种;对象以{}括起来,对象中的数据是以键值对的形式出现的,键名就是属性名,键值就是属性值,属性值的类型可以是 数字、字符串、数组、对象几种。如果解析的json是一个对象,那么我们建一个这样的类并以键名作为属性名类型为属性值类型。如果属性值是一个数组,那就建立一个List属性,例如下面

2016-02-29 08:07:41

两张图让你看懂事件派发机制

首先是ViewGroup的事件派发下面是View的事件派发机制

2016-02-28 00:24:10

Andorid 内容观察者的使用

ContentObserver的作用是监听特定uri的数据库的变化,从而可以及时的对数据进行处理用法:你需要注册内容观察者,调用如下代码: public final void registerContentObserver(Uri uri, boolean notifyForDescendents, ContentObserver observer)当你不需要监听内容时,调用

2016-02-26 22:00:17

程序锁的实现

许多安全软件都提供了程序锁服务,打开加锁的程序时必须正确输入密码才能够进入程序,那么如何实现程序锁呢?程序锁基本原理就是监控Activity的任务栈,核心方法如下:private void appLock() { // TODO Auto-generated method stub new Thread(new Runnable(){ @Override

2016-02-26 20:50:07

SurfaceView原理与使用

SurfaceView内嵌了一个专门用于绘制的surface,你可以控制它的大小。他与普通的View的最大的不同之处在于,它可以在非ui线程中绘制图像。因此用SurfaceView绘制图形不用考虑主线程过于繁忙而无法处理其他东西(ANR)的问题,从而可以获得更高的帧率,降低主线程的负担。用法:首先继承SurfaceView并实现SurfaceHolder.Callback接

2016-02-23 15:48:01

android屏幕适配

1 .设备像素适配单位介绍:px,pt,dp,sp,dpidpi:像素密度,它指的是屏幕每英寸所包含的像素数,它的算法是:屏幕对角线上的像素数量/屏幕对角线长(英寸)例如:手机分辨率是320*480,屏幕宽是2英寸,长3英寸,那么用勾股定理算出对角线的像素数量和长,最后结果是160dpipx:是像素的意思,即屏幕中可以显示的最小元素单元。pt:是磅数的意思,一磅等于1/72英寸

2016-01-05 10:15:07

Android性能优化----图片三级缓存

当我们在app中加载大量的图片时,稍有不注意就容易出现OOM异常,为了避免出现这样的问题并保证好的用户的体验,做好缓存是非常重要,下面介绍如何为图片做三级缓存,所谓三级缓存是指在文件和内存中都做缓存,所需的数据首先从内存中做的缓存中取,当内存中没有缓存时再从文件中的缓存取,当文件中的缓存也没有时,就通过网络访问服务器取并在取到数据后,在内存和文件中都做一个缓存。在内存中的缓存我们使用LruCa

2016-01-03 19:47:17

查看更多

勋章 我的勋章
    暂无奖章