glReadPixels 是 OpenGL ES 的 API ,OpenGL ES 2.0 和 3.0 均支持。使用非常方便,下面一行代码即可搞定,但是效率很低。
OpenGL ES作为移动设备的主要图形API,是客户端调用GPU的主要入口,不管是做游戏还是音视频,都给我们提供了强大的支持。 而在音视频领域,相信不少同学都有从FBO读取像素数据的需求,熟悉OpenGL ES的童鞋应该首先想到了glReadPixels,而了解更为深入的童鞋相信都会使用更为高效的PBO。 在Android平台上,PBO是从FBO读取像素数据最高效的的方法吗。显然不是,否则这篇文章就没有意义了。下面我们来盘点Android下有哪些从FBO读取像素数据的方式,以及最高效的方式。
下面是第 19 期面试题精选,我们来介绍几种在 Android 开发中读取纹理数据的方法:
前些时间,我在知识星球上创建了一个音视频技术社群:关键帧的音视频开发圈,在这里群友们会一起做一些打卡任务。比如:周期性地整理音视频相关的面试题,汇集一份音视频面试题集锦,你可以看看《音视频面试题集锦 2022.04》。再比如:循序渐进地归纳总结音视频技术知识,绘制一幅音视频知识图谱。
前面文章人像抠图 + OpenGL ES 还能这样玩?没想到吧,我们介绍了利用人像抠图算法生成的 mask 图,然后结合 OpenGL 可以产生一些有趣的效果。
音视频开发中,视频编码是另一个重要的部分,基于 FFmpeg 软件解码前面系列文章已经介绍过了。
音视频开发中,视频编码是另一个重要的部分,基于 FFmpeg 软件解码前面系列文章已经介绍过了,接下来主要介绍软件编码这一块,包括视频编码、音频编码、为视频添加滤镜等。后期文章安排将介绍 Android MediaCodec 硬件编解码。
上文中我们通过 ImageReader 获取到 Camera2 预览的 YUV 数据,然后利用 OpenGLES 渲染实现相机预览,这一节将利用 GLSL (OpenGL 着色器语言)基于不同的着色器实现多种基础滤镜。
相机开发是 OpenGL ES 开发的重要应用,利用 OpenGL 可以很方便地实现相机美颜、滤镜、塑型以及一些动态特效,其性能显著优于对应功能的 CPU 实现。
版权声明:本文为博主原创文章,转载请注明源地址。 https://blog.csdn.net/10km/article/details/52119508
Android5.0之后开放了屏幕捕捉的API,因此开发者便可以直接通过代码进行截图与录屏,而无需操作系统底层了。屏幕捕捉的功能由MediaProjectionManager媒体投影管理器实现,该管理器的对象从系统服务MEDIA_PROJECTION_SERVICE中获得。注意MediaProjectionManager是Android5.0之后新增的工具,故代码中要补充判断系统版本,如果是4.*及以下版本,则不可处理屏幕捕捉操作。 具体的屏幕捕捉,还要调用媒体投影管理器对象的getMediaProjection方法,获取MediaProjection媒体投影对象。MediaProjection主要有两个方法,说明如下: createVirtualDisplay : 创建虚拟显示层。可分别指定显示层的名称、宽度、高度、密度、标志、渲染表面等等。其中标志通常取值DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR,渲染表面则按照截图和录屏两种方式分别取值。 stop : 停止投影。 屏幕捕捉的用途主要是截图和录屏,这有点像摄像头的功能,截图对应拍照,而录屏对应录像。对于拍照和录像,我们知道需要创建一个SurfaceView表面视图做为画面预览层,那么就屏幕捕捉而言,也需要创建一个虚拟显示对象做为投影预览层。这个投影预览层即前面createVirtualDisplay方法返回的VirtualDisplay对象,具体的表面对象则为createVirtualDisplay方法中的渲染表面参数,也就是一个Surface对象。如果当前为截图操作,那么调用ImageReader对象的getSurface方法获得渲染表面;如果当前为录屏操作,那么调用MediaCodec对象的createInputSurface方法获得渲染表面。
先来看看效果: 测试一: 原图: 效果图: 测试二: 原图: 效果图: 代码部分: 1 /** 2 * 3 */ 4 package com.b510; 5 6 imp
这篇文章是当前关于 Android 相机介绍中最新的一篇,我们之前介绍过相机阵列和相机会话和请求。
最近,有位读者大人在后台反馈:在参加一场面试的时候,面试官要求他用 shader 实现图像格式 RGB 转 YUV ,他听了之后一脸懵,然后悻悻地对面试官说,他只用 shader 做过 YUV 转 RGB,不知道 RGB 转 YUV 是个什么思路。
Android5.0以上提供了MediaProjection,方便截屏录屏等功能。
存在问题: opengl中如何渲染管线? 解决方案: 绝大数OpenGL实现都有相似的操作顺序,一系列相关的处理阶段称为OpenGL渲染管线。图1-2显示了这些顺序,虽然并没有严格规定OpenGL必须
要理解Android的图形架构,我们需要先理解window的概念。维基百科中给window的定义是:Window是图形用户界面(GUI)系统中显示器上一个单独的视图区域(可以想象你电脑桌面上一个个窗口)。
毕业至今,之前一直从事Android开发的工作,今年5月份开始接触音视频开发相关工作,于是打算写一个音视频相关专栏,让移动端的同学,能通过这个专栏快速掌握音视频相关知识,首先带来第一篇,主要讲讲移动端的音视频技术涉及哪些?
很早就看到过这种场景,用字符来展示图片甚至播放视频,可以说是黑客炫(zhuang)技(b)神器。当然有了一定的技术之后,就明白其实实现挺简单。
下面是《Android Studio开发实战 从零基础到App上线(第2版)》一书用到的工具和代码资源: 1、本书使用的Android Studio版本为3.2,最新的安装包可前往Android官网页面下载。 2、本书使用的Android NDK版本为r17,最新的安装包可前往Android官网页面下载。 3、本书提供所有示例源码的demo工程下载,源码(适配Android4.1到9.0和Android Studio 3.2到3.4)的下载页面为https://pan.baidu.com/s/14NE2DD-frXxuDXUAlTfRaw。最新的源码也可访问我的github获取,github地址是https://github.com/aqi00/android2,服务端的github地址是https://github.com/aqi00/net_server。(部分地区如新疆既访问不了百度网盘也访问不了github,此时可访问csdn的下载页面获取源码https://download.csdn.net/download/aqi00/11223223)。另外,AS3.4之后默认开了androidx,如需获取适配了androidx的本书源码,可访问这个github页面https://github.com/aqi00/androidx。 有的读者反映从github下载本书源码很慢,或者下载不完整,这是国外服务器连接不稳定造成的。建议访问这个代下载网站https://d.serctl.com/,按照网站左上角的“如何下载教程”,找到本书源码的github下载地址并提交,等待几秒后就能在该网站下载完整的源码了。 源码与各章的对应关系表见下图:
这篇文章主要分下面几点来展开讲解: 1)Android 最新Camera 整体框架; 2)Android Camera2 和HAL3 的基本了解; 3)Camera2 介绍; (本文所写的内容基于Android 9.0)
Android Camera整体框架主要包括三个进程:app进程、camera server进程、hal进程(provider进程)。进程之间的通信都是通过binder实现,其中app和camera server通信使用 AIDL(Android Interface Definition Language) ,camera server和hal(provider进程)通信使用HIDL(HAL interface definition language) 。
之前写过一篇 OpenGL 使用 shader 实现 RGBA 转 YUYV 的文章,有几位读者大人在后台建议写一篇 shader 实现 RGBA 转 NV21 的文章,因为在实践中 NV21 格式用的比较多,于是我今天把这篇文章放出来。
代码地址 :https://github.com/deepsadness/MediaProjectionDemo
在Google 推出Android 5.0的时候, Android Camera API 版本升级到了API2(android.hardware.camera2), 之前使用的API1(android.hardware.camera)就被标为 Deprecated 了。
ID是漫反射的强度,Ii是光的入射光的强度,和KD的漫反射,是对粗糙松散耦合对象材料。松散的意思是,在许多现实世界的材料,实际表面可能有点抛光,但半透明的,而层立即下执行散射。材料,如这可能有强烈的漫反射和镜面反射成分。此外,每个颜色带可能有自己的K值在现实生活中,所以会有一个红色,绿色和蓝色
http://blog.csdn.net/wangdingqiaoit/article/details/51457675
这个公众号会路线图式的遍历分享音视频技术:音视频基础 → 音视频工具 → 音视频工程示例 → 音视频工业实战。关注一下成本不高,错过干货损失不小 ↓↓↓
Bump mapping: 凹凸贴图;模拟粗糙外表面的技术。 FX-Water simple.shader中即用到了。模拟波浪效果。
https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/figures/gltfOverview-2.0.0b.png
卷积网络是视觉处理中可以有效生成多层特征的架构,是最前沿的技术。因此作者想构造一个“全卷积网络”,来处理任意尺寸的输入图片,并生成相应尺寸的输出。
@公众号:小驰笔记出品
SDL系列讲解(一) 简介 SDL系列讲解(二) 环境搭建 SDL系列讲解(三) 工具安装 SDL是什么,能干什么,为什么我们要学习它? SDL系列讲解(四) demo讲解 SDL系列讲解(五) 调试c代码 SDL系列讲解(六) SDL_Activity流程 SDL系列讲解(七) SDL_image教程 SDL系列讲解(八) SDL_ttf教程 SDL系列讲解(九) 异常退出分析 SDL系列讲解(十) 按键处理流程 SDL系列讲解(十一) SDL_QUIT流程 创建窗口时序图 时序图细节 看下
EGL 是 OpenGL ES 和本地窗口系统(Native Window System)之间的通信接口,它的主要作用:
这边文章主要记录下在Android系统上,如何通过Camera2 API去拿到RAW数据,也是当个备忘。
原文:https://engineering.linkedin.com/blog/2019/litr-a-lightweight-video-audio-transcoder-for-android
https://engineering.linkedin.com/blog/2019/litr-a-lightweight-video-audio-transcoder-for-android
而当我们使用这组接口完成绘制之后,要把结果显示在屏幕上,就要用到 EGL 来完成这个转换工作。
拍照是手机的基本功能,优化拍照性能,主要是优化点击拍照到生成照片的这一段时间,看看可以在什么地方减少耗时
Camera1中我们可以通过onPreviewFrame接口直接获取到默认为NV21格式的预览数据, 如下图注释所示,还可以通过调用setPreviewFormat方法要求Camera返回YV12格式的预览数据
多的不用说,先上代码,大家伙儿看看 1 /** 2 * 3 */ 4 package com.b510; 5 6 import java.awt.image.BufferedImage; 7 import java.io.File; 8 import java.io.FileInputStream; 9 import java.io.FileNotFoundException; 10 import java.io.IOException; 11 import java.util.D
这个公众号会路线图式的遍历分享音视频技术:音视频基础(完成) → 音视频工具(完成) → 音视频工程示例(完成) → 音视频工业实战(进行中)。关注一下成本不高,错过干货损失不小 ↓↓↓
Camera API2是Google从Android5.0开始推出的配合HAL3使用的一套新架构,相比于API1,对应用层开发者而言开放了更多的自主控制权,主要特性包括:
EGL 是 OpenGL ES 渲染 API 和本地窗口系统(native platform window system)之间的一个中间接口层,EGL作为OpenGL ES与显示设备的桥梁,让OpenGL ES绘制的内容能够在呈现当前设备上。它主要由系统制造商实现。
领取专属 10元无门槛券
手把手带您无忧上云