串联整个音视频录制流程,完成音视频的采集、编码、封包成 mp4 输出

音频采集:AudioRecord 视频采集:Camera预览回调YUV数据 编码:MediaCodec 合成封包MP4:MediaMuxer 首先确定几条线程处理任务 1.audioThread 音频采集和编码 2.videoThread 视频编码 3.muxerThread 合成 示例代码:...

2019-06-04 11:22:09

阅读数 1001

评论数 0

MediaCodec完成AAC文件硬解,5.0异步,AudioTrack播放,MediaExtractor获取音频

MediaCodec API,完成音频 AAC 硬编,5.0异步处理,AudioRecord录音 上一篇写了硬编,这一篇写下硬解,其实和硬编逻辑一样,代码还是Kotlin 取录音和编码都设置在子线程 采取的是边取录音边解码边播放 6.0注意动态权限问题 示例使用的5.0以上的API 编解码器的Me...

2019-05-23 18:11:02

阅读数 46

评论数 0

MediaCodec API,完成音频 AAC 硬编,5.0异步处理,AudioRecord录音

AAC硬件编码文章有几篇,但是都是同步实现,这里采用异步实现,代码Kotlin。 虽然代码是kotlin写的,但是思路上面的按照java能复制出来 最后我会把代码上传到github,可以查看完整过程,为了方便查看,所以代码都写在 Activity中 录音和编码都设置在子线程 采取的是边录制边编码边...

2019-05-23 11:14:53

阅读数 47

评论数 0

Android平台MediaExtractor和MediaMuxer学习,解析和封装MP4

本文代码示例采用的Kotlin语法,但是没什么高级特性 MediaExtractor:视频文件的提取器,能将视频和音频分离 MediaMuxer:音视频文件合成器,能将提取到的视频和音频合成新的视频 MediaFormat :提取器获取到的媒体格式类,保存了获取到的媒体的信息(媒体类型, 帧率等)...

2019-05-16 17:11:23

阅读数 37

评论数 0

对于Matrix中PreXXX和PostXXX的使用时机的理解

在自定义View的时候我们在绘制bitmap时候 canvas.drawBitmap(bitmap,Matrix,Paint) 用到了Matrix,也就是矩阵,网上有图,说明了这个矩阵影响的方式 1.Matrix矩阵各数值影响 第一行影响X轴,分别是scale缩放,skew错切,trans平移 ...

2019-04-24 15:37:19

阅读数 64

评论数 0

Android中 Canvas绘制图形,有时候不显示的一个可能原因

有时候,绘制图形,参数都设置的对,但是真机上就是不显示,很有可能就是需要我们关闭硬件加速,有三种方式 1.在Manifest的application中设置 <application android:name=".MyApplication" ...

2019-04-11 16:37:38

阅读数 134

评论数 0

Android中关于画布Skew,斜切操作的计算方式

Android中对于画布有多种操作,translate,rotate,scale,skew,前三个还比较好理解,就最后的斜切比较抽象,网上有介绍说是讲坐标轴旋转,但是寻找目标坐标还是麻烦,他的计算方式可以理解为 如果一个点p(x,y),对于skew(),他最终的坐标就会经过下面的转换,k为skew...

2019-04-10 17:41:59

阅读数 83

评论数 0

记关于处理Handler内存泄漏犯的一个错误

说到内存泄漏,可能首先就想到创建非静态Handler内部类,导致Handler持有外部Activity引用 class MyHandler extends Handler{ @Override public void handleMessage(Message msg) { } } ...

2019-03-21 11:01:59

阅读数 87

评论数 0

Gradle学习笔记--创建构建变体

