首页
学习
活动
专区
工具
TVP
发布

曾大稳的博客

专栏作者
68
文章
102899
阅读量
14
订阅数
Android使用libRtmp直播推流
具体查看demo: https://github.com/ChinaZeng/RtmpLivePushDemo
曾大稳
2020-01-20
4.7K0
Android配置EGL环境C++版
android搭建opengles 的egl环境之前使用java已经写过,但是一般实际开发opengles的相关代码都在native层,因为native的话效率会比java高很多,步骤都是一致的,只是换一种语言写而已。之前使用java写的opengles egl环境搭建点击下面链接: https://www.jianshu.com/p/ce3496ab9e02
曾大稳
2020-01-20
1.4K0
Android集成libRtmp
librtmp下载: http://rtmpdump.mplayerhq.hu/download/ 拷贝相关文件到cpp里面 cmake配置cmake_minimum_required(VE
曾大稳
2020-01-20
1K0
MediaCodec录制音视频并将合成为一个文件
音频录制 相关参考 MediaCodec硬编码pcm2aac 主要分为以下几步骤:
曾大稳
2020-01-20
2.1K0
Android setContentView()源码流程分析
我们在Activity创建的时候,都用调用setContentView()函数来设置界面,下面我们通过源码来分析setContentView()的流程。 我们先看Activity里面的setContentView进去查看:
曾大稳
2018-09-11
8670
retrofit 源码分析
loadServiceMethod: 拿到对应的解析器,根据注解解析方法的返回类型,方法参数,网络请求的一系列参数 封装成一个对象
曾大稳
2018-09-11
8750
Android自定义GLSurfaceView
当我们需要把同一个场景渲染到不同的Surface上时,此时系统GLSurfaceView 就不能满足需求了,所以我们需要自己创建EGL环境来实现渲染操作。 注意: OpenGL整体是一个状态机,通过改变状态就能改变后续的渲染方式,而 EGLContext(EgL上下文)就保存有所有状态,因此可以通过共享EGLContext 来实现同一场景渲染到不同的Surface上。
曾大稳
2018-09-11
1.6K0
Android OpenGLES 绘制三角形 ,四边形
OpenGL ES Shader的三种变量类型uniform,attribute和varying
曾大稳
2018-09-11
9300
队列(Queue)
看看队列在Android里面的使用 Handle消息队列 使用Handle的时候都要使用Looper.loop()
曾大稳
2018-09-11
8070
手写 Parcelable 序列化和反序列化的具体过程
binder 和 socket 通信的区别有哪些 : binder 共享内存,Soket需要copy内存 Socket 远程,本地低速(zygote) Serializable 和 Parcelable 之间的区别: (io流,共享内存) Parcelable 序列化和反序列化的具体过程 Parcel.kt package zzw.com.testparcel public class Parcel { companion object { // Used
曾大稳
2018-09-11
8240
Android aidl流程简单分析
我们通过写一个从服务端(另外一个进程)获取用户名和密码作为demo来进行源码讲解。
曾大稳
2018-09-11
5180
jni基础
JNI 的一般开发流程 1 定义好本地的 native 方法 2 javah 命令生成 .h 头文件 3 拷贝 xxx.h、jni_md.h、jni.h 到 VS 的工程目录并添加依赖进来 4 实现我们头文件中的 native 方法 5 生成 dll 动态,java 引入 dll 动态库运行即可 生成的 .h 文件参数详解 /* DO NOT EDIT THIS FILE - it is machine generated */ #include "jni.h"// "" 引入自己工程的头文件 <>
曾大稳
2018-09-11
6950
ffmpeg android视频解码
要解码,我们需要获取解码器AVCodec,解码器我们需要通过codec_id获取,codec_id我们需要通过AVStream获取,AVStream我们需要通过AVCodecContext获取,AVCodecContext我们要根据AVFormatContext获取,解码的时候我们要通过AVFormatContext读取,解码数据存储在AVFrame里面,编码数据存储在AVPacket里面。
曾大稳
2018-09-11
1.3K0
ffmpeg为AVPacket添加解码头信息
FFmpeg解码获得的AVPacket只包含视频压缩数据,并没有包含相关的解码信息 (比如:h264的sps pps头信息,AAC的adts头信息),没有这些编码头信息解 码器(MediaCodec)是识别不到不能解码的。在FFmpeg中,这些头信息是保存 在解码器上下文(AVCodecContext)的extradata中的,所以我们需要为每一种 格式的视频添加相应的解码头信息,这样解码器(MediaCodec)才能正确解析 每一个AVPacket里的视频数据。
曾大稳
2018-09-11
6.3K0
MediaCodec判断是否可以采用硬解码
具体的类型对应关系可以查看相关文档,这里在Android源码MediaCodec.createDecoderByType()里面有一些相关的对应支持类型。
曾大稳
2018-09-11
2.1K0
OpenGLES添加水印
理解了添加水印的原理,不管是视频水印还是图片水印都是很简单的了,只是使用的纹理不一样而已。如果是绘制文字水印的话,则需要将文字生成图片,然后将图片使用纹理绘制即可。
曾大稳
2018-09-11
2.1K0
OpenGLES正交投影
上面我们得到的( ?)是不在归一化坐标范围内的,为了能使OpenGL正确的渲染,我们就需要把(?)以及其他边统一转换到归一化坐标内,这个操作就是正交投影
曾大稳
2018-09-11
8270
树(Tree)以及二叉树的遍历
树(tree) 是一种抽象数据类型(ADT)或是实作这种抽象数据类型的数据结构,用来模拟具有树状结构性质的数据集合。它是由n(n>0)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。
曾大稳
2018-09-11
1.7K0
栈(Stack源码分析)
本文所述是站在数据结构的角度。 栈可以通过链表和数组实现,先看通过数组实现的方式。
曾大稳
2018-09-11
5310
HashMap源码分析
HashMap是一个很经典的键值对集合,从它的广泛应用程度和源码的学习角度上我们不得不去解析它。 我们先看一下HashMap的存储结构((图片均来源于网络)),这有助于我们阅读源码
曾大稳
2018-09-11
2180
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档