SurfaceView, GLSurfaceView, SurfaceTexture以及TextureView是Android当中名字比较绕,关系又比较密切的几个类.本文基于Android 5.0(Lollipop)的代码理一下它们的基本原理,联系与区别.   SurfaceView 从Android 1.0(API level 1)时就有 .它继承自类View,因此它本质上是一个View.但与普通View不同的是,它有自己的Surface.我们知道,一般的Activity包含的多个View会组…
引自:http://www.ithao123.cn/content-8733143.html 最近发现视频直播类应用层出不穷,比如233手游直播,蓝鲸直播,微录客等等什么的,连android界大神老罗也在开发手游录制类的应用,这里面的技术含量也是挺高的,需要了解android 系统的UI渲染机制以及很多系统底层的知识,而我最近也在想好好研究研究android 的UI渲染机制并以此作为深入了解android的入口 好了,在讲代码实现之前,我先讲讲TextureView, SurfaceTextur…
引自:http://www.jianshu.com/p/291ff6ddc164 做好的Demo截图 opengl-video 前言 讲了这么多,可能有人要问了,播放视频用个android封装的VideoView或者用MediaPlayer+SurfaceView来进行播放视频不就得了吗,干嘛还要整这么麻烦.OK,为了回答这个问题,我们先看看OpenGL ES干什么的,它是OpenGL三维图形API的子集,图形硬件的一种软件接口,针对手机.PDA和游戏主机等嵌入式设备而设计.我想如果是做游戏类开…
引自:http://www.jianshu.com/p/b2d949ab1a1a 在使用OpenGL ES 绘制前,我先概括下接下来要做的工作:我先借用一个博主kiffa举的的一个栗子,我觉得说的恰到好处,遂稍稍概括下来给大家分享分享:我们想像一下画家绘画的过程,在作画之前他是不是应该先准备准备呢,首先他得准备作画的画布(对应TexureView),一些笔,颜料以及辅助工具比如调色板等等(OpenGL ES API),然后他就可以在画出他的作品了(SurfaceTexture).ok,假如他现在…
概述 感觉毕业后时间过得真快啊,从 19 年 7 月本科毕业入职后,到现在快两年了,前段时间金三银四期间想着找一个新的工作,前前后后花了一个多月的时间复习以及面试,面试好几家大厂,最后选择了腾讯.也祝各位想找工作的同学都能去自己心仪的公司! 我不建议频繁的跳槽,除非被逼无奈,频发跳槽,不光会成为面试官害怕的一个方面,对自己的沉淀也是没有帮助的. 同时我不建议裸辞,这样会存在太多的不定性因素,如果面试时间拖得太久,这段事件你没有经济收入,但是你还在支出(房租,日常生活开销).这样会代来无形的压力,…
SurfaceView, GLSurfaceView, SurfaceTexture以及TextureView是Android当中名字比较绕,关系又比较密切的几个类.本文基于Android 5.0(Lollipop)的代码理一下它们的基本原理,联系与区别. SurfaceView从Android 1.0(API level 1)时就有 .它继承自类View,因此它本质上是一个View.但与普通View不同的是,它有自己的Surface.我们知道,一般的Activity包含的多个View会组成Vi…
区别与联系 View: 显示视图,内置画布,提供了图形绘制函数.触屏事件.按键事件函数等,必须在UI主线程内更新画面,速度较慢: SurfaceView: 基于view视图进行拓展的视图类,更适合2D游戏的开发,是view的子类,使用了双缓冲机制,即:允许在子线程中更新画面,所以刷新界面速度比view快. GLSurfaceView: 基于SurfaceView视图再次进行拓展的视图类,在SurfaceView基础上封装了EGL环境管理以及render线程,专用于3D游戏开发的视图.是Surfa…
Google自Android4.0出了TextureView,为什么推出呢?就是为了弥补Surfaceview的不足,另外一方面也是为了平衡GlSurfaceView,当然这是本人揣度的.关于TextureView.Surfaceview.SurfaceTexture.GLSurfaceView的关系,待咱家推出GLSurfaceview预览Camera后再专门分析.本文主要介绍使用TextureView预览Camera. 其实关于如何用TextureView预览Camera,官网已经给出了de…
1.区别 The followings are two limitations of SurfaceView: You can not be animated, transformed and scaled; You can not overlay two SurfaceView. TextureView looks like a general View. You can animate, transform and scale it, just like a TextView. Textur…
Google自Android4.0出了TextureView,为什么推出呢?就是为了弥补Surfaceview的不足,另外一方面也是为了平衡GlSurfaceView,当然这是本人揣度的.关于TextureView.Surfaceview.SurfaceTexture.GLSurfaceView的关系,待咱家推出GLSurfaceview预览Camera后再专门分析.本文主要介绍使用TextureView预览Camera. 其实关于如何用TextureView预览Camera,官网已经给出了de…
简介 Android普通窗口的视图绘制机制是一层一层的,任何一个子元素或者是局部的刷新都会导致整个视图结构全部重绘一次,因此效率相对较低.视频或者opengl内容往往是显示在SurfaceView中的,SurfaceView的工作方式是:创建一个置于应用窗口之后的新窗口.因为SurfaceView窗口刷新的时候不需要重绘应用程序的窗口,所以这种方式的效率非常高. 但是SurfaceView也有一些非常不便的限制,因为SurfaceView的内容不在应用窗口上,所以不能使用平移.缩放.旋转等变换操…
原文:Android Camera2 拍照(二)--使用TextureView 上一篇博文简单介绍了使用Camera2 API拍摄照片,并使用SurfaceView作为预览界面.实际上,相对于SurfaceView, TextureView更适合用于视频和拍摄照片.SurfaceView也有它的使用场合,这将在另外一篇中阐述.本文将使用TextureView作为预览界面,再次向大家展示Camera2 API的简单应用. 1,定义TextureView作为预览界面 在布局文件中加入TextureV…
SurfaceView介绍 SurfaceView是视图(View)的继承类,这个视图里面内嵌了一个专门用于绘制的Surface.你可以控制这个Surface的格式和尺寸,而SurfaceView控制这个Surface的绘制位置,Surface是纵深排序的,这表明它总在自己所在的窗口的后面,SurfaceView提供了一个可见区域,只有这个可见区域内的surface部分内容才能可见,可见区域外的是看不到的.当然surface的排版显示会受到视图层级关系的影响,它的兄弟视图结点会在顶端显示,这意味…
一.前言 在视频直播中一般都是两种视频数据源,一个是摄像头数据,一个是录制桌面数据,而一般来说美女妹子直播都是来自于摄像头数据,游戏直播都是录制桌面数据的,那么今天就来看看第一个数据源数据采集分析,Android中使用摄像头的场景很多,在没有直播这个行业出现之前,之前用到摄像头的最多就两个场景,一个是二维码扫描,一个是美颜拍照类的应用.那么这里就来看看Android中的摄像头的用法,以及如何进行数据采集进行数据的二次加工. 二.知识点概况 本篇文章主要通过如下几个方向去介绍Android中的摄像…
常用的TextView.Button.ImageView和几个常用布局就不介绍了,我们介绍一些特别好用但是常常忘记的组件. 标题栏组件 <androidx.appcompat.widget.Toolbar android:id="@+id/toolbar" android:layout_width="0dp" android:layout_height="wrap_content" android:background="@col…
1, 初步接触Open GL: http://www.cnblogs.com/TerryBlog/archive/2010/07/09/1774475.html 使用GLSurfaceView和Render实现一个简单的三角形和正方形.其中,GLSurfaceView用于显示视图,Render用于3D渲染.这个博客的代码,运行时会报: java.lang.IllegalArgumentException: Must use a native order direct Buffer 是因为顶点Bu…
前言 MediaRecorder是Android SDK提供用于录制音视频,关于音频的录制在我另一篇博客里已经介绍.传送门: https://www.cnblogs.com/guanxinjing/p/10976026.html,而这篇博客将介绍MediaRecorder视频录制的入门和一些MediaRecorder视频录制的深坑.为什么只介绍简单的录制视频的入门操作,因为MediaRecorder在实际开发的时候肯定还需要配合Camera来使用.而Camera这个大坑又有Camera1和Cam…
请尊重分享成果,转载请注明出处,本文来自Coder包子哥,原文链接:http://blog.csdn.net/zxccxzzxz/article/details/55230272 Android实现录屏直播(一)ScreenRecorder的简单分析 Android实现录屏直播(二)需求才是硬道理之产品功能调研 看到有网友在后台私信和询问录屏这部分推流相关的问题,感觉这篇博客早该写完了.事实上除了繁忙的工作加上春节假期一下子拖了近一个月之久.近期更新了Demo,加入了视频帧推流,需要的朋友可以看…
有过一定相机开发经验的朋友可能会疑惑,预览还有什么好分析的,不是直接 camera.setPreviewDisplay 或者 camera.setPreviewTexture 就能在 SurfaceView/TextureView 上预览了吗?实际上预览还有更高级的玩法,尤其是需要加上图像处理功能(美颜.特效)时.WebRTC 使用了 OpenGL 进行渲染(预览),涉及下面三个问题: 数据怎么来? 渲染到哪儿? 怎么渲染? 数据怎么来? WebRTC 的数据采集由 VideoCapturer…
WebRTC 的代码量不小,一次性看明白不太现实,在本系列中,我将试图搞清楚三个问题: 客户端之间如何建立连接? 客户端之间如何实现数据传输? 音视频数据的采集.预览.编码.传输.解码.渲染完整流程. 本文是第一篇,我将从最熟悉的采集入手,分析一下 WebRTC-Android 相机采集的实现. WebRTC-Android 的相机采集主要涉及到以下几个类:Enumerator,Capturer,Session,SurfaceTextureHelper. 其中 Enumerator 创建 Cap…
Java层API : AudioRecord 采集音频(PCM格式)AudioTrack 播放音频 Camera 用来采集摄像头的数据Surface / SurfaceView / GLSurfaceVIew / SurfaceTexture / TextureVIew 用来渲染video MediaCodec 这个类用来进行音/视频编码MediaMuxer 这个类用来将编码好的音视频数据写入文件 NDK API: OpenSL ESOpenGL ESOpenH264…
弹幕视频网 Bilibili(B 站)近日在 GitHub 网站上建立了开源工作组(BOSTF),用以分享与维护自己的开源项目,其中包括 DanmakuFlameMaster(燃烧吧!烈焰弹幕使)与 ijkplayer.前者是免费提供 Android 平台下应用弹幕集成的解决方案,而后者则提供 Android 和 iOS 双平台视频播放器的解决方案. DanmakuFlameMaster 项目地址:https://github.com/Bilibili/DanmakuFlameMaster Da…
属性动画主要的几个类介绍: 1.ValueAnimator:这个类提供了一个简单的计时引擎运行动画动画计算值和设置目标对象.注意:使用该类时一般都是用:ObjectAnimator,而基于ObjectAnimator执行的属性动画,都是根据java的反射机制来设置的,因此设置动画的目标对象的属性必须有getter 和setter方法. setDuration:设置动画的时间 setInterpolator:设置一个插入器,例如:减速器(DecelerateInterpolator),加速器(Ac…
https://blog.csdn.net/keen_zuxwang/article/details/78363464 demo: http://download.csdn.net/download/keen_zuxwang/10041423 1.创建顶点位置.纹理数组 2.创建.编译.加载shader程序,获得shader中各变量的句柄(如获取纹理采样sampler2D变量的句柄) 3.程序通过program给shader传递各参量,如:顶点位置.纹理坐标,激活.绑定纹理,传递模型/视图/投影…
1. 内存泄漏 在android程序开发中,当一个对象已经不需要再使用了,本该被回收时,而另外一个正在使用的对象持有它的引用从而导致它不能被回收,这就导致本该被回收的对象不能被回收而停留在堆内存中,内存泄漏就产生了.比如资源内关闭.Handler.线程都可能出现.比如Handler或者线程在Activity退出时候还在不断处理消息,而线程或者Handler又持有Activity的引用,所以导致Activity无法被回收 2. Activity四种启动模式 Activity启动方式有四种,分别是:…
1. EGL概述 EGL 是 OpenGL ES 渲染 API 和本地窗口系统(native platform window system)之间的一个中间接口层,它主要由系统制造商实现. EGL提供如下机制: 与设备的原生窗口系统通信 查询绘图表面的可用类型和配置 创建绘图表面 在OpenGL ES 和其他图形渲染API之间同步渲染 管理纹理贴图等渲染资源 为了让OpenGL ES能够绘制在当前设备上,我们需要EGL作为OpenGL ES与设备的桥梁. 2. 使用EGL绘图的基本步骤 Displ…
class VideoPlayer : FrameLayout, TextureView.SurfaceTextureListener{ private var url:String? = null private var headers:Map<String,String>? = null private var mediaPlayer: IMediaPlayer? = null //播放器 private var container: FrameLayout? = null //播放器根目…
一.SurfaceView SurfaceView继承自View,并提供了一个独立的绘图层,你可以完全控制这个绘图层,比如说设定它的大小,所以SurfaceView可以嵌入到View结构树中,需要注意的是,由于SurfaceView直接将绘图表层绘制到屏幕上,所以和普通的View不同的地方就在与它不能执行Transition,Rotation,Scale等转换,也不能进行Alpha透明度运算. SurfaceView的Surface排在Window的Surface(也就是View树所在的绘图层)…
这几个概念比较绕, 又比较相近. 初看比较糊涂, 把握关键点就好. 关键字 View SurfaceViewGLSurfaceViewTextureView这三个后缀都是View, 所以这三个东西都是用来显示的, 和普通的View差不多, 类似TextView等. 通过历史来说明:SurfaceView 出现最早, 解决类似视频播放的问题(可以用单独一个线程来渲染UI).后来发现用起来不方便, 渲染线程需要单独编写, 一大堆都可以独立成模板.所以后来就出现了 GLSurfaceView, 概括一…
SurfaceView和TextureView均继承于android.view.View,与其它View不同的是,两者都能在独立的线程中绘制和渲染,在专用的GPU线程中大大提高渲染的性能.SurfaceView专门提供了嵌入视图层级的绘制界面,开发者可以控制该界面像Size等的形式,能保证界面在屏幕上的正确位置.但也有局限: 由 大专栏  SurfaceView和TextureView的区别于是独立的一层View,更像是独立的一个Window,不能加上动画.平移.缩放:两个SurfaceView…