1.构建类型(Build types) Android Studio生成的标准buildTypes块 android { buildTypes { release { minifyEnabled false proguardF...

2019-03-05 09:27:06

阅读数 196

评论数 0

Gralde学习笔记--提升构建速度和项目优化

这一节会介绍之前没提到的构建技巧和提示,包括 减少apk大小 加快构建速度 忽略Lint检查 使用Ant工具 改进app部署 1.减小apk文件大小(Reducing APK file size) 1.1 ProGuard ProGuard是一个java工具,不仅可以收缩代码,还能优化,混淆代...

2019-03-04 16:59:36

阅读数 145

评论数 0

Gradle中自定义String类型属性注意点

在build.gradle中有时候我们要的debug和release版本中获取定义统一变量的不同值,在定义String类型的时候要注意用“\”\“”,两个双引号和右斜杠,例如 BuildConfigField "String", "key&am...

2018-10-23 17:29:07

阅读数 312

评论数 0

RecyclerView学习--自定义ItemDecoration

RecyclerView无法像ListView直接设置分割线,但是提供了ItemDecoration类来设置,有一个实现类DividerItemDecoration提供了一个简单的分隔线,如果想自定义可以继承ItemDecoration,参考DividerItemDecoration来写。 1....

2018-10-10 17:07:26

阅读数 112

评论数 0

类加载的大概流程和特点

1.类加载的大概过程 如果类未被加载到内存,会经过加载,连接,初始化过程。提供java.lang.Class对象 2.类的连接 (1) 验证: 验证类是否有正确的内部结构,防止有人估计加入错误信息 (2) 准备: 为类变量分配内存,并设置默认值 (3) 解析: 将符号引用转化为直接引...

2018-09-07 09:52:57

阅读数 77

评论数 0

Android消息机制-Handler再学习

Handler消息机制,主要由4个类构成 1.Handler 发送和处理消息 2.Message 消息的载体 3.MessageQueue 存储消息的队列,实际他更像是单链表 4.Looper 消息循环,主要是取出MessageQueue中的Messag...

2018-08-16 17:09:49

阅读数 85

评论数 0

线程池学习及相对应的sdk中注释翻译

Android中有时候会用到很多线程去处理问题,但是开启多条线程很不明智,会有很大开销,这时候就可以用到线程池。 一.线程池的好处 1.服用线程,避免多次创建和关闭线程产生的开销 2.控制最大线程并发数量 二.Android中线程池的创建 在Android...

2018-08-08 15:50:56

阅读数 83

评论数 0

ListView中嵌套EditText造成ListView的子Item点击无响应问题简要分析

继上一篇处理ListView嵌套EditText出现的问题,有一个问题EditText使ListView的setOnItemClickListener回调失效,最新看了源码,得出了一些结论,如有错误欢迎指出,不需要看完整代码,看标记的最关键的就行。 1.我们来一步步看这个回调过程 ...

2018-06-05 18:07:25

阅读数 409

评论数 0

关于ListView中嵌套EditText,焦点及其他点击问题

之前项目做过这个类似的UI,处理起来也很麻烦,要求的效果是 1.EditText点击出现输入法,游标显示在最后,效果如图 2.编辑完内容后,收起键盘保存修改内容。 ListView的Item的XML文件 <?xml versi...

2018-06-05 17:25:54

阅读数 789

评论数 0

Android跨进程启动Service流程及常见问题

最近学习Android跨进程通信,使用到AIDL,参考着开发艺术探索,但是实践过程中也遇到一些问题,特记下流程和常见问题,使用工具Android Studio 1.服务端编写AIDL文件 点击new,创建AIDL接口文件 生成了IMyAidlInterface.aidl文件,文件名...

2018-05-09 16:44:31

阅读数 1987

评论数 0

Android7.0及以上下载后自动安装无法运行

在最近的项目中,用到了下载新版然后自动安装更新的功能,但是发现在7.0手机上无法正常安装,查阅资料,发现在android 7.0的行为变更中有说明,文件共享发生了变化(自动安装就是系统的安装程序调用本项目的文件,等同于在跨应用访问数据) 对于面向 Android 7.0 的应用,Androi...

2018-03-22 17:27:11

阅读数 1445

评论数 0

EditText无法显示跳动的游标

最近项目,登录界面输入发现EditText控件输入时候没有游标,找到一个解决方法,记录一下 在Xml文件中设置EditText属性 android:cursorVisible=”true” android:textCursorDrawable=”@drawab...

2018-02-06 10:03:13

阅读数 281

评论数 0

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